Spec-Zone .ru
спецификации, руководства, описания, API
|
REPAIR
TABLE
для MyISAM
таблицы подобны использованию myisamchk для операций восстановления, и часть той же самой
оптимизации производительности применяется:
у myisamchk есть переменные то выделение управляющей памяти. Можно быть в состоянии к улучшать производительность, устанавливая эти переменные, как описано в Разделе 4.6.3.6, "myisamchk Использование Памяти" .
Для REPAIR
TABLE
, тот же самый принцип применяется, но потому что восстановление делается сервером, Вы
устанавливаете системные переменные сервера вместо myisamchk переменных. Кроме того, в дополнение к
установке переменных выделения памяти, увеличиваясь myisam_max_sort_file_size
системная переменная увеличивает
вероятность, что восстановление будет использовать быстрее filesort метод и избегать более медленного
восстановления ключевым методом кэша. Установите переменную в максимальный размер файла для Вашей
системы после проверки, чтобы убедиться, что есть достаточное свободное пространство, чтобы содержать
копию табличных файлов. Свободное пространство должно быть доступным в файловой системе, содержащей
исходные табличные файлы.
Предположите, что myisamchk работа табличного восстановления делается, используя следующие опции, чтобы установить ее переменные выделения памяти:
--key_buffer_size=128M --myisam_sort_buffer_size=256M--read_buffer_size=64M --write_buffer_size=64M
Некоторые из тех myisamchk переменных соответствуют системным переменным сервера:
Переменная myisamchk | Системная Переменная |
---|---|
key_buffer_size |
key_buffer_size
|
myisam_sort_buffer_size |
myisam_sort_buffer_size |
read_buffer_size |
read_buffer_size
|
write_buffer_size |
ни один |
Каждая из системных переменных сервера может быть установлена во времени выполнения, и некоторые из них (myisam_sort_buffer_size
,
read_buffer_size
) имейте значение сеанса в дополнение к глобальному значению.
Установка значения сеанса ограничивает эффект изменения к Вашему текущему сеансу и не влияет на других
пользователей. Замена переменной только для глобальной переменной (key_buffer_size
, myisam_max_sort_file_size
) влияет на других пользователей также. Для key_buffer_size
,
следует принять во внимание, что буфер совместно используется с теми пользователями. Например, если Вы
устанавливаете myisamchk
key_buffer_size
переменная к 128 МБ, Вы могли установить соответствие key_buffer_size
системная переменная, больше чем это (если это уже не устанавливается больше), чтобы разрешить ключевое буферное
использование действием в других сеансах. Однако, изменение глобального ключевого размера буфера лишает законной
силы буфер, вызывая увеличенный дисковый ввод-вывод и замедление для других сеансов. Альтернатива, которая
избегает этой проблемы, должна использовать отдельный ключевой кэш, присвоить ей индексирование от таблицы,
которая будет восстановлена, и освободить ее, когда восстановление полно. См. Раздел
8.9.2.2, "Многократные Ключевые Кэши".
Основанный на предыдущих комментариях, a REPAIR
TABLE
работа может быть сделана следующим образом, чтобы использовать настройки, подобные myisamchk
команде. Здесь отдельный ключевой буфер 128 МБ выделяется, и файловая система, как предполагается, разрешает
размер файла по крайней мере 100 Гбайт.
SET SESSION myisam_sort_buffer_size = 256*1024*1024;SET SESSION read_buffer_size = 64*1024*1024;SET GLOBAL myisam_max_sort_file_size = 100*1024*1024*1024;SET GLOBAL repair_cache.key_buffer_size = 128*1024*1024;CACHE INDEXtbl_name
IN repair_cache;LOAD INDEX INTO CACHEtbl_name
;REPAIR TABLEtbl_name
;SET GLOBAL repair_cache.key_buffer_size = 0;
Если Вы намереваетесь изменить глобальную переменную, но хотеть сделать столь только для продолжительности a REPAIR TABLE
работа, чтобы минимально влиять на других пользователей, сохраните
ее значение в пользовательской переменной и восстановите ее позже. Например:
SET @old_myisam_sort_buffer_size = @@global.myisam_max_sort_file_size;SET GLOBAL myisam_max_sort_file_size = 100*1024*1024*1024;REPAIR TABLE tbl_name ;SET GLOBAL myisam_max_sort_file_size = @old_myisam_max_sort_file_size;
Системные переменные, которые влияют REPAIR
TABLE
может быть установлен глобально при запуске сервера, если Вы хотите, чтобы значения были в
действительности по умолчанию. Например, добавьте эти строки к серверу my.cnf
файл:
[mysqld]myisam_sort_buffer_size=256Mkey_buffer_size=1Gmyisam_max_sort_file_size=100G
Эти настройки не включают read_buffer_size
. Установка read_buffer_size
глобально к большому значению делает так для всех сеансов и
может заставить производительность страдать из-за чрезмерного выделения памяти для сервера со многими
одновременными сеансами.