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 Section 7.4.6, « Le cache de clé des tables 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.
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.
