Services webmasters
Partenaires
Jeux concours gratuits
 
mysqld_multi , un programme pour gérer plusieurs serveurs MySQL
<<<
myisampack , le générateur de tables MySQL compressées en lecture seule mysqld-max , la version étendue du serveur mysqld
>>>

4.7 Scripts serveur MySQL et utilitaires
4 Administration du serveur
 Manuel de Référence MySQL 4.1 : Version Française

Présentation des scripts serveurs et des utilitaires
safe_mysqld , le script père de mysqld
mysqld_multi , un programme pour gérer plusieurs serveurs MySQL
->myisampack , le générateur de tables MySQL compressées en lecture seule
mysqld-max , la version étendue du serveur mysqld

4.7.4 myisampack , le générateur de tables MySQL compressées en lecture seule

myisampack sert à compresser des tables MyISAM et pack_isam sert à compresser les tables ISAM. Comme les tables ISAM sont obsolètes, nous ne traiterons que de myisampack , mais tout ce qui est dit au sujet de myisampack est aussi vrai pour pack_isam .

myisampack fonctionne en compressant séparément chaque colonne de la table. Les informations nécessaires à la décompression sont lues en mémoire lorsque la table est ouverte. Cela donne de bien meilleures performances lors de l'accès à des lignes individuelles, car nous n'avez qu'à décompresser exactement une des lignes, et non pas un bloc de disque entier. Généralement, myisampack compresse le fichier avec un gain de 40 à 70 %.

MySQL utilise la carte mémoire ( mmap() ) sur les tables compressées et utilise les outils classiques de lecture et écriture si mmap() ne fonctionne pas.Notez bien ceci :
  • Après avoir compressé la table, celle-ci n'est plus accessible qu'en lecture. C'est souvent un état voulu (par exemple, pour être gravée sur un CD). De plus, autoriser les écritures dans une table compressée fait partie de notre liste de tâche, mais avec une très faible priorité.
  • myisampack peut aussi compresser des colonnes BLOB ou TEXT . L'ancien pack_isam (pour les tables ISAM ) ne peut le faire.
myisampack est invoqué comme ceci :

shell> myisampack [options] filename ...
Chaque nom de fichier doit être le nom d'un fichier d'index ( .MYI ). Si vous n'êtes pas dans le dossier de données, vous devez spécifier le chemin complet jusqu'au fichier. Il est toléré que vous omettiez l'extension du fichier .MYI .

myisampack supporte les options suivantes :

    -b, --backup
    Fait une sauvegarde de la table sous le nom de tbl_name.OLD .
    -#, --debug=debug_options
    Affiche le log de débogage. La chaîne debug_options vaut souvent 'd:t:o,filename' .
    -f, --force
    Force la compression de la table, même si elle grossit ou si le fichier temporaire existe déjà. myisampack crée un fichier temporaire appelé tbl_name.TMD lors de la compression. Si vous tuez myisampack , le fichier .TMD peut ne pas être effacé. Normalement, myisampack se termine avec une erreur s'il découvre que le fichier tbl_name.TMD existe. Avec --force , myisampack reprendra le travail.
    -?, --help
    Affiche le message d'aide et quitte.
    -j big_tbl_name, --join=big_tbl_name
    Rassemble toutes les tables indiquées dans la ligne de commande dans une seule table appelée big_tbl_name . Toutes les tables qui seront combinées doivent être identiques (mêmes noms de colonnes, mêmes types, mêmes index, etc.)
    -p #, --packlength=#
    Spécifie la taille de stockage de la longueur de ligne, en octets. Cette valeur doit être 1, 2, ou 3. ( myisampack stocke toutes les lignes avec des pointeurs de lignes de 1, 2 ou 3 octets. Dans les cas normaux, myisampack peut déterminer la taille correcte avant de compresser le fichier, mais il peut aussi se rendre compte durant le processus qu'une autre taille aurait été plus appropriée, ou plus courte. Dans ce cas, myisampack va imprimer une note pour que vous le sachiez lors de la prochaine compression du même fichier.
    -s, --silent
    Mode silencieux. Seules les erreurs seront affichées.
    -t, --test
    Ne compresse pas la table, mais teste juste la compression.
    -T dir_name, --tmp_dir=dir_name
    Utilise le dossier indiqué comme dossier pour les fichiers temporaires.
    -v, --verbose
    Mode détaillé. Toutes les informations sur la progression de la compression seront affichées.
    -V, --version
    Affiche la version et quitte.
    -w, --wait
    Attend et reessaie, si la table était déjà en cours d'utilisation. Si le serveur mysqld a été démarré avec l'option --skip-external-locking , ce n'est pas une bonne idée d'appeler myisampack , car la table risque d'être modifiée durant la compression.
La séquence de commande illustre la session de compression :

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    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 &nbs   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                 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                    & 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              &nb                             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
Les informations affichées par myisampack sont décrites ici :
    normal
    Le nombre de colonnes pour lesquelles aucune compression n'est utilisée.
    empty-space
    Le nombre de colonnes dont les valeurs ne contiennent que des octets : elles n'occuperont plus qu'un octet.
    empty-zero
    Le nombre de colonnes dont les valeurs ne contiennent que des zéros : elles n'occuperont plus qu'un octet.
    empty-fill
    Le nombre de colonnes de type entier qui n'occupent pas la totalité de l'espace de leur type. Elles seront réduites en taille (par exemple, une colonne de type INTEGER sera transformée en MEDIUMINT ).
    pre-space
    Le nombre de colonnes de nombres à virgule flottante qui ont des valeurs stockées avec des espaces initiaux. Dans ce cas, chaque valeur va contenir le nombre d'espace initiaux.
    end-space
    Le nombre de colonnes qui ont de nombreux espaces terminaux. Dans ce cas, chaque valeur va contenir un compte du nombre d'espaces terminaux.
    table-lookup
    La colonne n'a que quelques valeurs différentes, qui seront converties en une colonne de type ENUM avant une compression de type Huffman.
    zero
    Le nombre de colonnes pour lesquelles toutes les valeurs sont zéro.
    Original trees
    Le nombre initial d'arbres Huffman.
    After join
    Le nombre d'arbres Huffman distincts obtenus après avoir joint les arbres pour économiser de l'espace d'entête.
Après la compression d'une table, myisamchk -dvv affiche des informations supplémentaires pour chaque champ :
    Type
    Le type de fichier peut contenir les informations suivantes :
      constant
      Toutes les lignes ont la même valeur.
      no endspace
      Ne stocke pas les espaces finaux.
      no endspace, not_always
      Ne stocke pas les espaces finaux et ne compresse pas les espaces finaux pour toutes les valeurs.
      no endspace, no empty
      Ne stocke pas les espaces finaux. Ne stocke pas les valeurs vides.
      table-lookup
      La colonne a été convertie en ENUM .
      zerofill(n)
      Les n chiffres significatifs sont toujours 0, et n'ont pas été stockés.
      no zeros
      Ne stocke pas les zéros.
      always zero
      Les valeurs 0 sont stockées sur un octet.
    Huff tree
    L'arbre Huffman associé au champ.
    Bits
    Le nombre de bits utilisés par l'arbre Huffman.
Après la compression de pack_isam / myisampack vous devez exécuter la commande isamchk / myisamchk pour recréer l'index. A ce moment, vous pouvez aussi trier les blocs d'index et créer des statistiques nécessaires pour l'optimisateur MySQL :

myisamchk -rq --analyze --sort-index table_name.MYI
isamchk   -rq --analyze --sort-index table_name.ISM
Après avoir installé la table compressée dans un dossier de données MysQL, vous devez exécutez la commande mysqladmin flush-tables pour forcer mysqld à utiliser cette nouvelle table.

Si vous voulez décompresser une table compressée, vous pouvez le faire avec l'option --unpack de la commande isamchk ou myisamchk .

<< myisampack , le générateur de tables MySQL compressées en lecture seule >>
mysqld_multi , un programme pour gérer plusieurs serveurs MySQL Scripts serveur MySQL et utilitaires mysqld-max , la version étendue du serveur mysqld
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -