Go to the first, previous, next, last section, table of contents.


The MySQL compressed read only table generator

pack_isam is an extra that you get when ordering more than 10 licenses or extended support. Since pack_isam is distributed binary only, pack_isam is only available on some platforms.

Of course, all future updates to pack_isam is included in the price. pack_isam may at some time be included as standard when we get some kind of turnover for MySQL.

pack_isam works by compressing each column in the table separately. The information needed to decompress is read into memory when the table is opened. This gives a much better performance when accessing individual records as one only has to uncompress exactly one record, not a much larger disk block like when using Stacker on MSDOS.

MySQL uses memory mapping (mmap) on compressed tables and falls back to normal read/write file usage if mmap doesn't work.

Usually, pack_isam packs the datafile 40-70%.

There is currently two limitations with pack_isam:

Fixing these limitations is on our TODO but with low priority.

pack_isam options:

> pack_isam --help
pack_isam Ver 5.0 for SOLARIS 2.5 on SPARCstation
Copyright (C) 1994-1997 TcX AB & Monty Program KB & Detron HB.
This is not free software. You must have a license to use this program
This software comes with ABSOLUTELY NO WARRANTY

Pack an ISAM-database to take much smaller space
Keys are not updated, one must run isamchk -rq on datafile afterwards
Usage: pack_isam [OPTIONS]

  -b, --backup          Make a backup of the table as table_name.OLD
  -f, --force           Force packing of table even if it's gets bigger or
                        tempfile exists.
  -j, --join=#          Join all given tables into table.
                        All tables MUST be identical.
  -p, --packlength=#    Force storage size of recordlength (1,2 or 3)
  -s, --silent          Be more silent.
  -t, --test            Don't pack table only test packing it
  -v, --verbose         Write info about progress and packing result
  -w, --wait            Wait and retry if table is in use
  -T, --tmp_dir=#       Use temporary directory to store temporary table
  -#, --debug=...       output debug log. Often this is 'd:t:o,filename`
  -?, --help            display this help and exit
  -V, --version         output version information and exit

Typical run:

(/my/monty/tmp) ls -l station.*
-rw-rw-r--   1 monty    my         994128 Apr 17 19:00 station.ISD
-rw-rw-r--   1 monty    my          53248 Apr 17 19:00 station.ISM
-rw-rw-r--   1 monty    my           5767 Apr 17 19:00 station.frm

(/my/monty/tmp) isamchk -dvv station

ISAM 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
Datafilepointer (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

column 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

Compressing station.ISD: (1192 records)
- Calculating statistics
            
normal:     20  empty-space:      16  empty-zero:        12  empty-fill:  11
pre-space:   0  end-space:        12  intervall-fields:   5  zero:         7
Original trees:  57  After join: 17
- Compressing file
87.14%     

(/my/monty/tmp) ls -l station.*
-rw-rw-r--   1 monty    my         127874 Apr 17 19:00 station.ISD
-rw-rw-r--   1 monty    my          55296 Apr 17 19:04 station.ISM
-rw-rw-r--   1 monty    my           5767 Apr 17 19:00 station.frm

(my/monty/tmp) isamchk -dvv station

ISAM 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-lockup                         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      allways zero                         2     9
21    336   4      allways zero                         2     9
22    340   1                                           3     9
23    341   8      table-lockup                         9     0
24    349   8      table-lockup                        10     0
25    357   8      allways 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-lockup                        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      allways zero                         2     9
34    392   4      table-lockup                        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      allways zero                         2     9
40    413   4      no zeros                             2     9
41    417   4      allways zero                         2     9
42    421   4      no zeros                             2     9
43    425   4      allways 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


Go to the first, previous, next, last section, table of contents.