Tuesday, June 16, 2009

myisamchk

myisamchk -r -f -O key_buffer=2048M -O sort_buffer=256M -O read_buffer=16M -O write_buffer=16M /ssd/mysql/*/*MYI


-r или --recover При указании этой опции можно исправить практически все, кроме уникальных ключей, в которых есть повторения (ошибка, вероятность которой мизерна для таблиц ISAM/MyISAM). Если необходимо восстановить таблицу, то начинать надо с этой опции. Только если myisamchk сообщит, что таблица не может быть восстановлена с помощью -r, тогда следует пытаться применять -o (отметим, что в тех маловероятных случаях, когда -r не срабатывает, файл данных остается неизменным), В случае большого объема памяти следует увеличить размер sort_buffer_size!

-f или --force Писать поверх старых временных файлов (`table_name.TMD') вместо аварийного прекращения.


myisamchk -a key_buffer=2048M -O sort_buffer=256M -O read_buffer=16M -O write_buffer=16M /ssd/mysql/*/*MYI

Кроме ремонта и проверки таблиц, myisamchk может выполнять другие операции:
-a или --analyze
Анализировать распределение ключей. Улучшает эффективность операции связывания за счет включения оптимизатора связей. Он обеспечивает лучший порядок связывания таблиц и определяет, какие ключи при этом следует использовать: myisamchk --describe --verbose table_name или посредством SHOW KEYS в MySQL.

-S или --sort-index
Сортировать блоки индексного дерева в порядке от больших к меньшим (high-low). Этим оптимизируются операции поиска и повышается скорость сканирования по ключу.
-R или --sort-records=#
Сортирует записи в соответствии с индексом. Это значительно повышает локализацию данных и может ускорить операции SELECT и ORDER BY, которые выполняются по индексу и выбирают данные по какому-либо интервалу. (Возможно, что первая сортировка будет выполняться очень медленно!) Чтобы узнать номера индексов таблицы, нужно использовать команду SHOW INDEX, показывающую индексы таблицы в том же порядке, в каком их видит myisamchk. Индексы нумеруются начиная с 1.

No comments: