Variables de sistema en Mysql

Mysql tiene muchas variables de sistema que indican cómo está configurado. Cada una tiene un valor por defecto y la mayoría puede ser modificada dinámicamente mientras el servidor está corriendo.

Existen de dos tipos:

  • Globales: afectan la operación del servidor completo
  • de Sesión: afectan la operación de las conexiones cliente individuales

Cuando el servidor inicia, establece todas las variables globales a su valor por defecto. Cuando se inicia una conexión desde un cliente, sus variables de sesión se inicializan usando los valores actuales de las correspondientes variables globales.

Reglas para consultar o establecer el valor de una variable de sistema

  • Variable global: se precede su nombre con GLOBAL o @@global
  • Variable de sesión:
    • se precede su nombre por SESSION, @@session o @@
    • se precede su nombre por LOCAL o @@local
    • no se utiliza ningún modificador (solamente válido para establecer el valor)

Alternativamente se puede utilizar SHOW VARIABLES LIKE ‘variable’, donde se permiten comodines para obtener los valores de varias variables similares.

Ejemplo: Para obtener todas aquellas que definen un charset:

SHOW VARIABLES LIKE 'character_set%'

 

Consultar el valor de una variable de sistema

Si la variable es de sesión:

SELECT @@session.variable;
SELECT @@local.variable;
SELECT @@variable; #Devuelve el valor de la sesión si existe. De lo contrario el global!
SHOW SESSION VARIABLES LIKE 'variable';
SHOW LOCAL VARIABLES LIKE 'variable';
SHOW VARIABLES LIKE 'variable';

Si la variable es global:

SELECT @@GLOBAL.variable;
SHOW GLOBAL VARIABLES LIKE 'variable';

Establecer el valor de una variable de sistema

Si la variable es de sesión:

SET @@session.variable = 'valor';
SET @@local.variable = 'valor';
SET @@variable = 'valor';
SET SESSION variable = 'valor';
SET LOCAL variable = 'valor';
SET variable = 'valor';

El valor se mantiene durante esa sesión (o hasta que se cambie) y no es visible para otros clientes.

Si la variable es global:

SET @@global.variable = 'valor';
SET GLOBAL variable = 'valor';

Se requiere tener el privilegio SUPER para poder cambiar valores de variables globales.

El nuevo valor aplica solamente clientes que se conecten luego del cambio (no afecta las variables de sesión de ningún cliente previamente conectado)

Tagged with: , , , ,
Publicado en Aplicaciones
One comment on “Variables de sistema en Mysql
  1. […] ver el modo en el que Myqsl está trabajando, debemos consultar la variable de sistema sql_mode. Para ello, abrimos una conexión al servidor mysql y ejecutamos: SELECT […]

Los comentarios están cerrados.