Structure du langage
<<<
Variables système structurées Structure du langage
>>>

10.4 Variables système
10 Structure du langage
 Manuel de Référence MySQL 4.1 : Version Française

->Variables système structurées

10.4.1 Variables système structurées

Les variables système structurées sont supportées depuis MySQL 4.1.1. Une variable structurée diffère d'une variable système classique sur deux points :

  • Sa valeur est une structure avec des composants qui spécifient des paramètres serveurs qui sont étroitement liés.
  • Il peu y avoir plusieurs instances d'une même variable système structurée. Chacun d'entre elles a un nom différent, et fait référence à une ressource différente, gérée sur le serveur.
Actuellement, MySQL supporte un type de variables système structurées. Il spécifie les paramètres qui gouvernement les caches de clé. Une variable système structurée de cache de clé contient les composants suivants :
  • key_buffer_size
  • key_cache_block_size
  • key_cache_division_limit
  • key_cache_age_threshold
L'objectif de cette section est de décrire la syntaxe d'opération avec les variables système structurées. Les variables du cache de clé sont utilisées comme exemple syntaxique, mais les détails concernant le cache de clé sont disponibles dans la section Le cache de clés MyISAM .

Pour faire référence à un composant d'une variable système structurée, vous pouvez utiliser un nom composé, au format nom_d_instance.nom_du_composant . Par exemple :


hot_cache.key_buffer_size
hot_cache.key_cache_block_size
cold_cache.key_cache_block_size
Pour chaque variables système structurée, un instance avec le nom default est toujours prédéfinie. Si vous faites référence à un composant d'une variables système structurée sans aucun nom d'instance, l'instance default sera utilisée. Par conséquent, default.key_buffer_size et key_buffer_size font références à la même variable système structurée.

Les règles de nommage pour les variables système structurées et ses composants sont les suivantes :

  • Pour un type donnée de variables système structurées, chaque instance doit avoir un nom unique à l'intérieur de ce type. Cependant, les noms d'instances doivent être unique à l'intérieur des types de variables système structurées. Par exemple, chaque variable système structurée aura une instance default , ce qui fait que default n'est pas unique à l'intérieur des types de variables.
  • Les noms de composants de chaque variable système structurée doit être unique à travers tous les noms de variables systèmes. Si ce n'était pas vrai (c'est à dire, si deux types de variables structurées pouvaient partager des noms de composants), il ne serait pas facile de trouver la variable structurée par défaut, pour ce type.
  • Si un nom de variable système structurée n'est pas valide en tant qu'identifiant non protégé, il faut utiliser les guillemets obliques pour le protéger. Par exemple, hot-cache n'est pas valide, mais `hot-cache` l'est.
  • global , session , et local ne sont pas des noms de composants valides. Cela évite les conflits avec des notations comme @@global.var_name , qui fait référence à des variables système non-structurées.

Actuellement, les deux premières règles ne peuvent pas être violées, puisqu'il n'y a qu'un seul type de variables système structurées, celui des caches de clés. Ces règles prendront leur importance si d'autres types de variables structurées sont créées dans le futur.

A une exception près, il est possible de faire référence à une variable système structurée en utilisant des noms composés, dans un contexte où un nom de variable simple est utilisé. Par exemple, vous pouvez assigner une valeur à une variable structurée en utilisant la ligne de commande suivante :

shell> mysqld --hot_cache.key_buffer_size=64K
Dans un fichier d'options, faites ceci :

[mysqld]
hot_cache.key_buffer_size=64K
Si vous lancez le serveur avec cette option, il va créer un cache de clé appelé hot_cache , avec une taille de 64 ko, en plus du cache de clé par défaut, qui a une taille de 8 Mo.

Supposez que vous démarriez le serveur avec ces options :


shell> mysqld --key_buffer_size=256K \
         --extra_cache.key_buffer_size=128K \
         --extra_cache.key_cache_block_size=2096
Dans ce cas, le serveur utilise une taille par défaut de 256 ko pour le cache. Vous pourriez aussi écrire --default.key_buffer_size=256K . De plus, le serveur crée un second cache de clé appelé extra_cache , de taille 128 ko, avec une taille de bloc de buffer de 2096 octets.

L'exemple suivant démarre le serveur avec trois cache de clé différents, avec des tailles de ratio 3:1:1 :


shell> mysqld --key_buffer_size=6M \
         --hot_cache.key_buffer_size=2M \
         --cold_cache.key_buffer_size=2M
Les variables système structurées peuvent être affectées et lue durant l'exécution. Par exemple, pour créer un cache de clé appelé hot_cache , de taille 10 Mo, utilisez une des commandes suivantes :

mysql> SET GLOBAL hot_cache.key_buffer_size = 10*1024*1024;
mysql> SET @@global.hot_cache.key_buffer_size = 10*1024*1024;
Pour lire la taille du cache, faites ceci :

mysql> SELECT @@global.hot_cache.key_buffer_size;
Cependant, la commande suivante ne fonctionne pas. La variable n'est pas interprétée comme un nom composé, mais comme une simple chaîne pour l'opérateur LIKE :

mysql> SHOW GLOBAL VARIABLES LIKE 'hot_cache.key_buffer_size';
C'est la exception où vous ne pouvez pas utiliser une variable système structurée, là où une variable simple fonctionnerait.

<< Variables système structurées >>
Structure du langage Variables système Structure du langage