П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 180636 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 79085 раз(а).

Учебник HTML.
Просмотров 75822 раз(а).

Руководство по PHP5.
Просмотров 46876 раз(а).

Хостинг через призму DNS.
Просмотров 54326 раз(а).

Подборка текстов стандартных документов.
Просмотров 46689 раз(а).

Учебник PHP - Самоучитель
Просмотров 52902 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 53512 раз(а).

Внешние атаки...
Просмотров 43258 раз(а).

Учебник PHP.
Просмотров 38784 раз(а).

SSI в примерах.
Просмотров 28692 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Глава 4. Администрирование баз данных
Пред. След.

4.7. Серверные сценарии и утилиты MySQL
4.7.4. myisampack, MySQL-генератор сжатых таблиц (только для чтения)

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

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

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

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

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

  • После сжатия таблица доступна в режиме только для чтения. Это удобно, скажем, для записи на CD. Реализация возможности записи в сжатые таблицы находится в нашем списке задач к выполнению, но имеет низкий приоритет.

  • myisampack может также сжимать столбцы c типами BLOB или TEXT. В предыдущей версии pack_isam (для таблиц ISAM) данной функции не было.

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

shell> myisampack [options] filename ...

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

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

  • -b, --backup

    Создает резервную копию таблицы, присваивая ей имя tbl_name.OLD.

  • -#, --debugЮbug_options

    Выводить журнал отладки. Строка debug_options часто принимает значение d:t:o,filename

  • -f, --force

    Сжатие таблицы происходит, даже если она увеличивается или если существует временный файл. Во время сжатия таблицы myisampack создает временный файл tbl_name.TMD. Если вы вручную прекратите выполнение myisampack, может оказаться так, что файл tbl_name.TMD не будет удален. Обычно если myisampack обнаруживает существующий tbl_name.TMD, она прекращает работу и выдает ошибку. При указании опции --force myisampack сжимает таблицу в любом случае.

  • -?, --help

    Выдает справочную информацию и завершает работу.

  • -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

    Указанная директория используется как местоположение для создания временной таблицы.

  • -v, --verbose

    Расширенный режим вывода сообщений. Выводится информация о состоянии процесса и результаты сжатия.

  • -V, --version

    Отображает информацию о версии и завершает работу.

  • -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:     station
Isam-version:  2
Creation time: 1996-03-13 10:08:58
Recover time:  1997-02-02  3:06:43
Data records:              1192  Deleted blocks:              0
Datafile: Parts:           1192  Deleted data:                0
Datafile pointer (bytes):     2  Keyfile pointer (bytes):     2
Max datafile length:   54657023  Max keyfile length:   33554431
Recordlength:               834
Record format: Fixed length

table description:
Key Start Len Index   Type                       Root  Blocksize    Rec/key
1   2     4   unique  unsigned long              1024       1024          1
2   32    30  multip. text                      10240       1024          1

Field Start Length Type
1     1     1
2     2     4
3     6     4
4     10    1
5     11    20
6     31    1
7     32    30
8     62    35
9     97    35
10    132   35
11    167   4
12    171   16
13    187   35
14    222   4
15    226   16
16    242   20
17    262   20
18    282   20
19    302   30
20    332   4
21    336   4
22    340   1
23    341   8
24    349   8
25    357   8
26    365   2
27    367   2
28    369   4
29    373   4
30    377   1
31    378   2
32    380   8
33    388   4
34    392   4
35    396   4
36    400   4
37    404   1
38    405   4
39    409   4
40    413   4
41    417   4
42    421   4
43    425   4
44    429   20
45    449   30
46    479   1
47    480   1
48    481   79
49    560   79
50    639   79
51    718   79
52    797   8
53    805   1
54    806   1
55    807   20
56    827   4
57    831   4

shell> myisampack station.MYI
Compressing station.MYI: (1192 records)
- Calculating statistics

normal:     20  empty-space:      16  empty-zero:        12  empty-fill:  11
pre-space:   0  end-space:        12  table-lookups:      5  zero:         7
Original trees:  57  After join: 17
- Compressing file
87.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:     station
Isam-version:  2
Creation time: 1996-03-13 10:08:58
Recover time:  1997-04-17 19:04:26
Data records:              1192  Deleted blocks:              0
Datafile: Parts:           1192  Deleted data:                0
Datafilepointer (bytes):      3  Keyfile pointer (bytes):     1
Max datafile length:   16777215  Max keyfile length:     131071
Recordlength:               834
Record format: Compressed

table description:
Key Start Len Index   Type                       Root  Blocksize    Rec/key
1   2     4   unique  unsigned long             10240       1024          1
2   32    30  multip. text                      54272       1024          1

Field Start Length Type                         Huff tree  Bits
1     1     1      constant                             1     0
2     2     4      zerofill(1)                          2     9
3     6     4      no zeros, zerofill(1)                2     9
4     10    1                                           3     9
5     11    20     table-lookup                         4     0
6     31    1                                           3     9
7     32    30     no endspace, not_always              5     9
8     62    35     no endspace, not_always, no empty    6     9
9     97    35     no empty                             7     9
10    132   35     no endspace, not_always, no empty    6     9
11    167   4      zerofill(1)                          2     9
12    171   16     no endspace, not_always, no empty    5     9
13    187   35     no endspace, not_always, no empty    6     9
14    222   4      zerofill(1)                          2     9
15    226   16     no endspace, not_always, no empty    5     9
16    242   20     no endspace, not_always              8     9
17    262   20     no endspace, no empty                8     9
18    282   20     no endspace, no empty                5     9
19    302   30     no endspace, no empty                6     9
20    332   4      always zero                          2     9
21    336   4      always zero                          2     9
22    340   1                                           3     9
23    341   8      table-lookup                         9     0
24    349   8      table-lookup                        10     0
25    357   8      always zero                          2     9
26    365   2                                           2     9
27    367   2      no zeros, zerofill(1)                2     9
28    369   4      no zeros, zerofill(1)                2     9
29    373   4      table-lookup                        11     0
30    377   1                                           3     9
31    378   2      no zeros, zerofill(1)                2     9
32    380   8      no zeros                             2     9
33    388   4      always zero                          2     9
34    392   4      table-lookup                        12     0
35    396   4      no zeros, zerofill(1)               13     9
36    400   4      no zeros, zerofill(1)                2     9
37    404   1                                           2     9
38    405   4      no zeros                             2     9
39    409   4      always zero                          2     9
40    413   4      no zeros                             2     9
41    417   4      always zero                          2     9
42    421   4      no zeros                             2     9
43    425   4      always zero                          2     9
44    429   20     no empty                             3     9
45    449   30     no empty                             3     9
46    479   1                                          14     4
47    480   1                                          14     4
48    481   79     no endspace, no empty               15     9
49    560   79     no empty                             2     9
50    639   79     no empty                             2     9
51    718   79     no endspace                         16     9
52    797   8      no empty                             2     9
53    805   1                                          17     1
54    806   1                                           3     9
55    807   20     no empty                             3     9
56    827   4      no zeros, zerofill(2)                2     9
57    831   4      no zeros, zerofill(1)                2     9

Ниже приведено описание вывода 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.MYI
isamchk -rq --analyze --sort-index table_name.ISM

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

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


Назад Начало Главы Начало Раздела Вперед

Пред. Глава След. Глава
Глава 3. Учебное пособие по MySQL Начало Книги Глава 5. Оптимизация в MySQL


Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru