MySQL 5.0 también soporta variables de sistema estructuradas. Una variable estructurada difiere de una variable de sistema convencional en dos aspectos:
Su valor es una estructura con componentes que especifican parámetros de servidor que se consideran estrechamente relacionados.
Pueden existir varias instancias de un determinado tipo de variable estructurada. Cada una tiene un nombre diferente y se refiere a un recurso mantenido por el servidor.
Actualmente, MySQL soporta un solo tipo de variable estructurada. Éste especifica parámetros que regulan el funcionamiento de los cachés de claves (key caches). Una variable estructurada de caché de claves tiene estos componentes:
key_buffer_size
key_cache_block_size
key_cache_division_limit
key_cache_age_threshold
Esta sección describe la sintaxis para referirse a variables
estructuradas. Para los ejemplos de sintaxis se emplean
variables de caché de claves, pero los detalles específicos
sobre cómo funcionan los cachés de claves se encuentran en
Sección 7.4.6, “La caché de claves de MyISAM
”.
Para referirse a un componente de una instancia de una variable
estructurada, se emplea un nombre compuesto con el formato
nombre_instancia.nombre_componente
. Ejemplos:
hot_cache.key_buffer_size hot_cache.key_cache_block_size cold_cache.key_cache_block_size
Siempre hay predefinida una instancia con el nombre
default
para cada variable de sistema
estructurada. Si se hace referencia a un componente de una
variable estructurada sin mencionar el nombre de instancia, se
utiliza default
. Por lo tanto,
default.key_buffer_size
y
key_buffer_size
se refieren a la misma
variable de sistema.
Las reglas para la denominación de instancias y componentes pertenecientes a variables estructuradas son las siguientes:
Para un determinado tipo de variable estructurada, cada
instancia debe tener un nombre que sea único
dentro de ese tipo de variable. Sin
embargo, los nombres de instancia no necesitan ser únicos
a través de distintos tipos de
variable estructurada. Por ejemplo, cada variable
estructurada tiene una instancia llamada
default
, así que
default
no es único a través de
distintos tipos de variable.
Los nombres de los componentes de cada tipo de variable estructurada deben ser únicos a través de todos los nombres de variables de sistema. Si esto no fuese así (o sea, si dos tipos diferentes de variable estructurada compartiesen nombres de miembros), no sería posible determinar la variable estructurada por defecto a emplear cuando un nombre de miembro no estuviese precedido por un nombre de instancia.
Si un nombre de instancia de variable estructurada no fuese
legal al usarlo como identificador sin delimitar, habrá que
referirse a él delimitándolo con acentos graves (ASCII
96). Por ejemplo, hot-cache
no es un
nombre legal, pero `hot-cache`
lo es.
global
, session
, y
local
no son nombres legales de
instancia. Esto evita conflictos con notaciones del tipo
@@global.
,
que se utilizan para hacer referencias a variables de
sistema no estructuradas.
nombre_var
Actualmente, las primeras dos reglas no tienen posibilidad de ser infringidas, porque el único tipo de variable estructurada es el empleado para cachés de claves. Estas reglas cobrarán mayor significado si en el futuro se crean otros tipos de variable estructurada.
Con una excepción, se puede hacer referencia a los componentes de una variable estructurada utilizando nombres compuestos en cualquier contexto en que puedan aparecer nombres simples de variable. Por ejemplo, se puede asignar un valor a una variable estructurada empleando una opción de línea de comandos:
shell> mysqld --hot_cache.key_buffer_size=64K
En un fichero de opciones, se utilizaría:
[mysqld] hot_cache.key_buffer_size=64K
Si se inicia el servidor con esta opción, crea un caché de
claves llamado hot_cache
con un tamaño de
64KB adicionalmente al caché por defecto, que tiene un tamaño
predeterminado de 8MB.
Suponiendo que se inicie el servidor de esta manera:
shell> mysqld --key_buffer_size=256K \ --extra_cache.key_buffer_size=128K \ --extra_cache.key_cache_block_size=2048
En este caso, el servidor establece el tamaño del caché de
claves pedeterminado a 256KB. (También se podría haber escrito
--default.key_buffer_size=256K
.)
Adicionalmente, el servidor crea un segundo caché llamado
extra_cache
con un tamaño de 128KB, y fija
un tamaño de 2048 bytes para los buffers de bloque destinados
al caché de bloques de índice de tablas.
El siguiente ejemplo inicia el servidor con tres diferentes cachés de claves, manteniendo sus tamaños en una proporción de 3:1:1:
shell> mysqld --key_buffer_size=6M \ --hot_cache.key_buffer_size=2M \ --cold_cache.key_buffer_size=2M
Los valores de las variables estructuradas también pueden
establecerse y leerse en tiempo de ejecución. Por ejemplo, para
establecer a 10MB el tamaño de un caché de claves llamado
hot_cache
, pueden emplearse cualquiera de
estas sentencias:
mysql> SET GLOBAL hot_cache.key_buffer_size = 10*1024*1024; mysql> SET @@global.hot_cache.key_buffer_size = 10*1024*1024;
Para obtener el tamaño del caché, se realiza lo siguiente:
mysql> SELECT @@global.hot_cache.key_buffer_size;
Sin embargo, las siguientes sentencias no funcionarán. La
variable no es interpretada como un nombre compuesto, sino como
una cadena proporcionada a LIKE
para buscar
coincidencias con un patrón.
mysql> SHOW GLOBAL VARIABLES LIKE 'hot_cache.key_buffer_size';
Esta es la excepción mencionada sobre la posibilidad de utilizar en cualquier sitio un nombre de variable estructurada del mismo modo que se hace con una variable simple.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.