Spec-Zone .ru
спецификации, руководства, описания, API
|
Как только Ваши данные достигают устойчивого размера, или растущая таблица
увеличилась на десятки или некоторые сотни мегабайтов, рассмотрите использование OPTIMIZE
TABLE
оператор, чтобы реорганизовать таблицу и компактный любое потраченное впустую
пространство. Реорганизованные таблицы требуют, чтобы меньше дискового ввода-вывода выполнило полные
сканирования таблицы. Это - прямой метод, который может улучшить производительность, когда другие
методы, такие как улучшение индексируют использование, или настраивающийся код программы не практичны.
OPTIMIZE TABLE
копирует часть данных таблицы и восстанавливает
индексирование. Преимущества, прибывшие от улучшенной упаковки данных в пределах, индексируют, и
уменьшенная фрагментация в пределах табличных областей и на диске. Преимущества изменяются в
зависимости от данных по каждой таблице. Можно найти, что есть существенные усиления для некоторых а
не для других, или что усиления уменьшаются в течение долгого времени, пока Вы затем не
оптимизируете таблицу. Эта работа может быть медленной, если таблица является большой или если
индексирование быть восстановленным не вписывается в пул буферов. Первый показ после добавления
большого количества данных к таблице часто намного медленнее чем более поздние выполнения.
В InnoDB
, наличие длинного PRIMARY
KEY
(или единственный столбец с длинным значением, или несколько столбцов, которые формируют
длинное составное значение), тратит впустую большое дисковое пространство. Значение первичного ключа для
строки дублируется во всем вторичном устройстве, индексируют записи, которые указывают на ту же самую
строку. (См. Раздел 14.2.3.13,"InnoDB
Таблица и Индексирует Структуры".) Создают AUTO_INCREMENT
столбец как первичный ключ, если Ваш первичный ключ долог,
или индексирует префикс длинного VARCHAR
столбец вместо всего столбца.
Используйте VARCHAR
тип данных вместо CHAR
сохранить строки переменной длины или для столбцов со многими NULL
значения. A CHAR(
столбец всегда
берет N
)N
символы, чтобы хранить данные, даже если строка короче
или ее значение, NULL
. Меньшие таблицы соответствуют лучше в пуле буферов и
уменьшают дисковый ввод-вывод.
При использовании COMPACT
формат строки (значение по умолчанию InnoDB
формат в MySQL 5.7) и наборы символов переменной длины, такой как
utf8
или sjis
, CHAR(
столбцы
занимают переменное количество пространства, но все еще по крайней мере, N
)N
байты.
Для таблиц, которые являются большими, или содержат много повторного текста или
числовых данных, рассмотреть использование COMPRESSED
формат строки. Меньше
дискового ввода-вывода обязано приносить данные в пул буферов, или выполнять полные сканирования
таблицы. Прежде, чем принять постоянное решение, измерьте количество сжатия, при использовании которого
можно достигнуть COMPRESSED
против COMPACT
формат строки.