Spec-Zone .ru
спецификации, руководства, описания, API
|
myisampack
служебные сжатия MyISAM
таблицы. myisampack работает, сжимая каждый столбец в таблице
отдельно. Обычно, myisampack упаковывает файл данных 40 % к 70 %.
Когда таблица используется позже, чтения сервера в память, информация должна была распаковать столбцы. Это приводит к намного лучшей производительности, получая доступ к отдельным строкам, потому что только необходимо распаковать точно одну строку.
Использование MySQL mmap()
когда возможный выполнять память, отображающуюся на
сжатых таблицах. Если mmap()
не работает, MySQL отступает к нормальным операциям
файла чтения-записи.
Пожалуйста, отметьте следующее:
Если mysqld сервер был вызван с внешней отключенной блокировкой, это не хорошая идея вызвать myisampack, если таблица могла бы быть обновлена сервером во время процесса упаковки. Является самым безопасным сжать таблицы с остановленным сервером.
После упаковки таблицы это становится только для чтения. Это обычно предназначается (такой как тогда, когда доступ упакованные таблицы на CD).
Вызовите myisampack как это:
shell> myisampack [options
]
file_name
...
Каждым параметром имени файла должно быть имя индексирования (.MYI
) файл. Если Вы
не находитесь в каталоге базы данных, следует определить путь к файлу. Допустимо опустить .MYI
расширение.
После того, как Вы сжимаете таблицу с myisampack, следует использовать myisamchk - запрос, чтобы восстановить индексирует. Раздел 4.6.3, "myisamchk — Утилита Табличного обслуживания MyISAM" .
myisampack поддерживает следующие опции. Это также читает файлы опции и поддерживает опции для того, чтобы обработать их описанный в Разделе 4.2.3.4, "Параметры командной строки, которые Влияют на Обработку Файла опции".
--help
, -?
Выведите на экран сообщение справки и выход.
--backup
, -b
Сделайте резервное копирование файла данных каждой таблицы, используя имя
. tbl_name
.OLD
Каталог, где наборы символов устанавливаются. См. Раздел 10.5, "Конфигурация Набора символов".
--debug[=
,
debug_options
]-# [
debug_options
]
Запишите журнал отладки. Типичное debug_options
строка
'd:t:o,
. Значение
по умолчанию file_name
''d:t:o'
.
--force
, -f
Произведите упакованную таблицу, даже если это становится больше чем оригинал или если промежуточный
файл от более раннего вызова myisampack существует. (myisampack создает промежуточный названный файл
в каталоге базы
данных, в то время как это сжимает таблицу. Если Вы уничтожаете myisampack, tbl_name
.TMD.TMD
файл не мог бы быть удален.) Обычно, myisampack выходит с ошибкой, если он находит
это
существует.
С tbl_name
.TMD--force
, myisampack упаковывает таблицу так или иначе.
--join=
, big_tbl_name
-j
big_tbl_name
Присоединитесь ко всем таблицам, названным на командной строке в единственную упакованную таблицу
big_tbl_name
. У всех таблиц, которые должны быть
объединены, должна быть идентичная структура (те же самые
имена столбцов и типы, то же самое индексирует, и т.д).
big_tbl_name
не должен существовать до работы соединения.
Все исходные таблицы, названные на командной строке, которая будет объединена в big_tbl_name
должен существовать. Исходные таблицы
читаются из работы соединения, но не изменяются. Работа соединения не создает a .frm
файл для big_tbl_name
,
так после концов работы соединения, скопируйте .frm
файл от одной из
исходных таблиц и имени это
.
big_tbl_name
.frm
--silent
, -s
Тихий режим. Запишите вывод только, когда ошибки происходят.
--test
, -t
Фактически не упаковывайте таблицу, только тестируйте упаковку этого.
--tmpdir=
, path
-T
path
Используйте именованный каталог в качестве расположения, где myisampack создает временные файлы.
--verbose
, -v
Многословный режим. Запишите информацию о продвижении работы упаковки и ее результата.
--version
, -V
Выведите на экран информацию о версии и выход.
--wait
, -w
Ожидайте и повторите, если таблица используется. Если mysqld сервер был вызван с внешней отключенной блокировкой, это не хорошая идея вызвать myisampack, если таблица могла бы быть обновлена сервером во время процесса упаковки.
Следующая последовательность команд иллюстрирует типичный табличный сеанс сжатия:
shell>ls -l station.*
-rw-rw-r-- 1 monty my 994128 Apr 17 19:00 station.MYD-rw-rw-r-- 1 monty my 53248 Apr 17 19:00 station.MYI-rw-rw-r-- 1 monty my 5767 Apr 17 19:00 station.frmshell>myisamchk -dvv station
MyISAM file: stationIsam-version: 2Creation time: 1996-03-13 10:08:58Recover time: 1997-02-02 3:06:43Data records: 1192 Deleted blocks: 0Datafile parts: 1192 Deleted data: 0Datafile pointer (bytes): 2 Keyfile pointer (bytes): 2Max datafile length: 54657023 Max keyfile length: 33554431Recordlength: 834Record format: Fixed lengthtable description:Key Start Len Index Type Root Blocksize Rec/key1 2 4 unique unsigned long 1024 1024 12 32 30 multip. text 10240 1024 1Field Start Length Type1 1 12 2 43 6 44 10 15 11 206 31 17 32 308 62 359 97 3510 132 3511 167 412 171 1613 187 3514 222 415 226 1616 242 2017 262 2018 282 2019 302 3020 332 421 336 422 340 123 341 824 349 825 357 826 365 227 367 228 369 429 373 430 377 131 378 232 380 833 388 434 392 435 396 436 400 437 404 138 405 439 409 440 413 441 417 442 421 443 425 444 429 2045 449 3046 479 147 480 148 481 7949 560 7950 639 7951 718 7952 797 853 805 154 806 155 807 2056 827 457 831 4shell>myisampack station.MYI
Compressing station.MYI: (1192 records)- Calculating statisticsnormal: 20 empty-space: 16 empty-zero: 12 empty-fill: 11pre-space: 0 end-space: 12 table-lookups: 5 zero: 7Original trees: 57 After join: 17- Compressing file87.14%Remember to run myisamchk -rq on compressed tablesshell>ls -l station.*
-rw-rw-r-- 1 monty my 127874 Apr 17 19:00 station.MYD-rw-rw-r-- 1 monty my 55296 Apr 17 19:04 station.MYI-rw-rw-r-- 1 monty my 5767 Apr 17 19:00 station.frmshell>myisamchk -dvv station
MyISAM file: stationIsam-version: 2Creation time: 1996-03-13 10:08:58Recover time: 1997-04-17 19:04:26Data records: 1192 Deleted blocks: 0Datafile parts: 1192 Deleted data: 0Datafile pointer (bytes): 3 Keyfile pointer (bytes): 1Max datafile length: 16777215 Max keyfile length: 131071Recordlength: 834Record format: Compressedtable description:Key Start Len Index Type Root Blocksize Rec/key1 2 4 unique unsigned long 10240 1024 12 32 30 multip. text 54272 1024 1Field Start Length Type Huff tree Bits1 1 1 constant 1 02 2 4 zerofill(1) 2 93 6 4 no zeros, zerofill(1) 2 94 10 1 3 95 11 20 table-lookup 4 06 31 1 3 97 32 30 no endspace, not_always 5 98 62 35 no endspace, not_always, no empty 6 99 97 35 no empty 7 910 132 35 no endspace, not_always, no empty 6 911 167 4 zerofill(1) 2 912 171 16 no endspace, not_always, no empty 5 913 187 35 no endspace, not_always, no empty 6 914 222 4 zerofill(1) 2 915 226 16 no endspace, not_always, no empty 5 916 242 20 no endspace, not_always 8 917 262 20 no endspace, no empty 8 918 282 20 no endspace, no empty 5 919 302 30 no endspace, no empty 6 920 332 4 always zero 2 921 336 4 always zero 2 922 340 1 3 923 341 8 table-lookup 9 024 349 8 table-lookup 10 025 357 8 always zero 2 926 365 2 2 927 367 2 no zeros, zerofill(1) 2 928 369 4 no zeros, zerofill(1) 2 929 373 4 table-lookup 11 030 377 1 3 931 378 2 no zeros, zerofill(1) 2 932 380 8 no zeros 2 933 388 4 always zero 2 934 392 4 table-lookup 12 035 396 4 no zeros, zerofill(1) 13 936 400 4 no zeros, zerofill(1) 2 937 404 1 2 938 405 4 no zeros 2 939 409 4 always zero 2 940 413 4 no zeros 2 941 417 4 always zero 2 942 421 4 no zeros 2 943 425 4 always zero 2 944 429 20 no empty 3 945 449 30 no empty 3 946 479 1 14 447 480 1 14 448 481 79 no endspace, no empty 15 949 560 79 no empty 2 950 639 79 no empty 2 951 718 79 no endspace 16 952 797 8 no empty 2 953 805 1 17 154 806 1 3 955 807 20 no empty 3 956 827 4 no zeros, zerofill(2) 2 957 831 4 no zeros, zerofill(1) 2 9
myisampack выводит на экран следующие виды информации:
normal
Число столбцов, для которых не используется никакая дополнительная упаковка.
empty-space
Число столбцов, содержащих значения, которые являются только пробелами. Они занимают один бит.
empty-zero
Число столбцов, содержащих значения, которые являются только двоичными нулями. Они занимают один бит.
empty-fill
Число целочисленных столбцов, которые не занимают полный диапазон байта их типа. Они изменяются на
меньший тип. Например, a BIGINT
столбец (восемь байтов) может быть сохранен как a TINYINT
столбец (один байт), если все его значения находятся в
диапазоне от -128
к 127
.
pre-space
Число десятичных столбцов, которые сохранены продвижением пробелов. В этом случае каждое значение содержит счет для числа продвижения пробелов.
end-space
Число столбцов, у которых есть много конечных пробелов. В этом случае каждое значение содержит счет для числа конечных пробелов.
table-lookup
У столбца было только небольшое количество различных значений, которые были преобразованы в ENUM
перед сжатием Хафмана.
zero
Число столбцов, для которых все значения являются нулем.
Original trees
Начальное число деревьев Хафмана.
After join
Число отличных деревьев Хафмана, оставленных после присоединяющихся деревьев оставлять некоторое свободное место заголовка.
После того, как таблица была сжата, Field
строки, выведенные на экран myisamchk-dvv, включают дополнительную информацию о каждом
столбце:
Type
Тип данных. Значение может содержать любой из следующих дескрипторов:
constant
У всех строк есть то же самое значение.
no endspace
Не храните endspace.
no endspace, not_always
Не храните endspace и не делайте endspace сжатия для всех значений.
no endspace, no empty
Не храните endspace. Не храните пустые значения.
table-lookup
Столбец был преобразован в ENUM
.
zerofill(
N
)
Старшее значащее N
байты в значении всегда 0 и
не сохранены.
no zeros
Не храните нули.
always zero
Нулевые значения сохранены, используя один бит.
Huff tree
Число дерева Хафмана связалось со столбцом.
Bits
Число битов используется в дереве Хафмана.
После того, как Вы выполняете myisampack, следует выполнить myisamchk, чтобы воссоздать, любой индексирует. В это время можно также сортировать индексировать блоки и создать статистику, необходимую для оптимизатора MySQL, чтобы работать более эффективно:
shell> myisamchk -rq --sort-index --analyze tbl_name
.MYI
После того, как Вы установили упакованную таблицу в каталог базы данных MySQL, следует выполнить mysqladmin таблицы сброса, чтобы вынудить mysqld начать использовать новую таблицу.
Чтобы распаковать упакованную таблицу, используйте --unpack
опция к myisamchk.