Пожалуйста, обратитесь эти сообщения:
Подсказки, чтобы сделать ваши данные как можно меньше:
Создайте свои таблицы, чтобы минимизировать их пространство на диске. Это может привести к огромным улучшениям за счет уменьшения объема данных, записываемых на диск и считываемых с него. Меньшие таблицы обычно требуют меньше основной памяти, в то время как их содержимое активно обрабатывается во время выполнения запроса. Любое уменьшение пространства для табличных данных также приводит к меньшим индексам, которые могут быть обработаны быстрее.
MySQL поддерживает множество различных механизмов хранения (типы таблиц) и форматы строк. Для каждой таблицы вы можете решить, какой метод хранения и индексирования использовать. Выбор правильного формата таблицы для вашего приложения может значительно повысить производительность.
Вы можете повысить производительность таблицы и минимизировать объем хранилища, используя перечисленные ниже методы: - Используйте наиболее эффективные (наименьшие) типы данных. MySQL имеет много специализированных типов, которые экономят дисковое пространство и память. Например, используйте меньшие целочисленные типы, если это возможно, чтобы получить меньшие таблицы. MEDIUMINT часто является лучшим выбором, чем INT, поскольку столбец MEDIUMINT занимает на 25% меньше места.
Объявите столбцы как NOT NULL, если это возможно. Это делает все быстрее, и вы экономите один бит на столбец. Если вам действительно нужен NULL в вашем приложении, вы обязательно должны его использовать. Просто не используйте его во всех столбцах по умолчанию.
Для таблиц MyISAM, если у вас нет столбцов переменной длины (столбцы VARCHAR, TEXT или BLOB), используется формат строки фиксированного размера.
Таблицы InnoDB используют компактный формат хранения. В версиях MySQL более ранних, чем 5.0.3, строки InnoDB содержат некоторую избыточную информацию, такую как количество столбцов и длина каждого столбца, даже для столбцов фиксированного размера. По умолчанию таблицы создаются в компактном формате (ROW_FORMAT = COMPACT). Наличие компактного формата строк уменьшает пространство хранения строк примерно на 20% за счет увеличения использования ЦП для некоторых операций. Если ваша рабочая нагрузка является типичной, которая ограничена частотой обращений к кэшу и скоростью диска, она, вероятно, будет быстрее. Если это редкий случай, который ограничен скоростью процессора, он может быть медленнее.
Компактный формат InnoDB также меняет способ хранения столбцов CHAR, содержащих данные UTF-8. Если ROW_FORMAT = REDUNDANT, символ UTF-8 CHAR (N) занимает 3 × N байтов, учитывая, что максимальная длина кодированного символа UTF-8 составляет три байта. Многие языки могут быть написаны, главным образом, с использованием однобайтовых символов UTF-8, поэтому фиксированная длина хранилища часто занимает пустое место. С форматом ROW_FORMAT = COMPACT InnoDB выделяет переменный объем памяти в диапазоне от N до 3 × N байтов для этих столбцов, удаляя конечные пробелы при необходимости. Минимальная длина хранилища сохраняется в виде N байтов для облегчения обновления на месте в типичных случаях.
Первичный индекс таблицы должен быть как можно короче. Это делает идентификацию каждого ряда легкой и эффективной
Создавайте только те индексы, которые вам действительно нужны. Индексы хороши для поиска, но плохи, когда вам нужно быстро хранить данные. Если вы обращаетесь к таблице в основном путем поиска по комбинации столбцов, создайте для них индекс. Первая часть индекса должна быть наиболее часто используемой колонкой. Если вы всегда используете много столбцов при выборе из таблицы, первый столбец в индексе должен быть с наибольшим количеством дубликатов, чтобы получить лучшее сжатие индекса.
В некоторых случаях может быть полезно разделить таблицу на две части, которые сканируются очень часто. Это особенно верно, если это таблица динамического формата, и можно использовать меньшую таблицу статического формата, которую можно использовать для поиска соответствующих строк при сканировании таблицы.