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.