Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / MySQL / Администрирование баз данных /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Предотвращение катастроф и восстановление - Программирование от RIN.RU
Предотвращение катастроф и восстановление



Проверочные опции для myisamchk


-c или --check

Проверить таблицы на ошибки. Является операцией по умолчанию, если myisamchk не передаются другие опции, меняющие это поведение.

-e или --extend-check

Проверить таблицу очень тщательно (выполняется достаточно медленно в случае большого количества индексов). Эту опцию следует использовать в
экстремальных ситуациях. В большинстве случаев myisamchk или myisamchk --medium-check вполне достаточно для выявления ошибок в таблице. Если используется --extended-check и система располагает приличным объемом памяти, то следует значительно увеличить значение key_buffer_size!

-F или --fast

Проверять только таблицы, которые не были корректно закрыты.

-C или --check-only-changed

Проверять только таблицы, изменившиеся с момента последней проверки.

-f или --force

Выполнять перезапуск myisamchk с -r (исправить) на таблице, если myisamchk найдет в ней хоть одну ошибку.

-i или --information

Выдавать статистическую информацию о проверяемой таблице.

-m или --medium-check

Быстрее, чем расширенная проверка (extended-check), но при этом обнаруживается только 99,99% из общего числа ошибок (чего, однако, в большинстве случаев вполне достаточно).

-U или --update-state

Отмечать в файле '.MYI" факт проверки таблицы и наличие повреждений. Опцию следует использовать для получения максимального эффекта от опции --check-only-changed, однако ее применение недопустимо, если mysqld работает с таблицей и был запущен с опцией --skip-locking.

-T или --read-only

Не отмечать таблицу как проверенную. Это может пригодиться, когда myisamchk используется для проверки таблиц, используемых каким-то другим
приложением, и это приложение не выполняет блокировку (как mysqld --skip-locking).




Опции исправления для myisamchk


Следующие опции используются, если myisamchk запускается с -r или -o:




-D # или --data-file-length=# Максимальная длина файла данных (когда файл данных пересоздается при его "переполнении").


-e или --extend-check Пробовать исправлять каждую возможную строку из файла данных. Обычно при этом обнаруживается масса замусоренных строк. Использовать эту опцию следует только в самом крайнем случае, когда больше ничего не остается.


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


-k # или keys-used=# Если используется ISAM, то данный параметр предписывает обработчику таблиц ISAM на необходимость обновить только первые # индексов. Если используется MyISAM, то определяет, какие ключи использовать, при этом каждый двоичный бит соответствует одному ключу (первый ключ - это бит 0). Может использоваться для ускорения вставок! Отключенные индексы можно снова активизировать с помощью myisamchk -r. keys.


-l или --no-symlinks Не рассматривать символические ссылки. Обычно myisamchk исправляет таблицы, на которые указывают символические ссылки. Данная опция отсутствует в MySQL 4.0, в связи с тем, что MySQL 4.0 не удаляет символические ссылки во время восстановления.


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

-o или --safe-recover

Используется старый метод восстановления (читаются подряд все строки и обновляются все деревья индексов на основе найденных строк); такой
алгоритм работает на порядок медленнее -r, но метод справляется с несколькими редкими случаями, непосильными для -r. При этом методе восстановления также используется значительно меньше дискового пространства, нежели в случае -r. Обычно всегда следует начинать с исправления посредством -r, и только если результат не будет достигнут, использовать -o. Для систем с большим объемом памяти следует увеличить размер key_buffer_size!

-n или --sort-recover

Заставляет myisamchk использовать сортировку при разрешении ключей, даже если это потребует временных файлов очень большого размера.

--character-sets-dir=...

Каталог, где хранятся кодировки.

--set-character-set=name

Изменить используемую для индекса кодировку

-t или --tmpdir=path

Путь для хранения временных файлов. Если не задан, myisamchk использует для пути переменную окружения TMPDIR.

-q или --quick

Быстрый ремонт без изменения файла данных. Можно добавить вторую -q, чтобы дать myisamchk санкцию на изменение исходного файла данных в случае дублирования ключей

-u или --unpack

Распаковать файл, упакованный в myisampack.




Другие опции для myisamchk


Кроме ремонта и проверки таблиц, myisamchk может выполнять другие операции:


-a или --analyze

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

-d или --description

Отображает некоторую информацию о таблице.

-A или --set-auto-increment[=value]

Предписывает, чтобы отсчет значений AUTO_INCREMENT начинался с value или большего значения. Если значение не указано, то в качестве следующего значения AUTO_INCREMENT берется наибольшее использованное значение для автоинкрементного ключа + 1.

-S или --sort-index

Сортировать блоки индексного дерева в порядке от больших к меньшим (high-low). Этим оптимизируются операции поиска и повышается скорость
сканирования по ключу.

-R или --sort-records=#

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


Использование памяти утилитой myisamchk


При работе myisamchk очень важно распределение памяти. Объем используемой myisamchk памяти не превышает количества, указанного с помощью опций -O. Когда речь идет о применении myisamchk на очень больших файлах, следует сначала принять решение о том, какое количество памяти будет при этом использоваться. По умолчанию для целей исправления ошибок отводится только около 3Mб. Применяя большие величины, можно достичь большей скорости работы myisamchk. К примеру, если имеется более 32Mб оперативной памяти, то можно задать следующие опции (в дополнение к любым другим указанным опциям):


shell> myisamchk -O sort=16M -O key=16M -O read=1M -O write=1M ...


В большинстве случаев достаточно использовать -O sort=16M.


Важно понимать, что myisamchk использует временные файлы, для указания на которые служит TMPDIR. Если TMPDIR указывает на файловую систему с размещением в памяти, то велика вероятность ошибок нехватки памяти (out of memory). Если такое произойдет, то в TMPDIR следует поместить имя некоторого другого каталога с большим пространством и перезапустить myisamchk.


При выполнении ремонта myisamchk также понадобится большое количество дискового пространства; :


  • Потребуется пространство порядка удвоенного размера файла - для оригинала и копии файла данных. В этом пространстве нет необходимости, когда исправление выполняется с --quick, поскольку в этом случае повторно создается только индексный файл. Дополнительное место необходимо на том же диске, где находится оригинальный файл записи!

  • Необходимо место для нового индексного файла, заменяющего старый. В начальной фазе выполнения старый индексный файл усекается, поэтому обычно данный объем можно не учитывать. Место должно обеспечиваться на диске, содержащем оригинальный индексный файл!

  • При указании --recover или --sort-recover (но не в случае использования --safe-recover) потребуется место для буфера сортировки: (largest_key + row_pointer_length)*number_of_rows * 2. Можно узнать длину ключей и row_pointer_length с помощью myisamchk -dv table. Это пространство выделяется на временном диске (который определяется при помощи TMPDIR либо --tmpdir=#).


Если возникнут проблемы в связи с нехваткой дискового пространства во время исправления, можно попробовать использовать --safe-recover вместо --recover.


<<<  НазадВперед  >>>
 1  2  3  4  5  6  7 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Конфигурирование MySQL

Общие проблемы безопасности и система привилегий доступа MySQL

Управление учетными записями пользователей MySQL

Справочник по языку администрирования баз данных

Локализация MySQL и использование национальных алфавитов

Серверные сценарии и утилиты MySQL

Клиентские сценарии и утилиты MySQL

Файлы журналов MySQL

Репликация в MySQL

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь