16 Tables InnoDB
Manuel de Référence MySQL 4.1 : Version Française
. Présentation des tables InnoDB . Informations de contact InnoDB . InnoDB avec MySQL version 3.23 . Configuration InnoDB ->Options de démarrage InnoDB . Créer des bases InnoDB . Créer des tables InnoDB . Ajouter et retirer des données et des logs InnoDB . Sauver et restaurer une base InnoDB . Transférer une base de données InnoDB vers une autre machine . Modèle de transactions et verrouillage InnoDB . Conseils pour l'amélioration des performances InnoDB . Implémentation du multi-versionnage . Structures de tables et d'index . Gestion de l'espace fichiers et des entrées/sorties disque . Gestion des erreurs InnoDB . Restrictions sur les tables InnoDB . Résolution de problèmes avec InnoDB
|
16.5 Options de démarrage InnoDB
Cette section décrit les options d'
InnoDB
. Depuis MySQL 4.0,
toutes les options peuvent être spécifiées sous la forme
--opt_name=value
en ligne de commande, ou dans les fichiers d'options. Avant MySQL 4.0,
les options numériques devaient être spécifiée avec
--set-variable=opt_name=value
ou la syntaxe
-O opt_name=value
.
-
innodb_additional_mem_pool_size
-
La taille du buffer mémoire d'
InnoDB
, pour ses dictionnaires d'informations,
et ses structures internes de données. Une valeur pratique est 2Mo, mais
plus vous aurez de tables dans votre application, plus vous devrez augmenter
cette valeur. Si
InnoDB
est à court de mémoire, il va allouer de la mémoire
auprès du système, et écrire des messages dans le fichier de logs MySQL.
-
innodb_buffer_pool_awe_mem_mb
-
Taille du pool de buffer, en Mo, s'il est placé dans la mémoire
AWE de Windows 32 bits. Disponible depuis MySQL version 4.1.0, et uniquement
utile sur Windows 32 bits. Si votre système Windows 32 bits supporte
plus de 4 Go de mémoire, dite aussi Address Windowing Extensions, vous pouvez
allouer le pool de buffer
InnoDB
dans la mémoire physique AWE en utilisant
ce paramètre. La valeur maximal est de 64000. Si ce paramètre est spécifié,
alors innodb_buffer_pool_size est la fenêtre dans l'espace d'adresse 32 bits
de mysqld où
InnoDB
place la mémoire AWE. Une bonne valeur pour
innodb_buffer_pool_size est alors 500M.
-
innodb_buffer_pool_size
-
La taille de buffer mémoire que
InnoDB
utiliser pour mettre en cache les données
et les index de tables. Plus cette valeur est grand, et moins vous ferez d'accès
disques. Sur un serveur dédiés, vous pouvez monter cette valeur jusqu'à 80%
de la mémoire physique de la machine. Ne lui donnez pas une valeur trop grande,
car cela peut engendrer l'utilisation de mémoire sur le disque par votre serveur.
-
innodb_data_file_path
-
Chemin individuel vers les fichiers de données, et leur taill. Le chemin
complet de chaque fichier de données est créé en concaténant
innodb_data_home_dir
avec les chemins spécifiés ici. La taille
du fichier est spécifiée en méga-octets, ce qui explique la présence
du 'M' après les spécifications ci-dessus.
Depuis la version 3.23.44, vous pouvez donner au fichier une taille
supérieure à 4 Go sur les systèmes d'exploitation qui acceptent les
gros fichiers. Sur certains systèmes, la taille doit être inférieure à
2 Go.
Si vous ne spécifiez pas
innodb_data_file_path
, le comportement par défaut
depuis la version 4.0 est de créer un fichier auto-croissant de 10 Mo, appelé
ibdata1
. Depuis la version 3.23.44, vous pouvez donner une taille de fichier de plus
de 4Go sur les systèmes d'exploitation qui supportent les grands fichiers. Vous pouvez aussi
utiliser les partition raw. Utiliser les
Raw Devices
pour l'espace de tables .
-
innodb_data_home_dir
-
La partie commune du chemin de tous les fichiers de données
InnoDB
.
Si vous ne mentionnez pas cette option,
la valeur par défaut sera celle du dossier de données MySQL.
Vous pouvez aussi spécifier une chaîne vide, et dans ce cas,
les chemins spécifiés dans
innodb_data_file_path
seront des chemins absolus.
-
innodb_fast_shutdown
-
Par défaut,
InnoDB
fait une purge complète et vide le buffer d'insertion
avant une extinction. Ces opérations peuvent prendre beaucoup de temps.
Si vous donnez à ce paramètre la valeur de 1,
InnoDB
ignore ces opérations d'extinction. Cette option est valable depuis
MySQL 3.23.44 et 4.0.1. Sa valeur par défaut est 1 depuis la version 3.23.50.
-
innodb_file_io_threads
-
Nombre de pointeurs de fichier de
InnoDB
. Normalement, cette valeur doit être de
4, mais sur des disques Windows, les accès peuvent être améliorés en augmentant
cette valeur.
-
innodb_file_per_table
-
Cette option fait que
InnoDB
va stocker chaque table dans un fichier
.ibd
indépendant. Voyez
la section sur les espaces de tables multiples. Espaces de tables multiples : mettre un fichier par table .
Cette option a été ajoutée en MySQL 4.1.1.
-
innodb_flush_log_at_trx_commit
-
Normalement, cette option vaut 1, ce qui signifie que lors de la validation
de la transaction, les logs sont écrits sur le disque, et les modifications
faites par la transaction deviennent permanentes, et survivront un crash
de base. Si vous souhaitez réduire la sécurité de vos données, et que
vous exécutez de petites transactions, vous pouvez donner une valeur de 0 à
cette option, pour réduire les accès disques.
-
innodb_flush_method
-
(Disponible depuis 3.23.40 et plus récent)
La valeur par défaut pour cette option est
fdatasync
.
Une autre option est
O_DSYNC
.
-
innodb_force_recovery
-
Attention : cette option ne doit être définie que dans les cas où vous voulez
exporter les données d'une base corrompue, dans une situation d'urgence.
Les valeurs possibles de cette option vont de 1 à 6. La signification des valeurs
est décrite dans Forcer la restauration . Par mesure de sécurité,
InnoDB
empêche les modifications de données si la valeur de cette option est supérieure
à 0. Cette option est disponible depuis MySQL 3.23.44.
-
innodb_lock_wait_timeout
-
Le délai d'expiration des transactions
InnoDB
, en cas de blocage de verrou,
avant d'annuler.
InnoDB
détecte automatiquement les blocages de verrous
et annule alors les transactions. Si vous utilisez la commande
LOCK TABLES
, ou un autre gestionnaire de table transactionnelles que
InnoDB
dans la même transaction, un blocage de verrou peut survenir, et
InnoDB
ne pourra pas le détecter. Ce délai est donc pratique pour résoudre
ces situations.
-
innodb_log_arch_dir
-
Le dossier où les logs complétés doivent être archivés, si nous utilisons l'archivage
de logs. La valeur de ce paramètre doit être actuellement la même que la
valeur de
innodb_log_group_home_dir
.
-
innodb_log_archive
-
Cette valeur doit être actuellement de 0. Au moment de la restauration
de données à partir d'une sauvegarde, à l'aide des log binaires de MySQL,
il n'y a actuellement pas besoin d'archiver les fichiers de log
InnoDB
.
-
innodb_log_buffer_size
-
La taille du buffer que
InnoDB
utilise pour écrire les log dans les
fichiers de logs, sur le disque. Les valeurs utiles vont de 1 Mo à 8 Mo.
Un grand buffer de log permet aux grandes transactions de s'exécuter
sans avoir à écrire de données dans le fichier de log jusqu'à la validation.
Par conséquent, si vous avez de grandes transactions, augmenter cette taille
va réduire les accès disques.
-
innodb_log_file_size
-
Taille de chaque fichier de log dans un groupe de log, exprimé en méga-octets.
Les valeurs pratiques vont de 1Mo à une fraction de la taille du buffer de
log (1 / le nombre de logs, en fait). Plus la taille est grande, moins
de points de contrôles seront utilisés, réduisant les accès disques.
La taille combinée des logs doit être inférieure à 4 Go sur les systèmes 32 bits.
-
innodb_log_files_in_group
-
Nombre de fichiers de logs dans le groupe de log.
InnoDB
écrit dans ces fichiers
de manière circulaire. Une valeur de 2 est recommandée.
C'est la valeur par défaut.
-
innodb_log_group_home_dir
-
Le dossier pour les fichiers de logs. Il doit avoir la même valeur
que
innodb_log_arch_dir
. Si vous ne spécifiez pas de paramètre de
log
InnoDB
, la configuration par défaut va créer deux fichiers de logs
de 5 Mo, appelés
ib_logfile0
et
ib_logfile1
dans le dossier de données MySQL.
-
innodb_max_dirty_pages_pct
-
Cette entier va de 0 à 100. Par défaut, il vaut 90. Le thread principal
de
InnoDB
essaie de transmettre les pages au pool de buffer, pour qu'un
pourcentage maximal de
innodb_max_dirty_pages_pct
soit encore en attente de flush.
Cette option est disponible depuis 4.0.13 et 4.1.1. Si vous avez le droit de
SUPER
, ce pourcentage peut être changée durant l'exécution du serveur :
SET GLOBAL innodb_max_dirty_pages_pct = value;
|
-
innodb_mirrored_log_groups
-
Nombre de copies identiques de groupe de log que nous conservons.
Actuellement, cette valeur doit être au minimum de 1.
-
innodb_open_files
-
Ce n'est utile que si vous utilisez les espaces de tables multiples.
Cette option spécifie que le nombre maximal de fichier
.ibd
que
InnoDB
peut garder ouvert simultanément. La valeur minimum est
de 10. La valeur maximum est de 300. Disponible depuis MySQL version 4.1.1.
Les pointeurs de fichiers utilisés par
.ibd
sont réservés pour
InnoDB
.
Ils sont indépendants de ceux spécifiés par
--open-files-limit
, et n'affectent
pas les opérations de cache.
-
innodb_thread_concurrency
-
InnoDB
essaie de garder le nombre de thread système concurents
inférieur à la limite de ce paramètre. La valeur par défaut est 8. Si vous avez
des problèmes de performances, et que
SHOW INNODB STATUS
revèle que
des threads attendent des sémaphores, essayez de diminuer ou augmenter ce paramètre.
Si vous avez un serveur avec de nombreux processeurs et disques, vous pouvez
essayer d'augmenter la valeur, pour utiliser au mieux les ressources disponibles.
Une vlaeur recommandée est la somme du nombre de processeurs et de disques que vous
avez. Une valeur de 500 ou supérieur, supprime la vérification de concurence.
Cette option a été ajoutée depuis MySQL 3.23.44 et 4.0.1.
|