Содержание
mysql — Как длина ячейке в базе данных влияет на производительность?
Вопрос задан
Изменён
5 лет 3 месяца назад
Просмотрен
568 раз
Как влияет размер ячейки, например типа VARCHAR
на производительность. Если в поле VARCHAR(255) записать слово «Test
«, то эти данные будут занимать 1+4 байта, но не 255, что есть хорошо( в отличии от CHAR). Что если на некоторые поля ставить максимальное значение varchar(65535)? Это как-то повлияет на скорость работы большой базы? Вопрос возник из-за того, что клиент вставляя текст через визуальные редакторы превысил лимит и соответственно текст обрезался. Обычно он вставлял посты до 100 символов, но в этот раз все было иначе…
- mysql
- sql
3
Как уже сказано, конкретные детали зависят от движка, но вот некоторые общие вехи и некоторые применительно к InnoDB:
- Если максимальная длина значения может превышать 255 байт (
VARCHAR(256+)
для latin1,VARCHAR(86+)
для utf8) — в поле размера будет 2 байта вместо одного. 1 - Для InnoDB, размер значения больше ≥768 байт — часть значения будет хранится отдельно (off-page), вероятно падение производительности. 2
При приближении к лимитам в дело вступают другие силы:
- Для InnoDB, если размер всей записи больше страницы (16k), то самое длинное(ые) поле будет хранится отдельно. 2
- Если кодировка не однобайтовая, а максимально возможный размер записи больше, чем 64k, то самая длинное(ые) поле(я) будут преобразовано в
TEXT
при создании таблицы. - Максимальный размер всей записи, включая все служебные поля не должен превышать 64k. 3
т.о. VARCHAR(65535)
— в принципе не возможно создать, для больших кодировок он по факту будет текстом, а для latin1 это просто не удастся, с другой стороны, при вменяемых размерах остальных полей таблицы, скажем VARCHAR(16384)
никак не должен сказаться на производительности, покуда в него не начать засовывать значения длиннее 767-ми байт. Ограничение на VARCHAR
на 1-2 порядка меньше максимального — это ИМХО больше защита от ошибок, нежели значение влияющее на производительность/реализацию.
2
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
Размер базы данных MySQL
Сегодня базы данных используются практически везде, особенно они нужны крупным компаниям и командам разработчиков приложений. Если вы рещите сделать сайт, вы не сможете выстроить его эффективную и правильную работу без базы данных. Она понадобится для хранения динамически изменяющейся информации. Обычно это одна из самых популярных баз данных — MariaDB или MySQL.
Но сколько занимает ваша база данных? Для больших проектов эти показатели могут достигать очень больших значений. В статье мы поговорим о том, как узнать размер базы данных MySQL через консоль и другими способами.
Размер базы данных MySQL
База данных, которая установлена в Linux, проверяется простым способом. Инструкция, которую мы дальше приведем, подходит для большинства других операционных систем. Самый простой способ прикинуть сколько места занимают все базы данных — это посмотреть размер папки с файлами базы данных в системе — /var/lib/mysql:
$ du -h /var/lib/mysql
Команда дает возможность узнать размер базы Mysql в мегабайтах. Но будет гораздо более правильно смотреть информацию о базе данных с помощью ее встроенных инструментов. Для в MySQL есть специальная таблица — Information_schema. Для начала, прежде чем использовать ее, необходимо выполнить подключение к базе данных:
$ mysql -u root -p
SELECT table_schema AS «Имя базы данных»,
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS «Размер в Мб»
FROM information_schema.TABLES
GROUP BY table_schema;
Путем этого запроса будет выведена информация о размере базы MySQL для каждой, пользователь сможет ориентироваться и поймет, какая база сколько занимает места. Если у вас очень большой проект и большая база данных, то вы можете выводить информацию в гигабайтах:
SELECT table_schema AS «Имя базы данных»,
ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS «Размер в Гб»
FROM information_schema.TABLES
GROUP BY table_schema;
Но это еще не все. Возможно, в базе данных есть ненужная информация, которая только замедляет работу системы. Мы можем посмотреть размер таблиц для каждой из баз данных. Запрос для этого будет выглядеть следующим образом:
SELECT table_name AS «Имя таблицы»,
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS «Size in (MB)»
FROM information_schema.TABLES
WHERE table_schema = «wpfc_options»
ORDER BY (data_length + index_length) DESC;
Информация поможет понять какая таблица сколько занимает и это уже может навести на интересные мысли.
Размер базы данных в PHPAdmin
Многие пользователи не любят или не хотят работать в терминале. Это не большая проблема, так как можно использовать Phpmyadmin для просмотра размера базы данных.
Размер каждой из таблиц базы данных вы можете посмотреть на вкладке «Структура», когда выберите базу данных для работы.
Что касается размера самой базы данных, то придется выполнить тот же запрос в интерфейсе программы на вкладке «SQL»:
MySQL, какой максимальный размер базы данных?
спросил
Изменено
5 лет, 3 месяца назад
Просмотрено
89 тысяч раз
Я просмотрел весь веб-сайт MySQL и не нашел точных ответов.
- Размер базы данных определяется операционной системой или существует ограничение в 4 ГБ?
- Где я могу найти статистику производительности по отношению к другим базам данных (sqlServer, oracle и т. д.)
1
Согласно руководству MySQL:
Е.10.3. Ограничения на размер таблицы
Эффективный максимальный размер таблицы для баз данных MySQL обычно определяется ограничениями операционной системы на размер файлов, а не внутренними ограничениями MySQL. В следующей таблице перечислены некоторые примеры ограничений размера файла операционной системы. Это лишь приблизительное руководство, и оно не претендует на то, чтобы быть окончательным. Для получения самой последней информации обязательно ознакомьтесь с документацией по вашей операционной системе.
Ограничение размера файла операционной системы Win32 с FAT/FAT32 2 ГБ/4 ГБ Win32 с NTFS 2 ТБ (возможно больше) Linux 2. 2-Intel 32-разрядная 2 ГБ (LFS: 4 ГБ) Linux 2.4+ (с файловой системой ext3) 4 ТБ Солярис 9/10 16ТБ MacOS X с HFS+ 2 ТБ
Пользователи Windows, обратите внимание, что файловые системы FAT и VFAT (FAT32) не считаются подходящими для использования в производственной среде с MySQL. Вместо этого используйте NTFS.
В Linux 2.2 вы можете получить таблицы MyISAM размером более 2 ГБ, используя исправление поддержки больших файлов (LFS) для файловой системы ext2. Большинство современных дистрибутивов Linux основаны на ядре 2.4 или выше и включают все необходимые исправления LFS. В Linux 2.4 также существуют исправления для ReiserFS, обеспечивающие поддержку больших файлов (до 2 ТБ). С JFS и XFS в Linux возможны файлы в петабайтах и больше.
Что касается другой части вашего вопроса, несколько мыслей:
- Это широкий, сложный, многофакторный вопрос. Подумайте о том, чтобы сузить сферу вопроса до MySQL и еще одной СУБД (например, SQL Server) и, возможно, даже до одной конкретной функции.
- Google — твой друг.
- Поставщики склонны публиковать собственные необъективные сравнения. Возьмите номера поставщиков с недоверием.
4
1- Что касается размера базы данных, ограничение зависит от размера файла операционной системы. См. эту статью
2- Эффективный максимальный размер таблицы для баз данных MySQL обычно определяется ограничениями операционной системы на размеры файлов, а не внутренними ограничениями MySQL. (Источник)
3- Вы можете поискать в Google MySQL, SQL Server и Oracle, также проверьте эту ссылку
.
1
по умолчанию mysql составляет 256 ТБ для файла myd с размером указателя 6 байт. Я знаю, что это смешной ответ, но это то, что вы хотели знать. в реальной жизни все зависит от запросов, индексов, количества столбцов, количества строк и т. д. Я думаю.
2
С сегодняшним оборудованием и операционной системой, а также с предпочитаемым движком MySQL InnoDB ограничение размера таблицы составляет 64 ТБ. С PARTITIONing
это может быть увеличено до более чем ста петабайт.
База данных представляет собой набор таблиц . Итак, чтобы буквально ответить на вопрос заголовка, нам нужно выйти за рамки максимального размера таблицы. Поскольку в базе данных могут быть тысячи таблиц, мы сейчас находимся в эксабайтной стратосфере.
См. также Жесткие ограничения в MySQL .
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но никогда не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
веб-сервисов amazon — как ограничить размер хранилища отдельной базы данных MySQL
спросил
Изменено
4 года, 9 месяцев назад
Просмотрено
6к раз
Часть коллектива AWS
Я хочу установить ограничения на размер хранилища для отдельной базы данных MySQL (например, 2 ГБ на базу данных). Удалось ли это сделать? Я не могу найти конкретную конфигурацию MySQL, которая позволяет это сделать.
В частности, я хочу иметь возможность делать это в экземпляре AWS RDS, поэтому любые знания, связанные с этим, также будут полезны.
Будем признательны за любую помощь или руководство, если это можно сделать.
- mysql
- амазон-веб-сервисы
- реляционная база данных
- хранилище
1
Этот вопрос был задан почти 10 лет назад: размер схемы MySQL
Я не буду закрывать ваш вопрос как дубликат, потому что он был достаточно длинным и заслуживает нового ответа.
Ничего не изменилось. В MySQL нет возможности определить ограничение размера отдельной базы данных.
Вы можете установить максимальный размер системного табличного пространства, и все ваши таблицы и схемы будут его заполнять, если вы установите innodb_file_per_table=0
. Вы можете настроить максимальный размер в файле my.cnf следующим образом:
innodb_data_file_path=ibdata1:12M:autoextend:max:1G
Это просто пример, это означает, что файл ibdata1 изначально создается размером 12 МБ, он увеличивается по мере необходимости, но не больше 1 ГБ. См. https://dev.mysql.com/doc/refman/8.0/en/innodb-init-startup-configuration.html для получения дополнительной информации.
Даже при потенциальном ограничении системного табличного пространства это не дает вам контроля над тем, сколько места может использовать каждая схема. Все они используют одно и то же табличное пространство.
Если вы используете innodb_file_per_table=1
, каждая таблица сохраняется в собственном файле табличного пространства. Нет возможности определить размер табличного пространства для конкретной таблицы.
Начиная с MySQL 5.7, вы также можете создать общее табличное пространство и назначить ему несколько таблиц. Например, вы можете поместить все таблицы для определенной схемы в одно общее табличное пространство.