:: DEVELOPER ZONE
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.
See Section 5.2.1, « Options de ligne de commande de 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.
See Section 5.2.3, « Variables serveur système ».
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.
© 1995-2005 MySQL AB. All rights reserved.
