русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Myisampack, MySQL-генератор сжатых таблиц (только для чтения)


Дата добавления: 2015-07-09; просмотров: 579; Нарушение авторских прав


Утилита myisampack используется для сжатия таблиц MyISAM, а утилита pack_isam — для сжатия таблиц ISAM. Поскольку таблицы ISAM являются устаревшими, здесь будет рассматриваться только myisampack.

myisampack сжимает каждый столбец в таблице по отдельности. Информация, необходимая для декомпрессии столбцов, считывается в память при открытии таблицы. В результате обеспечивается более высокая производительность при доступе к отдельным записям, поскольку нужно распаковывать только одну запись, а не значительно больший по размеру дисковый блок, как при использовании программы Stacker в MS DOS. В среднем myisampack сжимает файл данных на 40%-70%.

MySQL использует отображение в памяти (mmap()) для сжатых таблиц, а если mmap() не работает, возвращается назад к нормальному режиму чтения/записи.

Обратите внимание на следующее:

  • После сжатия таблица доступна в режиме только для чтения. Это удобно, скажем, для записи на CD.
  • myisampack может также сжимать столбцы c типами BLOB или TEXT.

Утилиту myisampack можно запустить следующим образом:

shell> myisampack [options] filename ...

Каждое имя файла (filename) должно быть именем индексного файла (.MYI). Если вы не находитесь в директории базы данных, необходимо указать полный путь к файлу. Допускается опускать расширение .MYI.

myisampack поддерживает следующие опции:

-b, -backup Создает резервную копию таблицы, присваивая ей имя tbl_name.OLD
-#, -debug=debug_options Выводить журнал отладки. Строка debug_options часто принимает значение d:t:o,filename
-f, -force Сжатие таблицы происходит, даже если она увеличивается или если существует временный файл. Во время сжатия таблицы myisampack создает временный файл tbl_name.TMD. Если вы вручную прекратите выполнение myisampack, может оказаться, что файл tbl_name.TMD не будет удален. Обычно если myisampack обнаруживает существующий tbl_name.TMD, она прекращает работу и выдает ошибку. При указании опции -force myisampack сжимает таблицу в любом случае
-j big_tbl_name, -join=big_tbl_name Соединяет все таблицы, указанные в командной строке, в одну таблицу big_tbl_name. Все таблицы, подлежащие объединению, должны быть идентичными (одинаковые имена и типы столбцов, одинаковые индексы и т.д.)
-p #, -packlength=# Определяет разрядность поля, хранящего длину строки, в байтах. Может принимать значения 1, 2 или 3. (myisampack хранит все строки с указателями длины размером в 1, 2, или 3 байта. В большинстве случаев myisampack способна определить правильное значение длины перед началом сжатия файла, но во время сжатия она может обнаружить, что может быть использована более короткая длина. В этом случае myisampack выведет сообщение о том, что в следующий раз при сжатии данного файла можно использовать более короткую длину записи.)
-s, -silent Молчаливый режим. Сообщения выводятся только при возникновении ошибок
-t, -test Сжатие таблицы не выполняется, происходит только проверка процедуры сжатия
-T dir_name, -tmp_dir=dir_name Указанная директория используется как местоположение для создания временной таблицы
-w, -wait Если таблица уже используется, подождать повторить попытку. Если сервер mysqld был вызван с опцией -skip-external-locking, то не самая лучшая идея — вызывать 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.frm shell> 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 length table description:Key Start Len Index Type Root Blocksize Rec/key1 2 4 unique unsigned long 1024 1024 12 32 30 multip. text 10240 1024 1 Field Start Length Type1 1 12 2 4 ... ... ... ...... ... ... ... 56 827 457 831 4 shell> myisampack station.MYICompressing station.MYI: (1192 records)- Calculating statistics normal: 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% shell> 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.frm shell> 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: 0Datafilepointer (bytes): 3 Keyfile pointer (bytes): 1Max datafile length: 16777215 Max keyfile length: 131071Recordlength: 834Record format: Compressed table description:Key Start Len Index Type Root Blocksize Rec/key1 2 4 unique unsigned long 10240 1024 12 32 30 multip. text 54272 1024 1 Field 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 9 ... ... ... ...... ... ... ... 53 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

Листинг 5.1. (html, txt)

Ниже приведено описание вывода myisampack:

normal Количество столбцов, для которых не используется никакого дополнительного сжатия
empty-space Количество столбцов, содержащих пустые значения; они занимают по 1 биту
empty-zero Количество целочисленных столбцов, в которых содержатся только двоичные нули (ascii 0); каждый из них будет занимать 1 бит
empty-fill Количество целочисленных столбцов, значения которых не полностью занимают отведенную для них разрядность в байтах; тип этих столбцов изменяется на тип с меньшей разрядностью (например, столбец INTEGER может быть изменен на MEDIUMINT)
pre-space Количество десятичных столбцов, которые хранятся с начальными пробелами. В этом случае каждое значение будет содержать число ведущих пробелов
end-space Количество столбцов, имеющих много оконечных пробелов. В этом случае каждое значение будет содержать число таких пробелов
table-lookup Столбец имеет только небольшое количество различающихся значений, которые перед сжатием Хаффмана (Huffman) конвертируются в ENUM
zero Количество столбцов, все значения которых являются нулями
Original trees Начальное количество деревьев Хаффмана
After join Количество различных деревьев Хаффмана, оставленных после соединения деревьев для сохранения небольшого пространства в заголовках

После сжатия таблицы myisamchk -dvv выводит дополнительную информацию по каждому полю.

  • Type

Тип поля может содержать следующие дескрипторы:

constant Все строки содержат одинаковое значение
no endspace Не сохраняются замыкающие пробелы
no endspace, not_always Не сохраняются замыкающие пробелы и не производится сжатие за счет замыкающих пробелов для всех значений
no endspace, no empty Не сохраняются замыкающие пробелы. Не сохраняются пустые значения
table-lookup Столбец был преобразован к ENUM
zerofill(n) В значении n главных байтов всегда являются 0 и не сохранены.
no zeros Не сохраняются нули.
always zero Значения 0 хранятся в 1 бите.
  • Huff tree

Дерево Хаффмана, связанное с полем.

  • Bits

Количество битов, используемых в дереве Хаффмана.

После запуска pack_isam/myisampack нужно запустить isamchk/myisamchk для повторного создания индекса. В это время можно также отсортировать индексные блоки и создать статистику, необходимую для более эффективной работы оптимизатора MySQL:

myisamchk -rq -analyze -sort-index table_name.MYIisamchk -rq -analyze -sort-index table_name.ISM

После установки сжатой таблицы в директорию базы данных MySQL нужно проделать операцию mysqladmin flush-tables, чтобы сервер mysqld начал использовать новую таблицу.

Для распаковки сжатой таблицы можно использовать опцию -unpack isamchk или myisamchk.



<== предыдущая лекция | следующая лекция ==>
Mysqld_multi, программа для управления множеством серверов MySQL | Обзор клиентских сценариев и утилит


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.064 сек.