Blue Flower

Chercher

Tables BDB ou Berkeley DB


Ce que nous devons corriger dans BDB dans un futur proche :

Il est très lent d'ouvrir de nombreuses tables BDB en même temps. Si vous utilisez des tables BDB, il ne faut pas avoir un cache de table trop grand (par exemple, > 256) et vous devriez utiliser l'option --no-auto-rehash avec le client mysql. Nous envisageons de corriger cela en partie en version 4.0.
SHOW TABLE STATUS ne fourni pas encore beaucoup d'informations pour les tables BDB tables.
Optimiser les performances.
Ne pas utiliser les verrous de pages lorsque l'on scanne les tables.


Restrictions avec les tables BDB

Voilà les restrictions que vous pouvez rencontrer en travaillant avec les tables BDB :
Les tables BDB enregistrent dans le fichier .db le chemin vers le fichier tel qu'il était lorsqu'il a été crée. Cela fait que les tables BDB ne peuvent être changées de répertoire !
Lors de la sauvegarde de tables BDB, vous devez utiliser mysqldump ou effectuer des sauvegardes de tous les fichiers de table (les fichiers .frm et .db) et les fichiers de log BDB.
Les fichiers de log de BDB sont les fichiers dans le répertoire de base des données nommés log.XXXXXXXXXX (dix chiffres);
Si une colonne accepte les valeurs NULL, avec un index unique, seule une valeur NULL est autorisée. Cela diffère du comportement des autres moteurs.


Erreurs pouvant survenir lors de l'utilisation des tables BDB

Si vous obtenez l'erreur suivante dans le fichier hostname.err log lors du démarrage de mysqld :
bdb: Ignoring log file: .../log.XXXXXXXXXX: unsupported log version # cela signifie que la nouvelle version de BDB ne supporte pas l'ancien format de log. Dans ce cas, vous devez effacer tous les logs BDB du dossier des données (les fichiers dont le nom est au format log.XXXXXXXXXX) et redémarrer mysqld. Nous vous recommandons aussi d'exécuter un mysqldump --opt de vos vieilles tables BDB, de les effacer, puis de restaurer les copies.
Si vous n'êtes pas en mode auto-commit et que vous effacez une table qu'un autre thread utilise, vous obtiendrez le message d'erreur suivant dans le fichier d'erreurs de MySQL :

   001119 23:43:56  bdb:  Missing log fileid entry
   001119 23:43:56  bdb:  txn_abort: Log undo failed for LSN:
    1 3644744: Invalid

Ce n'est pas une erreur très grave mais nous ne vous recommandons pas d'effacer vos tables si vous n'êtes pas en mode auto-commit, tant que ce problème n'est pas résolu (la solution n'est pas triviale).