4.4.8 Получение информации о таблице
Команды, представленные в этом разделе, используются для получения
описания таблицы или статистики по таблице. Более подробное выборочное
разъяснение вывода этих команд будет приведено ниже:
- myisamchk -d tbl_name
Выполняет myisamchk в "описательном режиме" для
вывода описания таблицы. Если MySQL использует опцию
--skip-locking
, то
myisamchk
может сообщить об ошибке для таблицы, обновляемой во время
исполнения утилиты. Однако поскольку myisamchk
не меняет таблицы в
описательном режиме, то никакого риска разрушения данных нет.
- myisamchk -d -v tbl_name
Для выдачи дополнительной информации по
действиям, выполняемым утилитой
myisamchk
, добавляется -v для указания
расширенного режима вывода сообщений.
- myisamchk -eis tbl_name
Отображается только наиболее важная информация
из таблицы. Работает медленно вследствие того, что приходится считывать
всю таблицу.
- myisamchk -eiv tbl_name
То же, что и
-eis
, но с сообщением о выполняемых
действиях.
Пример вывода myisamchk -d
:
MyISAM file: company.MYI
Record format: Fixed length
Data records: 1403698 Deleted blocks: 0
Recordlength: 226
table description:
Key Start Len Index Type
1 2 8 unique double
2 15 10 multip. text packed stripped
3 219 8 multip. double
4 63 10 multip. text packed stripped
5 167 2 multip. unsigned short
6 177 4 multip. unsigned long
7 155 4 multip. text
8 138 4 multip. unsigned long
9 177 4 multip. unsigned long
193 1 text
Пример вывода myisamchk -d -v
:
MyISAM file: company
Record format: Fixed length
File-version: 1
Creation time: 1999-10-30 12:12:51
Recover time: 1999-10-31 19:13:01
Status: checked
Data records: 1403698 Deleted blocks: 0
Datafile parts: 1403698 Deleted data: 0
Datafilepointer (bytes): 3 Keyfile pointer (bytes): 3
Max datafile length: 3791650815 Max keyfile length: 4294967294
Recordlength: 226
table description:
Key Start Len Index Type Rec/key Root Blocksize
1 2 8 unique double 1 15845376 1024
2 15 10 multip. text packed stripped 2 25062400 1024
3 219 8 multip. double 73 40907776 1024
4 63 10 multip. text packed stripped 5 48097280 1024
5 167 2 multip. unsigned short 4840 55200768 1024
6 177 4 multip. unsigned long 1346 65145856 1024
7 155 4 multip. text 4995 75090944 1024
8 138 4 multip. unsigned long 87 85036032 1024
9 177 4 multip. unsigned long 178 96481280 1024
193 1 text
Пример вывода myisamchk -eis
:
Checking MyISAM file: company
Key: 1: Keyblocks used: 97% Packed: 0% Max levels: 4
Key: 2: Keyblocks used: 98% Packed: 50% Max levels: 4
Key: 3: Keyblocks used: 97% Packed: 0% Max levels: 4
Key: 4: Keyblocks used: 99% Packed: 60% Max levels: 3
Key: 5: Keyblocks used: 99% Packed: 0% Max levels: 3
Key: 6: Keyblocks used: 99% Packed: 0% Max levels: 3
Key: 7: Keyblocks used: 99% Packed: 0% Max levels: 3
Key: 8: Keyblocks used: 99% Packed: 0% Max levels: 3
Key: 9: Keyblocks used: 98% Packed: 0% Max levels: 4
Total: Keyblocks used: 98% Packed: 17%
Records: 1403698 M.recordlength: 226
Packed: 0%
Recordspace used: 100% Empty space: 0%
Blocks/Record: 1.00
Record blocks: 1403698 Delete blocks: 0
Recorddata: 317235748 Deleted data: 0
Lost space: 0 Linkdata: 0
User time 1626.51, System time 232.36
Maximum resident set size 0, Integral resident set size 0
Non physical pagefaults 0, Physical pagefaults 627, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 639, Involuntary context switches 28966
Пример вывода myisamchk -eiv
:
Checking MyISAM file: company
Data records: 1403698 Deleted blocks: 0
- check file-size
- check delete-chain
block_size 1024:
index 1:
index 2:
index 3:
index 4:
index 5:
index 6:
index 7:
index 8:
index 9:
No recordlinks
- check index reference
- check data record references index: 1
Key: 1: Keyblocks used: 97% Packed: 0% Max levels: 4
- check data record references index: 2
Key: 2: Keyblocks used: 98% Packed: 50% Max levels: 4
- check data record references index: 3
Key: 3: Keyblocks used: 97% Packed: 0% Max levels: 4
- check data record references index: 4
Key: 4: Keyblocks used: 99% Packed: 60% Max levels: 3
- check data record references index: 5
Key: 5: Keyblocks used: 99% Packed: 0% Max levels: 3
- check data record references index: 6
Key: 6: Keyblocks used: 99% Packed: 0% Max levels: 3
- check data record references index: 7
Key: 7: Keyblocks used: 99% Packed: 0% Max levels: 3
- check data record references index: 8
Key: 8: Keyblocks used: 99% Packed: 0% Max levels: 3
- check data record references index: 9
Key: 9: Keyblocks used: 98% Packed: 0% Max levels: 4
Total: Keyblocks used: 9% Packed: 17%
- check records and index references
[кое-что опущено для краткости]
Records: 1403698 M.recordlength: 226 Packed: 0%
Recordspace used: 100% Empty space: 0% Blocks/Record: 1.00
Record blocks: 1403698 Delete blocks: 0
Recorddata: 317235748 Deleted data: 0
Lost space: 0 Linkdata: 0
User time 1639.63, System time 251.61
Maximum resident set size 0, Integral resident set size 0
Non physical pagefaults 0, Physical pagefaults 10580, Swaps 0
Blocks in 4 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 10604, Involuntary context switches 122798
Для использованной в предыдущих примерах таблицы размеры файла данных и
индексного файла были следующими:
-rw-rw-r-- 1 monty tcx 317235748 Jan 12 17:30 company.MYD
-rw-rw-r-- 1 davida tcx 96482304 Jan 12 18:35 company.MYM
Ниже приводятся пояснения по различным типам выдаваемой myisamchk
информации. ``keyfile'' означает индексный файл. ``Record'' (запись) и ``row''
(строка) являются синонимами:
- ISAM file - Имя (индексного) файла ISAM.
- Isam-version - Версия формата ISAM. На данный момент всегда 2.
- Creation time - Время создания файла данных.
- Recover time - Дата последнего восстановления индексного файла/файла
данных.
- Data records - Количество записей в таблице.
- Deleted blocks - Количество удаленных блоков, пространство для которых
все еще зарезервировано. Таблицу можно оптимизировать для сведения к
минимуму этого пространства (see section 4.4.6.10 Оптимизация таблиц).
- Datafile parts - Для динамического формата записей показывает количество
блоков данных. Для оптимизированной таблицы без фрагментированных записей
совпадает с
Data records
.
- Deleted data - Количество байтов удаленных данных, которые не были
затребованы. Можно оптимизировать таблицу, чтобы сделать этот объем
минимальным (see section 4.4.6.10 Оптимизация таблиц).
- Data file pointer - Размер указателя в файле данных (в байтах). Обычно
это 2, 3, 4 или 5 байтов. Для большинства таблиц достаточно 2 байтов, но
назначение размера пока невозможно контролировать из MySQL. Для
фиксированных таблиц указатель - это адрес записи, а для динамических -
адрес байта.
- Keyfile pointer - Размер указателя индексного файла в байтах. Обычно
составляет 1, 2 или 3 байта. Для большинства таблиц хватает 2 байтов, но
размер автоматически вычисляется MySQL. Указатель всегда является адресом
блока.
- Max datafile length - Максимальный размер файла данных таблицы
(`.MYD'-файл) в байтах.
- Max keyfile length - Максимальный размер индексного файла таблицы
(`.MYI-файла') в байтах.
- Recordlength - Размер отдельной записи в байтах.
- Record format - Формат, используемый для хранения строк таблицы. В
примерах, приведенных выше, использовался формат
Fixed length
. Другие
возможные значения: Compressed
и Packed
.
- table description - Список всех ключей в таблице. Для каждого ключа
представляется некоторая низкоуровневая информация:
- Key
Номер данного ключа.
- Start
Место в записи, где начинается данная часть индекса.
- Len
Длина данной части индекса. Для упакованных чисел длина всегда
должна равняться полной длине для столбца. Для строк длина может быть
меньше полной длины индексированной колонки, поскольку допускается
индексирование префикса столбца со значениями строками.
- Индекс
unique
или multip
. (multiple - повторяющийся/многократный)
Показывает, может ли одно значение встречаться в индексе многократно.
- Type
Тип данных данной части индекса. Это тип данных
ISAM
с возможными
вариантами - packed
, stripped
и empty
.
- Root
Адрес корневого индексного блока.
- Blocksize
Размер каждого индексного блока. По умолчанию равен 1024, но
значение можно изменить во время компиляции.
- Rec/key
Статистическое значение, используемое оптимизатором. Оно
показывает, сколько записей приходится на одно значение для данного ключа.
Для уникального ключа это соотношение всегда 1. Значение может быть
обновлено после загрузки таблицы (или значительного ее изменения)
посредством
myisamchk -a
. Если соотношение совсем не обновляется, то по
умолчанию принимается значение 30.
- В первом из приведенных примеров 9-й ключ является составным с двумя
частями.
- Keyblocks used - Процент использованных блоков ключей. Поскольку для
примера была взята таблица, совсем недавно реорганизованная при помощи
myisamchk
, то значения очень высоки (очень близки к теоретическому
максимуму).
- Packed - MySQL пытается упаковывать ключи с общим суффиксом. Это может
быть использовано только для ключей типа
CHAR
/VARCHAR
/DECIMAL
. Для длинных
строк, таких как имена, при помощи упаковки можно значительно уменьшить
занимаемое ими место. В третьем из приведенных примеров 4-й ключ состоит
из 10 символов и для него достигнуто 60%-е уменьшение в объеме.
- Max levels - Глубина B-дерева для данного ключа. В больших таблицах с
длинными ключами значение является большим.
- Records Количество строк в таблице.
- M.recordlength - Средняя длина записи. Для таблиц с фиксированной длиной
записи равняется точной длине записи.
- Packed - MySQL отбрасывает пробелы в конце строк. Значение
Packed
указывает на процент достигнутой этим экономии.
- Recordspace used - Процент использования файла данных.
- Empty space - На сколько процентов файл данных не использован.
- Blocks/Record - Среднее число блоков на запись (т.е. из какого числа
связей состоит фрагментированная запись). Отношение всегда 1,0 для таблиц
фиксированного формата. Важно, чтобы это значение было как можно ближе к
1,0. Если значение становится слишком большим, можно реорганизовать
таблицу с помощью
myisamchk
. Обращайтесь к разделу See section 4.4.6.10 Оптимизация таблиц.
- Recordblocks - Количество использованных блоков (связей). Для
фиксированного формата совпадает с количеством записей.
- Deleteblocks - Количество удаленных блоков (связей).
- Recorddata - Количество использованных байтов в файле данных.
- Deleted data - Количество удаленных (неиспользуемых) байтов в файле
данных.
- Lost space - Если запись при обновлении уменьшается, то теряется
некоторое пространство. Данное значение является суммой всех таких потерь
в байтах.
- Linkdata - При использовании динамического формата таблиц фрагменты
записи связываются с помощью указателей (каждый от 4 до 7 байтов).
Linkdata
- общий объем памяти, занимаемый всеми такими указателями.
Если таблица была сжата при помощи myisampack
, то myisamchk -d
выдает
дополнительную информацию о каждом столбце в таблице. Обращайтесь к
разделу See section 4.7.4 myisampack
, MySQL-генератор сжатых таблиц (только для чтения), где
приведен пример такой информации и пояснение к ней.