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.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.