Несмотря на то, что данная работа ориентирована на пользователей пакета,
иногда им требуется выполнять простые административные задачи, например,
резервирование и восстановление баз данных. Сложными делами, понятно, должен
заниматься выделенный администратор, но иногда он может доверить выполнение
простых задач достаточно квалифицированному пользователю.
Поскольку таблицы MySQL сохранены как файлы, просто делайте копию. Чтобы
получать непротиворечивую копию, скомандуйте LOCK TABLES на
релевантных таблицах и дополните это командой FLUSH TABLES для
них, дабы все данные были гарантированно сброшены на диск. Подробности по
этим командам есть в разделах
"9.7.2 Синтаксис LOCK TABLES/UNLOCK
TABLES " и "4.8 Синтаксис
FLUSH ". Вам нужна только блокировка записи. Это позволяет
другим потокам продолжать делать запросы к таблицам в то время, как Вы
делаете копию файлов в каталоге баз данных. Команда FLUSH TABLE
необходима, чтобы гарантировать, что все активные индексные страницы записаны
на диск прежде, чем Вы запускаете процесс копирования.
Если Вы хотите делать копию уровня SQL из таблицы, Вы можете использовать
SELECT INTO OUTFILE или BACKUP TABLE . Подробности в
разделах "8.1 Синтаксис SELECT
" и "4.2 Синтаксис BACKUP
TABLE ".
Другой способ поддержать базу данных состоит в том, чтобы использовать
программу mysqldump или скрипт mysqlhotcopy .
Подробности в разделах
"12.5 mysqldump, Дамп структур таблиц и
данных" и "12.6 mysqlhotcopy,
Копирование баз данных и таблиц MySQL".
- Для полного резервирования баз данных надо скомандовать:
shell> mysqldump --tab=/path/to/some/dir --opt --full
или
shell> mysqlhotcopy database /path/to/some/dir
Вы можете также просто копировать все файлы таблицы (*.frm,
*.MYD и *.MYI), пока сервер что-нибудь не модифицирует.
Скрипт mysqlhotcopy использует этот метод.
- Если
mysqld запущен, остановите его, а
затем запустите с опцией --log-update[=file_name] . Подробнее об
этой опции можно узнать в разделе "4.9.3
Файл регистрации модификаций". Файлы протоколов предоставляют Вам
информацию относительно того, что изменилось со времени
последнего вызова mysqldump .
Если Вы должны восстановить что-либо, попробуйте восстанавливать Ваши
таблицы, используя REPAIR TABLE или myisamchk -r .
Это эффективно в 99.9% случаев. Если myisamchk ничего хорошего
не сделал, попробуйте следующую процедуру (это будет работать только, если Вы
запустили MySQL с опцией --log-update ):
- Восстановите оригинальную копию
mysqldump .
- Выполните следующую команду, чтобы заново выполнить модификации в
двоичном файле регистрации:
shell> mysqlbinlog hostname-bin.[0-9]* | mysql
Если Вы используете файл регистрации модификации, Вы можете использовать:
shell> ls -1 -t -r hostname.[0-9]* | xargs cat | mysql
ls используется, чтобы получить все журналы модификации в
правильном порядке.
Вы можете также делать выборочные копии: SELECT * INTO OUTFILE
file_name FROM tbl_name и восстанавливать их: LOAD DATA INFILE
file_name REPLACE ... . Чтобы избежать двойных записей, Вам нужен
PRIMARY KEY или UNIQUE в таблице. Ключевое слово
REPLACE заменяет старые записи на новые, когда новая запись
дублирует старую запись на уникальном значении ключа.
Если Вы получаете проблемы эффективности при создании копий на Вашей
системе, можно решить их установкой репликации и созданием копий на
подчиненной системе вместо главной. Это задачи администратора.
Если Вы используете файловую систему Veritas, Вы можете делать следующее:
- Выполните в клиенте (perl?)
FLUSH TABLES WITH READ LOCK
- Выполните в другом клиенте или в копии оболочки команду
mount vxfs
snapshot .
- Выполните в первом клиенте
UNLOCK TABLES
- Копируйте файлы из snapshot
- Размонтируйте snapshot
BACKUP TABLE tbl_name[,tbl_name...] TO '/path/to/backup/directory'
Эта команда делает копию всех файлов таблицы в резервный каталог, что
является минимумом, необходимым, чтобы восстановить ее. Сейчас это работает
только для таблиц MyISAM . Для них копируются файлы
.frm (определение) и .MYD (данные). Индексный файл
может быть восстановлен из этих двух.
Перед использованием этой команды, пожалуйста, ознакомьтесь с разделом
"4.1 Резервирование баз данных".
Пока таблица резервируется, она блокируется. Если нужно резервировать
сразу несколько таблиц, выполните команду LOCK TABLES для каждой
таблицы в этой группе.
Команда возвращает таблицу со следующими столбцами:
Столбец | Значение |
Table | Имя таблицы |
Op | Обязательно ``backup'' |
Msg_type | Одно из status , error ,
info или warning . |
Msg_text | Собственно сообщение. |
Обратите внимание, что команда BACKUP TABLE доступна только в
MySQL версии 3.23.25 и старше.
RESTORE TABLE tbl_name[,tbl_name...] FROM '/path/to/backup/directory'
Восстанавливает таблицу из копии, которая была сделана с помощью
BACKUP TABLE . Существующие таблицы не будут перезаписаны, если
Вы попробуете восстанавливать существующую таблицу, получите ошибку.
Восстановление занимает больше времени, чем резервирование из-за
необходимости сгенерировать индексный файл. Чем больше имеется ключей, тем
дольше система будет его строить. Также, как и BACKUP TABLE , эта
функция работает только с таблицами MyISAM .
Команда возвращает таблицу со следующими столбцами:
Столбец | Значение |
Table | Имя таблицы |
Op | Обязательно ``restore'' |
Msg_type | Одно из status , error ,
info или warning . |
Msg_text | Собственно сообщение. |
CHECK TABLE tbl_name[,tbl_name...] [option [option...]]
option = QUICK | FAST | MEDIUM | EXTENDED | CHANGED
CHECK TABLE работает только с таблицами типа
MyISAM . На них данная команда эквивалентна
myisamchk -m table_name .
Если Вы не определяете опций, используется MEDIUM .
Данная команда проверяет таблицу на ошибки. Для таблиц типа
MyISAM модифицируется статистика ключа. Команда возвращает
таблицу со следующими столбцами:
Столбец | Значение |
Table | Имя таблицы. |
Op | Обязательно ``check''. |
Msg_type | Одно из status , error ,
info или warning . |
Msg_text | Собственно сообщение. |
Обратите внимание, что Вы можете получать много строк информации для
каждой проверенной таблицы. Последняя строка будет иметь тип Msg_type
status и значение OK , если все хорошо. Если ответов
OK или Not checked нет, Вы должны выполнить ремонт
таблицы. Сообщение Not checked говорит о том, что для данной
таблицы TYPE сообщил MySQL, что там не было никакой
потребности проверять таблицу.
Различные типы проверки:
Тип | Значение |
QUICK | Не просматривать строки, чтобы проверить
неправильные связи. |
FAST | Проверить только те таблицы, которые не
были закрыты правильно. |
CHANGED | Проверить только те таблицы, которые не
были закрыты правильно, и те, которые изменились со времен последней проверки.
|
MEDIUM | Сканировать строки для проверки
правильности удаленных связей. Это также вычисляет контрольную сумму ключа
для строк и проверяет ее правильность. |
EXTENDED | Выполнить полную проверку всех ключей
для всех строк в таблице. Это гарантирует, что таблица на 100%
непротиворечива, но требует много времени! |
Для динамических таблиц MyISAM запущенная проверка будет
всегда использовать опцию MEDIUM . Для статических строк не
выполняется просмотр строки для режимов QUICK и
FAST , поскольку строки очень редко разрушаются.
Вы можете объединять параметры проверки:
CHECK TABLE test_table FAST QUICK;
Это предписывает провести быструю проверку на таблице, если она не была
закрыта правильно.
ОБРАТИТЕ ВНИМАНИЕ: в ряде случаев
CHECK TABLE изменяет таблицу! Это случается, если таблица
отмечена как 'corrupted' (повреждена) или 'not closed properly' (не закрыта
правильно), но команда CHECK TABLE не нашла проблем в таблице. В
этой ситуации CHECK TABLE отметит таблицу как ok.
Если таблица разрушена, то наиболее вероятное, что проблема находится в
индексах, а не в части данных. Все приведенные выше типы проверки тестируют
индексы и должны таким образом найти большинство ошибок.
Если Вы хотите только проверить таблицу, Вы не должны использовать никакие
параметры проверки или опцию QUICK . Последний должен
использоваться, когда Вы спешите и можете позволить пропустить то малое число
ошибок, которое QUICK не находит. Например, это ошибка в файле
данных. В большинстве случаев MySQL, при нормальном использовании, должен сам
найти любую ошибку в файле данных. Если это случается, таблица будет отмечена
как 'разрушено', тогда таблица не сможет использоваться, пока ошибка не
восстановлена, чтобы не развалить данные окончательно.
FAST и CHANGED обычно предназначены, чтобы
использоваться из скрипта (например, из cron), если Вы хотите проверять
таблицу время от времени. В большинстве случаев FAST имеет
приоритет перед CHANGED .
EXTENDED должен использоваться после того, как Вы выполнили
нормальную проверку, но все еще получаете странные ошибки из таблицы, когда
MySQL пробует модифицировать строку или найти строку по ключу (это ОЧЕНЬ
маловероятно, если нормальная проверка прошла спокойно!).
Некоторые вещи, сообщаемые проверкой таблиц, не могут быть исправлены в
автоматическом режиме:
Найденная строка, где столбец auto_increment имеет значение 0
.
Это означает, что Вы имеете в таблице строку, где столбец индекса
auto_increment содержит значение 0. Можно создать такую
конструкцию командой UPDATE .
Это не ошибка само по себе, но может вызывать проблему, если Вы сбрасываете
таблицу в дамп, а потом восстановите ее оттуда или скомандуете
ALTER TABLE на таблице. В этом случае столбец auto_increment
изменит значение, согласно правилам auto_increment, что может вызвать
проблемы подобно ошибке дублирования ключа.
Избавиться от предупреждения можно, только выполнив инструкцию
UPDATE , чтобы установить столбец к некоторому другому значению
(не 0).
REPAIR TABLE tbl_name[,tbl_name...] [QUICK] [EXTENDED]
REPAIR TABLE тоже работает только на таблицах типа
MyISAM и аналогичен вызову myisamchk -r table_name .
Обычно Вам никогда не придется выполнять эту команду, но в случае ошибок
Вы, очень вероятно, вернете все Ваши данные из таблицы MyISAM с помощью
команды REPAIR TABLE . Если Ваши таблицы разрушаются, Вы должны
попробовать нахйти причину этого! Подробности по этому вопросу есть в разделе
"11.4.1 Что делать, если MySQL рухнул".
REPAIR TABLE восстанавливает разрушенную таблицу. Команда
возвращает таблицу со следующими столбцами:
Столбец | Значение |
Table | Имя таблицы |
Op | Обязательно ``repair'' |
Msg_type | Одно из status , error ,
info или warning . |
Msg_text | Собственно сообщение. |
Обратите внимание, что Вы можете получать много строк информации для
каждой восстановленной таблицы. Последняя будет иметь тип Msg_type
status и значение OK , если все в порядке. Если значение
OK так и не появилось, Вы должны попробовать восстанавливать
таблицу с помощью myisamchk -o , поскольку REPAIR
TABLE еще не выполняет все параметры myisamchk . В
ближайшем будущем планируется сделать ее более гибкой.
Если задан QUICK , MySQL пробует делать REPAIR
только для индексного дерева.
Если Вы используете EXTENDED , MySQL создаст индекс по строкам
вместо того, чтобы создать индекс одновременно с сортировкой: это может быть
лучше, чем сортировка по ключам фиксированной длины, если Вы имеете длинные
ключи типа char() , которые сжимаются очень хорошо.
OPTIMIZE TABLE tbl_name[,tbl_name]...
OPTIMIZE TABLE должен использоваться, если Вы удалили большую
часть таблицы, или если Вы сделали много изменений для таблицы со строками
переменных длин (таблицы, которые имеют VARCHAR ,
BLOB или TEXT ). Удаленные записи поддерживаются в
связанном списке, и при последующем использовании операций
INSERT повторно применяются старые позиции записей. Вы можете
использовать OPTIMIZE TABLE , чтобы освободить неиспользуемое
место и дефрагментировать файл данных.
Сейчас OPTIMIZE TABLE применим только к таблицам типов
MyISAM и BDB . Для таблиц типа BDB
OPTIMIZE TABLE в настоящее время отображается на вызов
ANALYZE TABLE . Подробности об этом вызове в разделе
"4.7 Синтаксис ANALYZE TABLE
".
Вы можете оптимизировать и другие типы таблиц запуском mysqld
с опциями --skip-new или --safe-mode , но в этом
случае OPTIMIZE TABLE превратится в вызов ALTER
TABLE .
OPTIMIZE TABLE работает следующим образом:
- Если таблица имеет удаленные или порванные строки,
ремонтирует таблицу.
- Если индексные страницы не отсортированы, сортирует их.
- Если статистика не современна (и ремонт не может быть выполнен с
сортировкой индекса), модифицирует ее.
OPTIMIZE TABLE для таблиц типа MyISAM
эквивалентен вызову myisamchk --quick --check-changed-tables
--sort-index --analyze .
Обратите внимание, что таблица будет блокирована в течение всего времени
работы команды OPTIMIZE TABLE !
ANALYZE TABLE tbl_name[,tbl_name...]
Анализирует и сохраняет распределение ключей для таблицы. Во время
процесса анализа таблица будет блокирована с доступом только на чтение. Это
работает на таблицах типов MyISAM и BDB .
Это эквивалентно вызову myisamchk -a .
MySQL использует сохраненное распределение ключей, чтобы решить, в каком
порядке таблицы должны быть соединены, когда выполняется объединение.
Команда возвращает таблицу со следующими столбцами:
Столбец | Значение |
Table | Имя таблицы |
Op | Обязательно ``analyze'' |
Msg_type | Одно из status , error ,
info или warning . |
Msg_text | Собственно сообщение. |
Вы можете проверять сохраненное распределение ключей командой SHOW
INDEX . Подробности в разделе
"4.10.1 Получение информации о базах
данных, таблицах, столбцах и индексах".
Если таблица не изменилась после последней команды ANALYZE
TABLE , она не будет проанализирована снова.
FLUSH flush_option [,flush_option]
Вы должны использовать команду FLUSH , если Вы хотите очищать
внутренние кэши MySQL. Для выполнения FLUSH Вы должны иметь
право RELOAD.
flush_option может быть любой из следующего списка:
HOSTS | Освобождает ведущие таблицы кэша. Вы
должны это сделать, если некоторые из Ваших хостов изменяют IP, или если Вы
получили сообщение об ошибке "Host ... is blocked ". Когда в
строке для данного компьютера происходит больше, чем
max_connect_errors ошибок за время связи с сервером, MySQL
приходит к выводу, что что-то пошло неправильно, и блокирует компьютер.
Подробности в разделе "11.2.4 Ошибка
Host '...' is blocked . Вы можете запустить
mysqld с опцией -O max_connection_errors=999999999 ,
чтобы избежать этого сообщения об ошибке. |
LOGS | Закрывает и вновь открывает все журналы.
Если Вы определили журнал модификаций или двоичный журнал без расширения,
номер расширения журнала будет увеличен на один относительно предыдущего
файла. Если Вы использовали расширение в имени файла, MySQL закроет и вновь
откроет журнал модификаций. Это эквивалентно посылке на сервер
mysqld сигнала SIGHUP . |
PRIVILEGES | Перезагружает привилегии из таблиц в
базе данных mysql . |
TABLES | Закрывает все открытые таблицы. |
[TABLE|TABLES] table_name [,table_name...] |
Применяет предыдущую команду только к заданным таблицам. |
TABLES WITH READ LOCK | Закрывает все открытые
таблицы и блокирует все таблицы для всех баз данных с доступом только на
чтение, пока не будет выполнена команда UNLOCK TABLES . Это очень
удобный способ получить резервную копию, если Вы имеете файловую систему,
подобную Veritas. |
STATUS | Сбрасывает большинство переменных
состояния к нулю. Используется при отладке запроса. |
Вы можете также обращаться к каждой из команд, показанных выше с помощью
утилиты mysqladmin , используя команды flush-hosts ,
flush-logs , reload или flush-tables .
KILL thread_id
Каждое подключение к mysqld выполняется в отдельном процессе.
Вы можете видеть запущенные процессы командой SHOW PROCESSLIST
и уничтожать процесс командой KILL thread_id .
Если Вы имеете привилегию process, Вы можете видеть и
уничтожать все процессы. Иначе Вы можете видеть и уничтожать только Ваши
собственные процессы.
Вы можете также использовать команды mysqladmin processlist и
mysqladmin kill , чтобы исследовать и уничтожать процессы.
При вызове KILL для процесса устанавливается флаг kill
flag .
В большинстве случаев может требоваться некоторое время для того, чтобы
процесс уничтожился, поскольку флаг kill flag может быть
проверен только в специфических интервалах:
- В циклах
SELECT , ORDER BY и GROUP
BY флажок будет проверен после чтения блока строк. Если он установлен,
инструкция будет прервана.
- При выполнении
ALTER TABLE флаг будет проверен прежде, чем
каждый блок строк считается из первоначальной таблицы. Если он установлен,
команда будет прервана, а временная таблица удалена.
- При выполнении
UPDATE TABLE и DELETE TABLE ,
флажок будет проверен после каждого чтения блока и после каждого обновления
или удаления строки. Если он установлен, инструкция будет прервана. Обратите
внимание, что, если Вы не используете транзакции, сделанные в таблице
изменения не будут отменены!
GET_LOCK() прервется с NULL .
- Все процессы
INSERT DELAYED быстренько сбросят на диск все
строки, которые у них лежат в памяти и завершатся.
- Если поток находится в драйвере блокировки таблицы (состояние:
Locked ), блокировка таблицы будет быстро прервана.
- Если поток ждет свободное дисковое пространство в вызове
write , запись немедленно прерывается с сообщением об
ошибке переполнения диска.
SHOW DATABASES [LIKE wild]
SHOW [OPEN] TABLES [FROM db_name] [LIKE wild]
SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [LIKE wild]
SHOW INDEX FROM tbl_name [FROM db_name]
SHOW TABLE STATUS [FROM db_name] [LIKE wild]
SHOW STATUS [LIKE wild]
SHOW VARIABLES [LIKE wild]
SHOW LOGS
SHOW [FULL] PROCESSLIST
SHOW GRANTS FOR user
SHOW CREATE TABLE table_name
SHOW MASTER STATUS
SHOW MASTER LOGS
SHOW SLAVE STATUS
SHOW обеспечивает информацию относительно баз данных, таблиц,
столбцов или информацию состояния сервера. Если используется часть
LIKE wild , строка wild может быть строкой, которая
использует групповые символы SQL % и _.
Вы можете использовать db_name.tbl_name как вариант для
tbl_name FROM db_name . Эти две инструкции эквивалентны:
mysql> SHOW INDEX FROM mytable FROM mydb;
mysql> SHOW INDEX FROM mydb.mytable;
SHOW DATABASES вносит в список базы данных на сервере
MySQL. Вы можете также получать этот список, используя команду
mysqlshow .
SHOW TABLES вносит в список таблицы в заданной базе данных.
Вы можете также получать этот список, используя команду
mysqlshow db_name .
ОБРАТИТЕ ВНИМАНИЕ: Если пользователь не имеет привилегий
для таблицы, соответствующая таблица не будет обнаруживаться в выводе
SHOW TABLES или mysqlshow db_name .
SHOW OPEN TABLES вносит в список таблицы, которые являются в
настоящее время открытыми в кэше таблиц. Поле Comment сообщает
сколько раз таблица кэшируется (cached ) и используется
(in_use ).
SHOW COLUMNS вносит в список столбцы в данной таблице. Если
Вы определяете опцию FULL , Вы также получите привилегии, которые
Вы имеете для каждого столбца. Если типы столбцов отличны от ожидаемых, они
будут основаны на инструкции CREATE TABLE , заметьте, что MySQL
иногда сам изменяет типы столбца. Подробности в разделе
"7.3.1 Тихие изменения
спецификации столбца".
Инструкция DESCRIBE обеспечивает информацию, подобную
SHOW COLUMNS . Подробности в разделе
"9.1.2 Синтаксис DESCRIBE
(получение информации о столбцах)".
SHOW FIELDS является синонимом для SHOW COLUMNS ,
а SHOW KEYS синонимом для SHOW INDEX . Вы можете
также вносить в список столбцы таблицы или индексы с помощью команд
mysqlshow db_name tbl_name или
mysqlshow -k db_name tbl_name .
SHOW INDEX возвращает индексную информацию в формате, который
очень походит на вызов SQLStatistics в ODBC. Следующие столбцы
всегда будут возвращены:
Столбец | Назначение |
Table | Имя таблицы. |
Non_unique | 0, если индекс не может содержать
дубликаты. |
Key_name | Имя индекса. |
Seq_in_index | Номер последовательности столбца в
индексе, начиная с 1 (не с 0!). |
Column_name | Имя столбца. |
Collation | Как столбец сортируется в индексе. В
MySQL это может иметь варианты `A' (по возрастанию) или
NULL (не сортируемый). |
Cardinality | Число уникальных значений в индексе.
Это модифицируется запуском isamchk -a . |
Sub_part | Число индексированных символов, если
столбец только частично индексирован. NULL если весь ключ
индексирован в полном объеме. |
Comment | Различные замечания. Пока это сообщает,
является ли индекс полнотекстовым (FULLTEXT) или нет. |
Обратите внимание, что, поскольку Cardinality будет
рассчитано, основываясь на статистике, сохраненной как целые числа, оно не
обязательно точно для маленьких таблиц.
SHOW TABLE STATUS [FROM db_name] [LIKE wild]
SHOW TABLE STATUS (новинка в Version 3.23) работает подобно
SHOW STATUS , но обеспечивает много информации относительно
каждой таблицы. Вы можете также получать этот список, используя команду
mysqlshow --status db_name . Следующие столбцы возвращены:
Столбец | Зачем он нужен |
Name | Имя таблицы. |
Type | Тип таблицы. |
Row_format | Формат хранения строки
(фиксированный, динамический или сжатый). |
Rows | Число строк. |
Avg_row_length | Средняя длина строки. |
Data_length | Длина файла данных. |
Max_data_length | Максимальная длина файла данных.
|
Index_length | Длина индексного файла. |
Data_free | Число распределенных, но не
используемых байт. |
Auto_increment | Следующее значение
auto_increment. |
Create_time | Когда таблица была создана. |
Update_time | Когда файл данных был в последний
раз модифицирован. |
Check_time | Когда таблица была в последний раз
проверена на ошибки. |
Create_options | Дополнительные параметры,
используемые с CREATE TABLE . |
Comment | Комментарий, используемый при создании
таблицы (или информация о том, почему MySQL не может обращаться к информации
по данной таблицы). |
Таблицы InnoDB сообщат свободное пространство в ней через
поле комментария таблицы.
SHOW STATUS обеспечивает информацию состояния сервера (подобно
mysqladmin extended-status ). Вывод походит на показанное ниже,
хотя формат и числа будут другими:
+--------------------------+------------+
| Variable_name | Value |
+--------------------------+------------+
| Aborted_clients | 0 |
| Aborted_connects | 0 |
| Bytes_received | 155372598 |
| Bytes_sent | 1176560426 |
| Connections | 30023 |
| Created_tmp_disk_tables | 0 |
| Created_tmp_tables | 8340 |
| Created_tmp_files | 60 |
| Delayed_insert_threads | 0 |
| Delayed_writes | 0 |
| Delayed_errors | 0 |
| Flush_commands | 1 |
| Handler_delete | 462604 |
| Handler_read_first | 105881 |
| Handler_read_key | 27820558 |
| Handler_read_next | 390681754 |
| Handler_read_prev | 6022500 |
| Handler_read_rnd | 30546748 |
| Handler_read_rnd_next | 246216530 |
| Handler_update | 16945404 |
| Handler_write | 60356676 |
| Key_blocks_used | 14955 |
| Key_read_requests | 96854827 |
| Key_reads | 162040 |
| Key_write_requests | 7589728 |
| Key_writes | 3813196 |
| Max_used_connections | 0 |
| Not_flushed_key_blocks | 0 |
| Not_flushed_delayed_rows | 0 |
| Open_tables | 1 |
| Open_files | 2 |
| Open_streams | 0 |
| Opened_tables | 44600 |
| Questions | 2026873 |
| Select_full_join | 0 |
| Select_full_range_join | 0 |
| Select_range | 99646 |
| Select_range_check | 0 |
| Select_scan | 30802 |
| Slave_running | OFF |
| Slave_open_temp_tables | 0 |
| Slow_launch_threads | 0 |
| Slow_queries | 0 |
| Sort_merge_passes | 30 |
| Sort_range | 500 |
| Sort_rows | 30296250 |
| Sort_scan | 4650 |
| Table_locks_immediate | 1920382 |
| Table_locks_waited | 0 |
| Threads_cached | 0 |
| Threads_created | 30022 |
| Threads_connected | 1 |
| Threads_running | 1 |
| Uptime | 80380 |
+--------------------------+------------+
Переменные состояния, перечисленные выше, имеют
следующие значения:
Переменная | Значение |
Aborted_clients | Число подключений, прерванных
потому, что клиент не закрыл подключение правильно. Подробности в разделе
"11.2.9 Ошибки связи/прерванные
соединения". |
Aborted_connects | Число попыток соединиться с
сервером MySQL, которые потерпели неудачу. Подробности в разделе
"11.2.9 Ошибки связи/прерванные
соединения". |
Bytes_received | Число байт, полученных с клиентов.
|
Bytes_sent | Число байт, посланных клиентам. |
Connections | Число попыток подключения к серверу
MySQL. |
Created_tmp_disk_tables | Число неявных временных
таблиц на диске, созданных при выполнении инструкций. |
Created_tmp_tables | Число неявных временных
таблиц в памяти, созданных при выполнении инструкций. |
Created_tmp_files | Сколько временных файлов
создал mysqld . |
Delayed_insert_threads | Число отсроченных потоков
драйвера вставки в использовании. |
Delayed_writes | Число строк, записанных со
INSERT DELAYED . |
Delayed_errors | Число строк, записанных со
INSERT DELAYED , для которых произошла ошибка (вероятно, двойной
ключ (duplicate key ) был использован). |
Flush_commands | Число выполненных команд
FLUSH . |
Handler_delete | Сколько раз строка была удалена
из таблицы. |
Handler_read_first | Сколько раз первая запись
читалась из индекса. Если это значение высоко, предполагается, что сервер
делал много полных просмотров индекса, например, SELECT col1 FROM
foo , считая, что col1 индексирован. |
Handler_read_key | Число запросов на чтение
строки, основанных на ключе. Если это значение высоко, это значит, что Ваши
запросы и таблицы были правильно индексированы. |
Handler_read_next | Число запросов на чтение
следующей строки в порядке ключа. Это значение будет увеличено, если Вы
запрашиваете индексный столбец с ограничением диапазона. Это также будет
увеличено, если Вы делаете индексный просмотр. |
Handler_read_rnd | Число запросов на чтение строк,
основанных на фиксированной позиции. Это значение будет высоким, если Вы
делаете много запросов, которые требуют сортировки результата. |
Handler_read_rnd_next | Число запросов на чтение
следующей строки в файле данных. Это значение будет высоким, если Вы делаете
много просмотров таблицы. Вообще это предполагает, что Ваши таблицы не были
правильно индексированы, или что Ваши запросы не используют индексы. |
Handler_update | Число запросов на модификацию
строк в таблице. |
Handler_write | Число запросов на вставку строки
в таблицу. |
Key_blocks_used | Число используемых блоков в кэше
ключа. |
Key_read_requests | Число запросов на чтение блока
ключа из кэша. |
Key_reads | Число физических чтений блока ключа с
диска, а не из кэша. |
Key_write_requests | Число запросов на запись
блока ключа в кэш. |
Key_writes | Число физических записей блока ключа
на диск, а не в кэш. |
Max_used_connections | Максимальное число
подключений в использовании одновременно. |
Not_flushed_key_blocks | Число блоков ключей в
кэше ключа, которые изменились, но не сброшены на диск. |
Not_flushed_delayed_rows | Число строк, ждущих
записи в очередях запросов INSERT DELAY . |
Open_tables | Число таблиц, которые являются
открытыми. |
Open_files | Число файлов, которые являются
открытыми. |
Open_streams | Число потоков, которые являются
открытыми (используемыми, главным образом, для протоколирования). |
Opened_tables | Число таблиц, которые были
открыты. |
Select_full_join | Число объединений без ключей
(должно быть 0). |
Select_full_range_join | Число объединений, где
использовали поиск диапазона по таблице ссылок. |
Select_range | Число объединений, где использовали
диапазоны в первой таблице. Это обычно не критическое, даже если это большое.
|
Select_scan | Число объединений, где просмотрели
первую таблицу. |
Select_range_check | Число объединений без ключей,
где проверяем использование ключа после каждой строки (должно быть 0). |
Questions | Число запросов, посланных серверу.
|
Slave_open_temp_tables | Число временных таблиц, в
настоящее время открытых подчиненным процессом. |
Slow_launch_threads | Число потоков, которым
понадобилось для установления соединения больше, чем
slow_launch_time . |
Slow_queries | Число запросов, которые заняли
больше, чем long_query_time . |
Sort_merge_passes | Число объединений,
потребовавших сортировки. Если это значение большое, Вы должны рассмотреть
увеличение sort_buffer . |
Sort_range | Число сортировок с диапазонами. |
Sort_rows | Число сортируемых строк. |
Sort_scan | Число сортировок выполненных,
просматривая таблицу. |
Table_locks_immediate | Сколько раз блокировка
таблицы применялась сразу. Доступно после версии 3.23.33. |
Table_locks_waited | Сколько раз блокировка
таблицы не могла быть применена сразу и пришлось ждать. Если это значение
высоко, и Вы имеете проблемы с эффективностью, Вы должны сначала
оптимизировать Ваши запросы, а затем или разделить таблицу, или использовать
репликацию. Доступно после 3.23.33. |
Threads_cached | Число потоков в кэше. |
Threads_connected | Сколько в настоящее время
открыто подключений. |
Threads_created | Число потоков созданных, чтобы
обработать подключения. |
Threads_running | Число потоков, которые сейчас
не бездействуют. |
Uptime | Сколько секунд сервер уже работает. |
Некоторые комментарии относительно вышеупомянутого:
- Если
Opened_tables велико, то переменная
table_cache , вероятно, слишком маленькая.
- Если
key_reads велико, то переменная key_cache ,
вероятно, слишком маленькая. Коэффицент кэширования может быть вычислен по
формуле: key_reads /key_read_requests .
- Если
Handler_read_rnd велико, то Вы, вероятно, имеете много
запросов, которые требуют, чтобы MySQL просматривал целые таблицы, или Вы
имеете объединения, которые не используют ключи правильно.
- Если
Threads_created велико, то следует увеличить переменную
thread_cache_size .
SHOW VARIABLES [LIKE wild]
SHOW VARIABLES показывает значения некоторых переменных
системы MySQL. Вы можете также получить эту информацию, используя команду
mysqladmin variables .
Вывод походит на показанное ниже, хотя формат и числа будут иными:
+-------------------------+---------------------------+
| Variable_name | Value |
+-------------------------+---------------------------+
| ansi_mode | OFF |
| back_log | 50 |
| basedir | /my/monty/ |
| bdb_cache_size | 16777216 |
| bdb_log_buffer_size | 32768 |
| bdb_home | /my/monty/data/ |
| bdb_max_lock | 10000 |
| bdb_logdir | |
| bdb_shared_data | OFF |
| bdb_tmpdir | /tmp/ |
| binlog_cache_size | 32768 |
| concurrent_insert | ON |
| connect_timeout | 5 |
| datadir | /my/monty/data/ |
| delay_key_write | ON |
| delayed_insert_limit | 100 |
| delayed_insert_timeout | 300 |
| delayed_queue_size | 1000 |
| flush | OFF |
| flush_time | 0 |
| have_bdb | YES |
| have_innodb | YES |
| have_raid | YES |
| have_ssl | NO |
| init_file | |
| interactive_timeout | 28800 |
| join_buffer_size | 131072 |
| key_buffer_size | 16776192 |
| language | /my/monty/share/english/ |
| large_files_support | ON |
| log | OFF |
| log_update | OFF |
| log_bin | OFF |
| log_slave_updates | OFF |
| long_query_time | 10 |
| low_priority_updates | OFF |
| lower_case_table_names | 0 |
| max_allowed_packet | 1048576 |
| max_binlog_cache_size | 4294967295 |
| max_connections | 100 |
| max_connect_errors | 10 |
| max_delayed_threads | 20 |
| max_heap_table_size | 16777216 |
| max_join_size | 4294967295 |
| max_sort_length | 1024 |
| max_tmp_tables | 32 |
| max_write_lock_count | 4294967295 |
| myisam_recover_options | DEFAULT |
| myisam_sort_buffer_size | 8388608 |
| net_buffer_length | 16384 |
| net_read_timeout | 30 |
| net_retry_count | 10 |
| net_write_timeout | 60 |
| open_files_limit | 0 |
| pid_file | /my/monty/data/donna.pid |
| port | 3306 |
| protocol_version | 10 |
| record_buffer | 131072 |
| query_buffer_size | 0 |
| safe_show_database | OFF |
| server_id | 0 |
| skip_locking | ON |
| skip_networking | OFF |
| skip_show_database | OFF |
| slow_launch_time | 2 |
| socket | /tmp/mysql.sock |
| sort_buffer | 2097116 |
| table_cache | 64 |
| table_type | MYISAM |
| thread_cache_size | 4 |
| thread_stack | 65536 |
| tmp_table_size | 1048576 |
| tmpdir | /tmp/ |
| version | 3.23.29a-gamma-debug |
| wait_timeout | 28800 |
+-------------------------+---------------------------+
Каждая опция описана ниже. Значения для буферных размеров, длин и размеров
стека даны в байтах. Вы можете определять значения с суффиксами
`K' или `M', чтобы указать килобайты или мегабайты.
Например, 16M указывает 16 мегабайтов. Регистр символов суффикса
не имеет значения: 16M и 16m эквивалентны.
ansi_mode .
ON , если mysqld запущен с опцией
--ansi . Подробности в разделе
"1.4.3 Запуск MySQL в режиме ANSI".
back_log
- Сколько ожидающих обработки подключений может иметь MySQL. Это важно,
когда главный процесс MySQL получает ОЧЕНЬ много запросов
подключения за очень короткое время. Затем требуется некоторое время (хотя
очень немного) для основного процесса, чтобы проверить подключение и
запустить новый поток. Значение
back_log указывает, сколько
запросов могут быть сложены в стек в течение этого короткого времени прежде,
чем MySQL на мгновение остановит ответы на новые запросы. Вы должны увеличить
это только, если Вы ожидаете большое количество подключений за короткий
периоде времени (сервер работает интенсивно).
Другими словами, это значение задает размер слушающей очереди для входящих
подключений TCP/IP. Ваша операционная система имеет собственное ограничение
размера этой очереди. В Unix man-страница listen(2) должна
иметь большее количество деталей. Проверьте документацию на Вашу ОС для
выяснения максимального значения для этой переменной. Попытка устанавливать
back_log выше, чем это ограничение операционной системы, будет
неэффективна, хотя и безопасна.
basedir
- Значение опции
--basedir .
bdb_cache_size
- Буфер, который распределен, чтобы кэшировать индекс и строки для
BDB -таблиц. Если Вы не используете таблицы BDB , Вы
должны запустить mysqld с опцией --skip-bdb , чтобы
не тратить впустую память для этого кэша.
bdb_log_buffer_size
- Буфер, который распределен, чтобы кэшировать протоколы для
BDB -таблиц. Если Вы не используете таблицы BDB , Вы
должны запустить mysqld с опцией --skip-bdb , чтобы
не тратить впустую память для этого кэша.
bdb_home
- Значение опции
--bdb-home .
bdb_max_lock
- Максимальное число блокировок (по умолчанию 1000), которые Вы можете
иметь активным на BDB-таблице. Вы должны увеличить это значение, если Вы
получаете ошибки типа
bdb: Lock table is out of available locks
или Got error 12 from ... , когда Вы делаете длинные транзакции,
или когда mysqld должен исследовать много строк, чтобы
вычислить и обработать запрос.
bdb_logdir
- Значение опции
--bdb-logdir .
bdb_shared_data
ON , если Вы используете --bdb-shared-data .
bdb_tmpdir
- Значение опции
--bdb-tmpdir .
binlog_cache_size .
- Размер кэша, чтобы хранить инструкции SQL для двоичного файла регистрации
в течение транзакции. Если Вы часто используете большие, многооператорные
транзакции, Вы можете увеличить это значение, чтобы получить большую
эффективность. Подробности в разделе "9.2.1
Синтаксис
BEGIN/COMMIT/ROLLBACK ".
character_set
- Набор символов по умолчанию.
character_sets
- Поддерживаемые наборы символов.
concurrent_inserts
- Если
ON (значение по умолчанию), MySQL позволит Вам
использовать INSERT на таблицах системы MyISAM в то
же самое время, когда Вы выполняете на них запросы SELECT .
Вы можете выключить эту опцию запуском mysqld с параметрами
--safe или --skip-new .
connect_timeout
- Число секунд, которое сервер
mysqld ждет подключения перед
ответом Bad handshake .
datadir
- Значение опции
--datadir .
delay_key_write
- Если включено (по умолчанию), MySQL учитывает опцию
delay_key_write в CREATE TABLE . Это означает, что
буфер ключей для таблиц с этой опцией не будет сбрасываться на каждой
индексной модификации, а только когда таблица будет закрыта. Это ускорит
работу по записи, но Вы должны добавить автоматическую проверку всех таблиц
командой myisamchk --fast --force . Обратите внимание, что, если
Вы запускаете mysqld с опцией
--delay-key-write-for-all-tables , это означает, что все таблицы
будут обрабатываться так, как будто они были созданы с опцией
delay_key_write . Вы можете очищать этот флажок, запуская
mysqld с параметрами --skip-new или
--safe-mode .
delayed_insert_limit
- После вставки
delayed_insert_limit строк, драйвер
INSERT DELAYED проверит, имеется ли любая задержка инструкций
SELECT . Если так, это позволяет им выполниться перед
продолжением работ с таблицей.
delayed_insert_timeout
- Сколько времени поток
INSERT DELAYED должен ждать инструкции
INSERT перед своим завершением.
delayed_queue_size
- Каких размеров (в строках) очередь должна быть распределена для обработки
INSERT DELAYED . Если очередь заполняется, любой пользователь,
который вызвал INSERT DELAYED , будет ждать до появления
свободного места в очереди.
flush
ON , если MySQL был запущен с опцией --flush .
flush_time
- Если это установлено в значение, отличное от нуля, то каждые
flush_time секунд все таблицы будут закрыты (чтобы освободить
ресурсы и сбросить данные на диск). Я рекомендую эту опцию только на Win95,
Win98 или на системах, где Вы имеете очень небольшое количество ресурсов.
have_bdb
YES , если mysqld поддерживает таблицы Berkeley
DB. DISABLED , если использован параметр
--skip-bdb .
have_innodb
YES , если mysqld поддерживает таблицы InnoDB.
DISABLED , если использован параметр --skip-innodb .
have_raid
YES , если mysqld поддерживает опцию
RAID .
have_ssl
YES , если mysqld поддерживает SSL (шифрование)
по протоколу клиент/сервер.
init_file
- Имя файла, определенного в параметре
--init-file при запуске
сервера. Это файл инструкций SQL, которые Вы хотите всегда выполнять при
каждом запуске сервера.
interactive_timeout
- Число секунд, которое сервер ждет действий на активном подключении перед
его закрытием. Интерактивный пользователь определен как пользователь, который
применяет опцию
CLIENT_INTERACTIVE для
mysql_real_connect() . См. также wait_timeout .
join_buffer_size
- Размер буфера, который используется для полных объединений (объединения,
которые не используют индексы). Буфер будет распределен один раз для каждого
полного объединения между двумя таблицами. Увеличьте это значение, чтобы
ускорить полное объединение, если добавление индексов невозможно. Обычно
самый лучший способ получать быстрые объединения состоит в том, чтобы
добавить индексы таблицы.
key_buffer_size
- Индексные блоки буферизированы и разделяются всеми потоками.
key_buffer_size как раз и задает размер буфера, используемого
для индексных блоков. Увеличьте это значение, чтобы улучшить индексную
обработку. Но если Вы сделаете его слишком большим (больше, чем 50% общей
памяти?), Ваша система может начать использовать своп и стать ДЕЙСТВИТЕЛЬНО
медленной. Не забудьте, что поскольку MySQL не кэширует чтение данных, Вы
должны оставить некоторый участок памяти для кэша файловой системы ОС.
Вы можете проверять эффективность буфера ключей выполнением show
status и изучением переменных Key_read_requests ,
Key_reads , Key_write_requests и
Key_writes . Коэффициент Key_reads/Key_read_request
обычно должен быть < 0.01. Key_write/Key_write_requests
обычно близко к 1, если Вы используете обычное обновление/удаление, но может
быть намного меньше, если Вы имеете тенденцию делать модификации, которые
воздействуют на много данных сразу, или если Вы используете
delay_key_write . Подробности в разделе
"4.10 Синтаксис SHOW ".
Чтобы получить заметное ускорение при записи многих строк сразу,
используйте LOCK TABLES . Подробности в разделе
"9.2.2 Синтаксис LOCK
TABLES/UNLOCK TABLES ".
language
- Язык, используемый для сообщений об ошибках.
large_file_support
- Если
mysqld компилировался с параметрами для поддержки
больших файлов.
locked_in_memory
- Если
mysqld был блокирован в памяти опцией
--memlock
log
- Если включено протоколирование всех запросов.
log_update
- Регистрации всех запросов допускается.
log_bin
- Файл регистрации модификации включен.
log_slave_updates
- Модификации с подчиненного регистрируются.
long_query_time
- Если запрос занимает больше, чем заданное здесь время (в секундах),
счетчик
Slow_queries будет увеличен. Если Вы используете
--log-slow-queries , запрос будут регистрироваться в файле
регистрации медленных запросов.
lower_case_table_names
- Если установлено в 1, имена таблиц будут сохранены на диске в нижнем
регистре, и они не будут чувствительны к регистру. Подробности в разделе
"3.3 Чувствительность к
регистру символов в именах".
max_allowed_packet
- Максимальный размер одного пакета. Буфер сообщений инициализирован для
размера в
net_buffer_length байт, но может вырасти до
max_allowed_packet байт, когда необходимо. Это значение по
умолчанию маленькое, но позволяет захватывать большие (возможно,
неправильные) пакеты. Вы должны увеличить это значение, если используете
большие столбцы BLOB . Он должно быть столь же большим как самый
крупный BLOB , который Вы хотите использовать. Текущий протокол
ограничивает max_allowed_packet размером 16M.
max_binlog_cache_size
- Если многооператорная транзакция требует больше, чем этот объем памяти,
выйдет ошибочка "Multi-statement transaction required more than
'max_binlog_cache_size' bytes of storage".
max_binlog_size
- Доступно после версии 3.23.33. Если запись в двоичный файл регистрации
(для репликации) превышает данное значение, выполняется ротация файлов. Вы не
можете устанавливать это значение меньше, чем в 1024 байта, или больше, чем
1 GB. Значение по умолчанию 1 GB.
max_connections
- Число одновременно допущенных клиентов. Увеличение этого значения
увеличивает число описателей файла, которых требует
mysqld .
Подробности в разделе "11.2.5
Ошибка Too many connections ".
max_connect_errors
- Если имеется больше, чем это число, прерванных подключений с хоста, хост
будет блокирован, и никакие подключения с него станут невозможными вообще.
Вы можете снова открыть хост командой
FLUSH HOSTS .
max_delayed_threads
- Не запускать больше, чем это число потоков, чтобы обработать инструкции
INSERT DELAYED . Если Вы попробуете вставлять данные в новую
таблицу после того, как все потоки INSERT DELAYED будут заняты,
строка будет вставлена, как будто атрибут DELAYED не был
определен вовсе, то есть немедленно.
max_heap_table_size
- Не позволять создание heap-таблиц больше этого числа.
max_join_size
- Объединения, которые, вероятно, собираются читать больше, чем сказано в
max_join_size , возвращают ошибку. Установите это значение, если
Ваши пользователи имеют тенденцию выполнять объединения, которые испытывают
недостаток предложения WHERE , занимают много времени или
возвращают миллионы строк.
max_sort_length
- Число байтов, чтобы использовать при сортировке значений
BLOB или TEXT (только первые
max_sort_length байтов из каждого значения реально используются,
остальное игнорируется вообще).
max_user_connections
- Максимальное число активных подключений для одного пользователя (0 =
нет никаких ограничений).
max_tmp_tables
- Максимальное число временных таблиц, которые пользователь может хранить
открытыми в один момент времени.
max_write_lock_count
- После этого количества блоикоровок записи допускается выполнение между
делом блокировок чтения.
myisam_recover_options
- Значение параметра
--myisam-recover .
myisam_sort_buffer_size
- Буфер, который распределен для сортировки индекса при выполнении
REPAIR или при создании индексов с помощью CREATE
INDEX или ALTER TABLE .
myisam_max_extra_sort_file_size .
- Если создание временного файла для быстрой генерации индекса много
больше, чем использование кэша ключей. то предпочтительнее метод кэша. Это
значение используется, главным образом, чтобы вынудить длинные символьные
ключи в больших таблицах использовать более медленный метод создания индекса.
ОБРАТИТЕ ВНИМАНИЕ, что этот параметр задан в мегабайтах!
myisam_max_sort_file_size
- Максимальный размер временного файла, который MySQL позволяет
использовать при освежении индекса (в течение
REPAIR ,
ALTER TABLE или LOAD DATA INFILE . Если размер файла
больше, чем это значение, индекс будет создан через кэш ключа, который
является более медленным. ОБРАТИТЕ ВНИМАНИЕ, что этот
параметр задан в мегабайтах!
net_buffer_length
- Буфер связи будет приведен к этому размеру между запросами. Это обычно не
должно изменяться, но если Вы имеете очень мало памяти, Вы можете
устанавливать это значение в ожидаемый размер запроса. То есть в ожидаемую
длину инструкций SQL, посланных клиентами. Если запрос превышает эту длину,
буфер будет автоматически расширен до
max_allowed_packet байт.
net_read_timeout
- Сколько секунд ждать данные из подключения перед прерыванием чтения.
Обратите внимание, что, когда мы не ожидаем данные из подключения, время
ожидания определено через
write_timeout . См. также
slave_read_timeout .
net_retry_count
- Если чтение на коммуникационном порте прервано, оно повторится несколько
раз перед отменой попыток связи. Это значение должно быть очень велико на
FreeBSD , поскольку там внутренние прерывания посланы всем
серверным процессам чтения.
net_write_timeout
- Число секунд ожидания блока, который будет записан в подключение.
open_files_limit
- Если это не 0,
mysqld использует это значение, чтобы
резервировать описатели файла для применения с setrlimit() . Если
это значение = 0, mysqld резервирует
max_connections*5 или max_connections+table_cache*2
(используется большее из этих значений) число файлов. Вы должны попробовать
увеличивать это значение, если mysqld выдает Вам ошибку
'Too many open files'.
pid_file
- Значение параметра
--pid-file .
port
- Значение параметра
--port .
protocol_version
- Версия протокола, используемого сервером MySQL.
record_buffer
- Каждый поток, который делает последовательный просмотр, распределяет
буфер этого размера для каждой таблицы, которую просматривает. Если Вы
делаете много последовательных просмотров, стоит увеличить это значение.
record_rnd_buffer
- При чтении строк в сортируемом порядке после сортировки, строки читаются
через этот буфер, чтобы избежать дисковых поисков. Если не задан, берется
значение из переменной
record_buffer .
query_buffer_size
- Начальное распределение буфера запросов. Если большинство Ваших запросов
имеет большую длину, Вы должны увеличить это!
safe_show_databases
- Не показывать базы данных, для которых пользователь не имеет привилегий
базы данных или таблицы. Это может улучшать защиту. См. также
skip_show_databases .
server_id
- Значение опции
--server-id .
skip_locking
- Если OFF,
mysqld использует внешнюю блокировку.
skip_networking
- Если ON, допустимы только локальные (сокетные) подключения.
skip_show_databases
- Это предотвращает выполнение
SHOW DATABASES , если
пользователь не имеет привилегии PROCESS_PRIV . Это может
улучшить защиту. См. также safe_show_databases .
slave_read_timeout
- Число секунд, которое надлежит ждать данные из главного/подчиненного
подключения перед прерыванием чтения.
slow_launch_time
- Если создание потока занимает больше времени, чем это значение (в
секундах), счетчик
Slow_launch_threads будет увеличен.
socket
- Unix-сокет, используемый сервером.
sort_buffer
- Каждый поток, который должен делать сортировку, распределяет буфер этого
размера. Увеличьте это значение для ускорения операций
ORDER BY
или GROUP BY . Подробности в разделе
"11.4.4 Где MySQL
хранит временные файлы".
table_cache
- Число открытых таблиц для всех потоков. Увеличение этого значения
увеличивает число описателей файла, которых требует
mysqld .
MySQL нуждается в двух описателях файла для каждой уникальной открытой
таблицы. Вы можете проверять, должны ли Вы увеличить кэш таблицы, анализируя
переменную Opened_tables . Подробности в разделе
"4.10 Синтаксис SHOW ".
Удостоверьтесь, что Ваша операционная система может обрабатывать число
описателей файла, подразумеваемых установкой table_cache . Если
table_cache слишком велико, MySQL может исчерпать описатели
файла и начать сбоить.
table_type
- Тип таблицы по умолчанию.
thread_cache_size
- Сколько потоков мы должны хранить в кэше для повторного использования.
Когда пользователь отсоединяется, потоки пользователя будут помещены в кэш,
если нет больше, чем
thread_cache_size потоков. Все новые потоки
сначала принимаются из кэша и только, когда кэш пуст, создаются новые. Эта
переменная может увеличиваться, чтобы улучшить эффективность, если Вы имеете
много новых подключений.
thread_concurrency
- На Solaris
mysqld вызовет thr_setconcurrency()
с этим значением. thr_setconcurrency() разрешает прикладной
программе давать системе управления данные относительно желательного числа
потоков, которые должны быть выполнены в одно и то же время.
thread_stack
- Размер стека для каждого потока. Многие из ограничений, обнаруженных
тестом
crash-me , зависят от этого значения. Значение по
умолчанию достаточно большое для нормальной работы.
timezone
- Таймзона (часовой пояс) для сервера.
tmp_table_size
- Если временная таблица в памяти превышает этот размер, MySQL
автоматически преобразует ее в таблицу
MyISAM на диске.
Увеличьте значение tmp_table_size , если Вы делаете много
продвинутых запросов GROUP BY , и Вы имеете много памяти.
tmpdir
- Каталог, используемый для временных файлов и таблиц.
version
- Код версии сервера.
wait_timeout
- Число секунд, которое сервер ждет действий на подключении перед его
закрытием. См. также
interactive_timeout .
Раздел, который описывает настройку MySQL, содержит некоторую информацию
относительно того, как настроить вышеупомянутые переменные.
SHOW LOGS показывает Вам информацию относительно состояния
существующих журналов. В настоящее время этот вызов отображает только
информацию относительно журналов Berkeley DB.
File показывает полный путь к журналу.
Type показывает тип журнала (BDB для журналов
типа Berkeley DB).
Status показывает состояние журнала (FREE если
файл может быть удален, или IN USE если файл необходим
подсистеме транзакций).
SHOW PROCESSLIST показывает Вам, которые процессы работают.
Вы можете также получать эту информацию, используя команду mysqladmin
processlist . Если Вы имеете привилегию process, Вы
можете видеть все процессы. Иначе Вы можете видеть только Ваши собственные
процессы. Если Вы не используете опцию FULL , то только первые
100 символов каждого запроса будут показаны. Подробности в разделе
"4.9 Синтаксис KILL ".
Эта команда очень полезна, если Вы получаете сообщения об ошибках 'too
many connections' и хотите выяснить, что происходит. MySQL резервирует одно
подключение дополнительно для пользователя с привилегией
Process_priv , чтобы гарантировать, что Вы всегда способны ко
входу в систему и ее проверке (эта ситуация не дает такую же привилегию всем
Вашим пользователям).
SHOW GRANTS FOR user вносит в список команды, который должны
быть выданы, чтобы дублировать права пользователя. Например:
mysql> SHOW GRANTS FOR root@localhost;
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
Показывает инструкцию CREATE TABLE , которая создаст
данную таблицу. Например:
mysql> show create table t\G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE t (
id int(11) default NULL auto_increment,
s char(60) default NULL,
PRIMARY KEY (id)
) TYPE=MyISAM
MySQL может, начиная с версии 3.22, читать заданные по умолчанию параметры
запуска для клиентов и сервера из файлов опций.
MySQL читает заданные по умолчанию параметры из следующих файлов (в Unix):
Имя файла | Зачем он нужен
|
/etc/my.cnf | Глобальные опции для всех |
DATADIR/my.cnf | Опции для сервера |
defaults-extra-file | Файл, определенный через
--defaults-extra-file=# |
~/.my.cnf | Специфические для пользователей опции
|
DATADIR представляет собой каталог данных MySQL (обычно
/usr/local/mysql/data для бинарного дистрибутива или
/usr/local/var для установки из исходников). Обратите внимание,
что это тот каталог, который был определен в конфигурации, а не указан в
опции --datadir при запуске mysqld ! Параметр
--datadir не имеет никакого эффекта в то время, когда сервер
ищет файлы опций потому, что он их ищет прежде, чем обрабатывает любые
параметры командной строки.
MySQL читает заданные по умолчанию параметры из следующих файлов
(только в ОС Windows):
Имя файла | Зачем он нужен
|
windows-system-directory\my.ini | Глобальные опции
|
C:\my.cnf | Глобальные опции |
C:\mysql\data\my.cnf | Опции для сервера |
Обратите внимание, что в Windows Вы должны определить все пути с
/ вместо \ . Если Вы используете \ , Вы
должны определить это дважды, поскольку \ символ ESC в MySQL.
MySQL пробует читать файлы опции в порядке,
перечисленном выше. Если есть несколько файлов настроек, используется опция,
определенная в том файле, который читается позже. Параметры, определенные в
командной строке имеют приоритет над параметрами, определенными в любом файле
опций. Некоторые параметры могут быть определены, используя системные
переменные. Параметры, определенные в командной строке или в файлах опций
имеют приоритет над значением соответствующей системной переменной.
Следующие программы поддерживают файлы опций: mysql ,
mysqladmin , mysqld , mysqldump ,
mysqlimport , mysql.server , myisamchk и
myisampack .
Вы можете использовать файлы опций, чтобы определить любую длинную опцию,
которую программа поддерживает! Выполните программу с параметром
--help , чтобы получить список доступных параметров.
Файл опций может содержать строки следующих форм:
#comment
- Строки комментария начинаются с `#' или с `;'.
Пустые строки игнорируются.
[group]
group представляет собой имя программы или группы, для
которой Вы хотите устанавливать параметры. После строки группы любая строка
option или set-variable обращается к именованной
группе, пока не будет достигнут конец файла опций или другая строка группы.
option
- Эквивалентно
--option в командной строке.
option=value
- Эквивалентно
--option=value в командной строке.
set-variable = variable=value
- Эквивалентно
--set-variable variable=value в командной
строке. Этот синтаксис должен использоваться, чтобы установить переменную
mysqld .
Группа client позволяет Вам определять параметры, которые
обращаются ко всей клиентуре MySQL (но не к mysqld ). Это
самая подходящая группа, чтобы определить в ней пароль, который Вы
используете, чтобы соединиться с сервером. Но удостоверьтесь, что файл опций
читаем и перезаписываем только Вами.
Обратите внимание, что для параметров и значений все конечные и начальные
пробелы автоматически удалены. Вы можете использовать управляющие
последовательности \b, \t, \n,
\r, \\ и \s в Вашей строке
(\s==пробел).
Имеется типичный глобальный файл опций:
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
socket=/tmp/mysql.sock
set-variable = key_buffer_size=16M
set-variable = max_allowed_packet=1M
[mysqldump]
quick
Имеется типичный файл опций пользователя:
[client]
# The following password will be sent to all standard MySQL clients
password=my_password
[mysql]
no-auto-rehash
set-variable=connect_timeout=2
[mysqlhotcopy]
interactive-timeout
Если Вы имеете дистрибутив с исходниками, Вы найдете,
что типовые файлы конфигурации называются my-xxxx.cnf в каталоге
support-files. А вот в двоичном дистрибутиве смотрите в каталоге
DIR/support-files, где DIR задает имя пути к каталогу
установки MySQL (обычно /usr/local/mysql). В настоящее время
имеются типовые файлы конфигурации для маленькой, средней, большой и очень
большой системы. Вы можете копировать my-xxxx.cnf в Ваш основной
каталог (переименуйте копию в .my.cnf), чтобы экспериментировать.
Вся клиентура MySQL, которая поддерживает файлы опций,
использует и следующие параметры:
--no-defaults | Не читать любые файлы опций. |
--print-defaults | Печатать имя программы и все параметры,
которые ей передаются. |
--defaults-file=full-path-to-default-file | Использовать только
данный файл конфигурации. |
--defaults-extra-file=full-path-to-default-file | Читать этот
файл конфигурации после глобального файла опций, но перед чтением
файла настроек пользователя. |
Обратите внимание, что вышеупомянутые параметры должны быть первыми в
командной строке, чтобы они работали! Однако, --print-defaults
может использоваться непосредственно после команды
--defaults-xxx-file .
В скриптах оболочки Вы можете использовать команду
my_print_defaults, чтобы анализировать файлы конфигурации:
shell> my_print_defaults client mysql
--port=3306
--socket=/tmp/mysql.sock
--no-auto-rehash
Вышеупомянутый вывод содержит все параметры для групп client и mysql.
|
|