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.

