6.1 Structure du langage
6 Référence du langage MySQL
Manuel de Référence MySQL 4.1 : Version Française
. Literals: Comment écrire les chaînes et les nombres . Noms de bases, tables, index, colonnes et alias . Sensibilité à la casse pour les noms . Variables utilisateur ->Variables système . Syntaxe des commentaires . Est-ce que MySQL est sensible aux mots réservés ?
|
6.1.5 Variables système
A partir de la version 4.0.3 de MySQL, nous fournissons un meilleur accès à
beaucoup de variables système et variables de connexion. On peut changer la
plupart d'entre elle sans avoir à stopper le serveur.
Il y'a deux sortes de variables système : Les variables spécifiques aux threads
(ou à la connexion) qui sont uniques à la connexion courante et les variables globales
qui sont utilisées pour configurer les évènements globaux.
Les variables globales sont aussi utilisées pour configurer les valeurs initales des
variables spécifiques au threads pour les nouvelles connexions.
Lorsque
mysqld
démarre, toutes les variables globales sont initialisées à partir
des arguements passés en ligne de commande et des fichiers de configuration.
Vous pouvez changer ces valeurs avec la commande
SET GLOBAL
.
Lorsqu'un nouveau thread est créé, les variables spécifiques aux threads sont initialisées
à partir des variables globales et ne changeront pas même si vous utilisez la commande
SET GLOBAL
.
Pour définir la valeur d'une variable
GLOBAL
, vous devez utiliser l'une des syntaxes
suivantes :
(Ici nous utilisons la variable
sort_buffer_size
à titre d'exemple)
SET GLOBAL sort_buffer_size=valeur; SET @@global.sort_buffer_size=valeur;
|
Pour définir la valeur d'une variable
SESSION
, vous devez utiliser l'une des syntaxes
suivantes :
SET SESSION sort_buffer_size=valeur; SET @@session.sort_buffer_size=valeur; SET sort_buffer_size=valeur;
|
Si vous ne spécifiez pas
GLOBAL
ou
SESSION
alors
SESSION
est utilisé. Syntaxe de
SET
.
LOCAL
est un synonyme de
SESSION
.
Pour récupérer la valeur d'une variable de type
GLOBAL
vous pouvez utiliser l'une
des commandes suivantes :
SELECT @@global.sort_buffer_size; SHOW GLOBAL VARIABLES like 'sort_buffer_size';
|
Pour récupérer la valeur d'une variable de type
SESSION
vous pouvez utiliser l'une
des commandes suivantes :
SELECT @@session.sort_buffer_size; SHOW SESSION VARIABLES like 'sort_buffer_size';
|
Lorsque vous
récuperez
une valeur de variable avec la syntaxe
@@nom_variable
et que vous ne spécifiez pas
GLOBAL
ou
SESSION
, MySQL retournera la valeur spécifique au thread (
SESSION
)
si elle existe. Sinon, MySQL retournera la valeur globale.La raison d'imposer la présence du mot
GLOBAL
pour configurer une variable de type
GLOBAL
mais non pour la lire est pour être sur que vous n'aurez pas de problèmes plus
tard si vous voulez introduire ou effacer une variable spécifique au thread qui aurait le même
nom. Dans ce cas, vous pourriez changer accidentellement l'état du serveur pour toutes les connexions
(et non la votre uniquement).
Voilà la liste complète de toutes les variables que que vous pouvez récuperer ou modifier
et une indication quant à l'utilisation de
GLOBAL
ou
SESSION
avec elles.
Nom de la variable
|
Type de valeur
|
Type
|
autocommit |
bool |
SESSION
|
big_tables |
bool |
SESSION
|
binlog_cache_size |
num |
GLOBAL
|
bulk_insert_buffer_size |
num |
GLOBAL | SESSION
|
concurrent_insert |
bool |
GLOBAL
|
connect_timeout |
num |
GLOBAL
|
convert_character_set |
string |
SESSION
|
delay_key_write |
OFF | ON | ALL |
GLOBAL
|
delayed_insert_limit |
num |
GLOBAL
|
delayed_insert_timeout |
num |
GLOBAL
|
delayed_queue_size |
num |
GLOBAL
|
error_count |
num |
LOCAL
|
flush |
bool |
GLOBAL
|
flush_time |
num |
GLOBAL
|
foreign_key_checks |
bool |
SESSION
|
identity |
num |
SESSION
|
insert_id |
bool |
SESSION
|
interactive_timeout |
num |
GLOBAL | SESSION
|
join_buffer_size |
num |
GLOBAL | SESSION
|
key_buffer_size |
num |
GLOBAL
|
last_insert_id |
bool |
SESSION
|
local_infile |
bool |
GLOBAL
|
log_warnings |
bool |
GLOBAL
|
long_query_time |
num |
GLOBAL | SESSION
|
low_priority_updates |
bool |
GLOBAL | SESSION
|
max_allowed_packet |
num |
GLOBAL | SESSION
|
max_binlog_cache_size |
num |
GLOBAL
|
max_binlog_size |
num |
GLOBAL
|
max_connect_errors |
num |
GLOBAL
|
max_connections |
num |
GLOBAL
|
max_error_count |
num |
GLOBAL | SESSION
|
max_delayed_threads |
num |
GLOBAL
|
max_heap_table_size |
num |
GLOBAL | SESSION
|
max_join_size |
num |
GLOBAL | SESSION
|
max_sort_length |
num |
GLOBAL | SESSION
|
max_tmp_tables |
num |
GLOBAL
|
max_user_connections |
num |
GLOBAL
|
max_write_lock_count |
num |
GLOBAL
|
myisam_max_extra_sort_file_size |
num |
GLOBAL | SESSION
|
myisam_max_sort_file_size |
num |
GLOBAL | SESSION
|
myisam_sort_buffer_size |
num |
GLOBAL | SESSION
|
net_buffer_length |
num |
GLOBAL | SESSION
|
net_read_timeout |
num |
GLOBAL | SESSION
|
net_retry_count |
num |
GLOBAL | SESSION
|
net_write_timeout |
num |
GLOBAL | SESSION
|
query_cache_limit |
num |
GLOBAL
|
query_cache_size |
num |
GLOBAL
|
query_cache_type |
enum |
GLOBAL
|
read_buffer_size |
num |
GLOBAL | SESSION
|
read_rnd_buffer_size |
num |
GLOBAL | SESSION
|
rpl_recovery_rank |
num |
GLOBAL
|
safe_show_database |
bool |
GLOBAL
|
server_id |
num |
GLOBAL
|
slave_compressed_protocol |
bool |
GLOBAL
|
slave_net_timeout |
num |
GLOBAL
|
slow_launch_time |
num |
GLOBAL
|
sort_buffer_size |
num |
GLOBAL | SESSION
|
sql_auto_is_null |
bool |
SESSION
|
sql_big_selects |
bool |
SESSION
|
sql_big_tables |
bool |
SESSION
|
sql_buffer_result |
bool |
SESSION
|
sql_log_binlog |
bool |
SESSION
|
sql_log_off |
bool |
SESSION
|
sql_log_update |
bool |
SESSION
|
sql_low_priority_updates |
bool |
GLOBAL | SESSION
|
sql_max_join_size |
num |
GLOBAL | SESSION
|
sql_quote_show_create |
bool |
SESSION
|
sql_safe_updates |
bool |
SESSION
|
sql_select_limit |
bool |
SESSION
|
sql_slave_skip_counter |
num |
GLOBAL
|
sql_warnings |
bool |
SESSION
|
table_cache |
num |
GLOBAL
|
table_type |
enum |
GLOBAL | SESSION
|
thread_cache_size |
num |
GLOBAL
|
timestamp |
bool |
SESSION
|
tmp_table_size |
enum |
GLOBAL | SESSION
|
tx_isolation |
enum |
GLOBAL | SESSION
|
version |
string |
GLOBAL
|
wait_timeout |
num |
GLOBAL | SESSION
|
warning_count |
num |
LOCAL
|
unique_checks |
bool |
SESSION
|
Les variables suivies d'un
num
peuvent se voir affecter une valeur
numérique. Celles marquées avec
bool
peuvent prendre 0, 1,
ON
ou
OFF
.
Les variables qui sont du type
enum
doivent normalement comporter au moins
l'une des valeurs disponibles pour la variable, mais peuvent aussi contenir les index
des membres de la collection. (Le premier index est 0).
Voilà une description de quelques variables :
Variable
|
Description
|
identity |
Alias pour last_insert_id (compatibilité Sybase)
|
sql_low_priority_updates |
Alias pour low_priority_updates
|
sql_max_join_size |
Alias pour max_join_size
|
delay_key_write_for_all_tables |
Si cette variable et delay_key_write sont définies, alors toutes les nouvelles tables MyISAM qui sont ouvertes utiliseront les écritures de clefs reportées.
|
version |
Alias for VERSION() (compatibilité Sybase (?))
|
Une déscription des autres variables peut être trouvée dans la section
des options de démarrage, la description de
SHOW VARIABLES
et dans
la section de
SET
. Options en ligne de commande de
mysqld
.
SHOW VARIABLES
. Syntaxe de
SET
.
|