15.1 Le moteur de tables MyISAM
15 Types de tables MySQL
Manuel de Référence MySQL 4.1 : Version Française
->Options de démarrage MyISAM . Espace requis pour les clefs . Formats de table MyISAM . Problèmes avec les tables MyISAM
|
15.1.1 Options de démarrage MyISAM Les options suivantes de
mysqld
permettent de modifier le comportement
des tables
MyISAM
:
-
--myisam-recover=mode
-
Active le mode de restauration automatique des tables
MyISAM
corrompues.
-
--delay-key-write=ALL
-
N'écrit pas les buffers de clés entre deux écritures dans une table
MyISAM
.
Note :
Si vous faîtes cela, vous ne devez pas utiliser
les tables
MyISAM
avec d'autres programmes (comme depuis un autre
serveur MySQL ou avec
myisamchk
) lorsque la table est utilisée.
Sinon, vous allez obtenir une corruption d'index.
Utiliser
--external-locking
n'aidera pas les tables qui utilisent
--delay-key-write
.
Options de ligne de commande
mysqld
.Les variables systèmes suivantes affectent le comportement des tables
MyISAM
:
-
bulk_insert_buffer_size
-
La taille du cache d'index lors des insertions de masse.
Note :
c'est une limite par
par thread
!
-
myisam_max_extra_sort_file_size
-
Utilisée pour aider MySQL à décider quand utiliser le cache de clé lent mais
sûr.
Note :
ce paramètre était donné en megaoctets avant MySQL 4.0.3,
et en octets depuis 4.0.3.
-
myisam_max_sort_file_size
-
N'utilise pas la méthode de tri rapide pour créer un index, si un
fichier temporaire dépasserait cette taille.
Note :
ce paramètre était donné en megaoctets avant MySQL 4.0.3,
et en octets depuis 4.0.3.
-
myisam_sort_buffer_size
-
La taille du buffer lors de la restauration de table.
Variables sytème du serveur .La restauration automatique est activée si vous lancez
mysqld
avec l'option
--myisam-recover
. Dans ce cas,
lorsque le serveur ouvre la table
MyISAM
, il vérifie si la table
a été marquée comme crashée ou si le compteur de tables ouvertes n'est
pas zéro ou si le serveur utilise
--skip-external-locking
. Si une
des conditions précédente est vraie, il arrive ceci :
-
La table est analysée pour rechercher des erreurs.
-
Si le serveur trouve une erreur, il essaie de faire une réparation rapide
(avec le tri, sans recréer de données).
-
Si la réparation échoue à cause d'une erreur dans le fichier de données
(par exemple, une erreur de clé), le serveur essaie à nouveau, en re-créant
le fichier de données.
-
Si la réparation échoue encore, le serveur essaie encore avec une ancienne
méthode réparation (écrire les lignes les unes après les autres, sans tri). Cette
méthode devrait être capable de réparer tout les types d'erreurs, et elle
occupe peu de place sur le disque.
Si la restauration n'est toujours pas capable de retrouver toutes les lignes,
et que vous n'avez pas spécifié l'option
FORCE
dans la valeur de
l'option
--myisam-recover
, la réparation automatique s'annule, avec le message
d'erreur suivant :
Error: Couldn't repair table: test.g00pages
|
Si vous spécifiez la valeur
FORCE
, une alerte comme celle-ci sera écrite
dans les logs :
Warning: Found 344 of 354 rows when repairing ./test/g00pages
|
Notez que si la valeur de restauration automatique inclut
BACKUP
,
le processus de restauration créera des fichiers avec des noms de la forme
tbl_name-datetime.BAK
. Vous devriez avoir une tâche régulière avec
cron
pour supprimer automatiquement ces fichiers dans les
bases de données pour nettoyer le volume.
|