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.
|