State: Repair with keycache - медленное создание индексов и восстановление таблиц
2 февраля 2010, 7:05
Автор: rgbeast
Проблема: Медленно создается индекс/восстанавливается таблица и при этом SHOW PROCESSLIST показывает запрос в состоянии "Repair with keycache".
Решение: Данный вид сортировки применяется в случае, если свободного места в директории для временных файлов недостаточно для хранения индекса. Задайте системную переменную tmpdir (в my.cnf) так, чтобы она указывала на область диска, содержащую достаточно свободного места. В поле статус при сортировке будет отображаться "Repair by sorting", что быстрее в десятки и даже сотни раз.
Примечание: Если увеличить доступное в tmpdir дисковое пространтство невозможно, используйте PARTITIONING. В этом случае индексы будут создаваться последовательно для каждого раздела таблицы. PARTITIONING может также увеличить скорость работы с большими таблицами (при условии, что работает pruning).
Пример: Таблица из 3 миллиардов записей длиной по 11 байт. Индекс длиной 4 байта создается методом "Repair by sorting" 2 часа, а методом "Repair with keycache" более недели (при key_buffer_size=256M).
Note: Для того, чтобы "Repair by sorting" работал, необоходимо также, чтобы переменная myisam_max_sort_file_size была установлена в достаточно большое значение.
Решение: Данный вид сортировки применяется в случае, если свободного места в директории для временных файлов недостаточно для хранения индекса. Задайте системную переменную tmpdir (в my.cnf) так, чтобы она указывала на область диска, содержащую достаточно свободного места. В поле статус при сортировке будет отображаться "Repair by sorting", что быстрее в десятки и даже сотни раз.
Примечание: Если увеличить доступное в tmpdir дисковое пространтство невозможно, используйте PARTITIONING. В этом случае индексы будут создаваться последовательно для каждого раздела таблицы. PARTITIONING может также увеличить скорость работы с большими таблицами (при условии, что работает pruning).
Пример: Таблица из 3 миллиардов записей длиной по 11 байт. Индекс длиной 4 байта создается методом "Repair by sorting" 2 часа, а методом "Repair with keycache" более недели (при key_buffer_size=256M).
Note: Для того, чтобы "Repair by sorting" работал, необоходимо также, чтобы переменная myisam_max_sort_file_size была установлена в достаточно большое значение.