13.5.2.1. Sintaxis de
ANALYZE TABLE
ANALYZE TABLE
ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
Este comando analiza y almacena la distribución de clave
para una tabla. Durante el análisis, la tabla se bloquea con
un bloqueo de lectura. En MySQL 5.0, funciona en tablas
MyISAM,
, y
BDBInnoDB . Para
tablas MyISAM , este comando es
equivalente a usar myisamchk -a.
MySQL usa la distribución de claves almacenada para
decidir el orden en que las tablas deben hacer los joins
cuando realiza uno en algo que no sea una constante.
El comando retorna una tabla con las siguientes columnas:
Columna
Valor
Tabla
Nombre de tabla
Op
Siempre analyze
Msg_type
Es status,
error,
info, o
warning
Msg_text
Mensaje
Puede chequear la distribución de claves almacenada con
el comando SHOW INDEX .
Consulte
Sección 13.5.4.11, ?Sintaxis de SHOW
?.
INDEX
Si la tabla no ha cambiado desde el último comando
ANALYZE TABLE , la tabla no se
vuelve a analizar.
En MySQL 5.0, los comandos ANALYZE
se escriben en el log binario a no ser que la
TABLE
palabra clave NO_WRITE_TO_BINLOG
opcional (o su alias LOCAL) se
use.
13.5.2.2. Sintaxis de
BACKUP TABLE
BACKUP TABLE
BACKUP TABLE tbl_name [, tbl_name] ... TO '/path/to/backup/directory'
Nota: Este
comando está obsoleto. Estamos trabajano en un mejor
sustituto para este que proporcionará capacidades de copia
de seguridad en línea. De momento, el script
mysqlhotcopy puede usarse.
BACKUP TABLE copia al
directorio de base de datos el mínimo número de ficheros de
tablas necesarias para restaurar la tabla, tras volcar
cualquier cambios almacenados en el buffer a disco. El
comando funciona sólo para tablas
. Copia los ficheros de definición
MyISAM
.frm y de datos
.MYD . El fichero índice
.MYI puede reconstruirse desde
estos otros. El directorio debe especificarse con la ruta
entera.
Antes de usar este comando consulte
Sección 5.8.1, ?Copias de seguridad de bases de datos?.
Durante la copia de seguridad, se realiza un bloqueo de
lectura para cada tabla, uno cada vez, mientras se hace la
copia. Si quier hacer una copia de seguridad de varias
tablas como una muestra (evitando que ninguna de ellas se
cambie durante la operación de la copia de seguridad), debe
realizar un comando LOCK TABLES
para obtener un bloqueo de lectura para cada tabla en el
grupo.
El comando retorna una tabla con las siguientes columnas:
Columna
Valor
Tabla
Nombre de tabla
Op
Siempre backup
Msg_type
Es status,
error,
info, o
warning
Msg_text
Mensaje
13.5.2.3. Sintaxis de
CHECK TABLE
CHECK TABLE
CHECK TABLE tbl_name [, tbl_name] ... [option] ...
option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}
Chequea una tabla o tablas para errores.
CHECK TABLE funciona para
tablas MyISAM y
InnoDB . Para tablas
MyISAM , la estadística de
clave se actualiza.
Desde MySQL 5.0.2, CHECK TABLE
puede comprobar las vistas en busca de problemas tales como
tablas que se referencian en la definición de la vista que
ya no existe.
El comando CHECK TABLE
retorna una tabla con las siguientes columnas:
Columna
Valor
Tabla
Nombre de tabla
Op
Siempre check
Msg_type
Es status,
error,
info, o
warning
Msg_text
Mensaje
Tenga en cuenta que el comando puede producir varios
registros para información de cada tabla chequeada. El
último registro tiene un valor
de
Msg_typestatus y
Msg_text normalmente debe ser
OK. Si no obtiene
OK, o
debe realizar una
Table is already up to date
reparación de la tabla. Consulte
Sección 5.8.3, ?Mantenimiento de tablas y recuperación de un
fallo catastrófico (crash)?. Table
significa que el motor de
is already up to date
almacenamiento para la tabla indicada indica que no hay
necesidad de chequear la tabla.
Las distintas opciones de chequeo que pueden darse se
muestran en la siguiente tabla. Estas opciones se aplican
sólo para tablas MyISAM y se
ignoran en tablas InnoDB y
vistas.
Tipo
Significado
QUICK
No escanea los registros para chequear
enlaces incorrectos.
FAST
Sólo chequea tablas que no se han cerrado
correctamente.
CHANGED
Sólo las tablas chequeadas que se han
cambiado desde el úlitmo chequeo o no se han
cerrado correctamente.
MEDIUM
Escanea registros para verificar que los
enlaces borrados están bien. También calcula el
checksum de la clave para los registros y lo
verifica con el checksum calculado para las
claves.
EXTENDED
Realiza una búsqueda completa para todas las
claves para cada registro. Se asegura que la
tabla es consistente 100%, pero tarda mucho
tiempo!
Si ninguna de las opciones QUICK,
MEDIUM, o
se especifica, el tipo de chequeo por
EXTENDED
defecto para tablas de formato dinámico
MyISAM es
. Esto es lo mismo que ejecutar
MEDIUM
myisamchk --medium-check
tbl_name
en la tabla. El tipo de chequeo por defecto también es
MEDIUM para tablas
MyISAM de formato estático, a
no ser que se especifique CHANGED
o FAST. En tal caso, por
defecto es QUICK. El escaneo de
registro se evita para CHANGED
y FAST porque los registros
están corruptos muy raramente.
Puede combinar opciones de chequeo, como en el siguiente
ejemplo, que realiza un chequeo rápido de la tabla para ver
si se cerró correctamente:
CHECK TABLE test_table FAST QUICK;
Nota: En
algunos casos, CHECK TABLE
cambia la tabla. Esto ocurre si la tabla se marca como ?corrupted?
o ?not closed properly? pero
CHECK TABLE no encuentra ningún
problema en la tabla. En este caso,
marca la tabla como correcta.
CHECK TABLE
Si una tabla está corrupta, es más probable que el
problema esté en el índice y no en la parte de datos. Todos
los tipos de chequeo chequean los índices profundamente y
deberían encontrar la mayoría de errores.
Si quiere chequear una tabla que asume como correcta, no
debe usar opciones de chequeo o la opción
QUICK. Ésta debe usarse cuando
tiene prisa y puede permitirse el pequeño riesgo que
QUICK no encuentre un error en
el fichero de datos. (En la mayoría de casos, MySQL debería
encontrar, bajo uso normal, cualquier error en el fichero de
datos. Si esto ocurre, la tabla se marca como ?corrupted?
y no puede usarse hasta que se repare.)
FAST y
están pensados para usar desde un script (por
CHANGED
ejemplo, para ejecutarse desde cron)
si quiere chequear sus tablas de vez en cuando. En la
mayoría de casos, FAST se
prefiere en lugar de CHANGED.
(El único caso en que no es el método preferido es cuando
sospecha que ha encontrado un bug en el código
MyISAM .)
EXTENDED debe usarse sólo
después de ejecutar un chequeo normal pero todavía obtiene
errores extraños de la tabla cuando MySQL intenta actualizar
un registro o encuentra un registro mediante la clave. (Esto
es muy improbable si un chequeo normal ha tenido éxito.)
Algunos problemas reportados por
no pueden corregirse automáticamente:
CHECK TABLE
Found row where the
auto_increment column has the value 0.
Esto significa que tiene un registro en la tabla
donde la columna
contiene un valor de índice de
AUTO_INCREMENT
0. (Es posible crear un registro donde la columna
AUTO_INCREMENT es 0
poneindo la columna explícitamente a 0 con un
comando UPDATE .)
Esto no es un error por si mismo, pero puede
causar problemas si decide volcar la tabla y
restaurarla o realizar un
en la tabla. En este caso, la
ALTER TABLE
columna AUTO_INCREMENT
cambia los valores según las reglas de las columnas
AUTO_INCREMENT , que
pueden causar problemas tales como errores de clave
duplicada.
Para evitar las advertencias, símplemente ejecute
un comando UPDATE para
poner en la columna un valor distinto a 0.
13.5.2.4. Sintaxis de
CHECKSUM TABLE
CHECKSUM TABLE
CHECKSUM TABLE tbl_name [, tbl_name] ... [ QUICK | EXTENDED ]
Reporta un checksum de tabla.
Si QUICK se especifica, el
checksum de la tabla se reporta si está disponible, o
NULL en otro caso. Esto es muy
rápido. Un checksum en vivo está permitido especificando la
opción de tabla CHECKSUM=1 ,
actualmente sólo soportado por tablas
. Consulte
MyISAM
Sección 13.1.5, ?Sintaxis de CREATE
?.
TABLE
En modo EXTENDED la tabla
completa se lee registro a registro y se calcula el
checksum. Esto puede ser muy lento para tablas grandes.
Por defecto, si no se especifica ni
ni
QUICKEXTENDED ,
MySQL retorna un checksum en vivo si el motor de tabla lo
soporta y escanea la tabla de otro modo.
CHECKSUM TABLE retorna
NULL para tablas no existentes.
Desde MySQL 5.0.3, se genera una advertencia para esta
condición.
13.5.2.5. Sintaxis de
OPTIMIZE TABLE
OPTIMIZE TABLE
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
OPTIMIZE TABLE debe usarse
si ha borrado una gran parte de la tabla o si ha hecho
varios cambios en una tabla con registros de longitud
variable (tablas que tienen columnas
,
VARCHARBLOB, o
TEXT ). Los registros borrados
se mantienen en una lista enlazada y operaciones
INSERT posteriores reúsan
posiciones de antiguos registros. Puede usar
OPTIMIZE TABLE para reclamar el
usuario no usado y para defragmentar el fichero de datos.
En la mayoría de inicializaciones, no necesita ejecutar
OPTIMIZE TABLE para nada.
Incluso si hace muchas actualizaciones a registros de
longitud variables, no es probable que necesite hacerlo más
de una vez a la semana o mes y sólo en ciertas tablas.
Actualmente, OPTIMIZE TABLE
funciona sólo en tablas MyISAM,
BDB y
.
InnoDB
Para tablas MyISAM ,
OPTIMIZE TABLE funciona como
sigue:
Si la tabla ha borrado o dividido registros,
repare la tabla.
Si las páginas índice no están ordenadas,
ordénelas.
Si las estadísticas no están actualizadas (y la
reparación no puede hacerse ordenando el índice),
actualícelas.
Para tablas BDB ,
OPTIMIZE TABLE es mapea como
ANALYZE TABLE. Para tablas
InnoDB , se mapea con
ALTER TABLE, que reconstruye la
tabla. Reconstruye las estadísticas actualizadas de índice y
libera espacio no usado en el índice clusterizado. Consulte
Sección 13.5.2.1, ?Sintaxis de ANALYZE
?.
TABLE
Puede hacer que OPTIMIZE TABLE
funcione con otros tipos de tabla arrancando
mysqld con la opción
--skip-new o
--safe-mode ; en este caso
OPTIMIZE TABLE se mapea con
ALTER TABLE.
Tenga en ceunta que MySQL bloquea la tabla mientras se
ejecuta OPTIMIZE TABLE .
En MySQL 5.0, los comandos OPTIMIZE
se escriben en el log binario a no ser que la
TABLE
palabra NO_WRITE_TO_BINLOG
opcional(o su alias LOCAL) se
use. Esto se hace para que los comandos
OPTIMIZE TABLE se usen en MySQL
server actuando como maestro de replicación se replique por
defecto en el esclavo de replicación.
13.5.2.6. Sintaxis de
REPAIR TABLE
REPAIR TABLE
REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE
tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]
REPAIR TABLE repara una
tabla posiblemente corrupta. Por defecto, tiene el mismo
efecto que myisamchk --recover
tbl_name.
REPAIR TABLE funciona sólo en
tablas MyISAM.
Normalmente nunca debe ejecutar este comando. Sin
embargo, si hay un desastre, REPAIR
puede recuperar todos los datos de una tabla
TABLE
MyISAM . Si sus tablas se
corrompen a menudo, debe intentar encontrar la razón de lo
que lo causa, para eliminar la necesidad de usar
REPAIR TABLE. Consulte
Sección A.4.2, ?Qué hacer si MySQL sigue fallando
(crashing)?. Consulte
Sección 14.1.4, ?Problemas en tablas
?.
MyISAM
El comando retorna una tabla con las siguientes columnas:
Columna
Valor
Tabla
Nombre de tabla
Op
Siempre es repair
Msg_type
Es status,
error,
info, o
warning
Msg_text
Mensaje
El comando REPAIR TABLE
puede producir muchos registros de información para cada
tabla reparada. El último registro tiene un valor
Msg_type de
status y
normalmente debe ser
Msg_test
. Si no obtiene
OKOK,
debe intentar reparar la tabla con
myisamchk --safe-recover, ya que
REPAIR TABLE no implementa
todas las opciones de myisamchk.
Plaenamos hacerlo más flexible en el futuro.
Si se da QUICK ,
REPAIR TABLE intenta reparar
sólo el árbol índice. Este tipo de reparación es como lo que
hace myisamchk --recover --quick.
Si usa EXTENDED, MySQL crea
el índice registro a registro en lugar de crear un índice a
la vez ordenando. Este tipo de reparación es como el hecho
por myisamchk --safe-recover.
También hay un modo USE_FRM
disponible en MySQL 5.0 para REPAIR
. Use esto si el fichero índice
TABLE
.MYI no existe o su cabecera
está corrupta. En este modo, MySQL recrea el fichero
.MYI usando información desde
el fichero .frm . Este tipo de
reparación no puede hacerse con
myisamchk. Nota:
Use este modo sólo
si no puede usar modos REPAIR
normalmente. La cabecera .MYI
contiene información importante de metadatos (en particular,
los valores actuales AUTO_INCREMENT
y Delete link) que se pierden
en REPAIR ... USE_FRM. No use
USE_FRM si la tabla está
comprimida, ya que esta información se almacena en el
fichero .MYI .
En MySQL 5.0, los comandos REPAIR
se escriben en el log binario a no ser que la
TABLE
palabra opcional NO_WRITE_TO_BINLOG
(o su alias LOCAL) se use.
Atención: Si
el servidor muere durante una operación
REPAIR TABLE, es esencial tras
restaurarla que inmediatamente ejecute otro comando
REPAIR TABLE para la tabla
antes de realizar cualquier otra operación en ella. (Siempre
es una buena idea empezar haciendo una copia de seguridad.)
En el peor caso, puede tener un nuevo fichero índice limpio
sin información acerca del fichero de datos, y luego la
siguiente operación que realice puede sobreescribir el
fichero de datos. Este es un escenario improbable pero
posible.
13.5.2.7. Sintaxis de
RESTORE TABLE
RESTORE TABLE
RESTORE TABLE tbl_name [, tbl_name] ... FROM '/path/to/backup/directory'
Restaura la tabla o tablas de una copia de seguridad que
se hizo con BACKUP TABLE. Las
tablas existentes no se sobreescriben; si trata restaurar
una tabla existente, obtiene un error. Pero como
BACKUP TABLE,
RESTORE TABLE actualmente
funciona sólo para tablas MyISAM
. El directorio debe especificarse como una ruta completa.
La copia de seguridad para cada tabla consiste en su
fichero de formato .frm y
fichero de datos .MYD . La
operación de restauración restaura aquellos ficheros, luego
los usa para reconstruir el fichero índice
.MYI. La restauración tarda
más tiempo que la copia de seguridad debido a la necesidad
de reescribir los índices. Mientras más índices tenga la
tabla, más tarda.
El comando retorna una tabla con las siguientes columnas:
Columna
Valor
Tabla
Nombre de tabla
Op
Siempre restore
Msg_type
Es status,
error,
info, o
warning
Msg_text
Mensaje
13.5.3. Sintaxis de
SET
SET
SET variable_assignment [, variable_assignment] ...
variable_assignment:
user_var_name = expr
| [GLOBAL | SESSION] system_var_name = expr
| @@[global. | session.]system_var_name = expr
SET inicializa distintos tipos
de variables que afectan la operación del servidor o de su
cliente. Puede usarse para asignar valores a las variables de
usuario o de sistema.
El comando SET PASSWORD para
asignar contraseñas de cuenta se describen en
Sección 13.5.1.5, ?Sintaxis de SET
?.
PASSWORD
La mayoría del sistema puede cambiarse en tiempo de
ejecución. Las variables de sistema que pueden describirse
dinámicamente se describen en
Sección 5.3.3.1, ?Variables de sistema dinámicas?.
Nota: Las versiones
antiguas de MySQL empleaban SET OPTION
para este comando, pero su uso está obsoleto en favor de
SET.
El siguiente ejemplo muestra las distintas sintaxis que puede
usar para cambiar las variables.
Una variable de usuario se escribe como
y
@var_name
puede cambiarse como sigue:
SET @var_name = expr;
Más información sobre variables de usuario se da en
Sección 9.3, ?Variables de usuario?.
Se puede referir a las variables de sistema en comandos
SET como
var_name. El nombre puede ir precedido
opcionalmente por GLOBAL o
@@global. para indicar
explícitamente que la variable es global, o por
SESSION,
, o
@@session.@@ para
indicar que es una variable de sesión.
y
LOCAL@@local. son
sinónimos para SESSION y
@@session.. Si no hay modificador
presente, SET asigna un valor a la
variable de sesión.
La sintaxis @@
var_name
para variables de sistema se soporta para hacer la sintaxis de
MySQL compatible con otros sistemas de base de datos.
Si cambia varias variables de sistema en el mismo comando, la
última opción GLOBAL o
SESSION usada se usa para variables
que no tienen modo especificado.
SET sort_buffer_size=10000;
SET @@local.sort_buffer_size=10000;
SET GLOBAL sort_buffer_size=1000000, SESSION sort_buffer_size=1000000;
SET @@sort_buffer_size=1000000;
SET @@global.sort_buffer_size=1000000, @@local.sort_buffer_size=1000000;
Si cambia una variable de sistema usando
SESSION (por defecto), el valor
queda en efecto hasta que la sesión actual finaliza o hasta que
cambia la variable con un valor distinto. Si cambia la variable
de sistema usando GLOBAL, que
requiere el permiso SUPER , el
valor se recuerda y se usa para nuevas conexiones hasta que el
servidor se reinicia. Si quiere hacer un cambio de variable
permanente, debe ponerlo en un fichero de opciones. Consulte
Sección 4.3.2, ?Usar ficheros de opciones?.
Para evitar uso incorrecto, MySQL produce un error si usa
SET GLOBAL con una variable que
sólo puede ser usada con SET SESSION
o si no especifica GLOBAL (o
@@) cuando cambie una variable
global.
Si quiere cambiar una variable SESSION
al valor GLOBAL o un valor
GLOBAL al valor de compilación de
MySQL por defecto, puede hacerlo con
. Por ejemplo, los siguientes dos comandos son
DEFAULT
idénticos en cambiar los valores de sesión o
max_join_size al valor global:
SET max_join_size=DEFAULT;
SET @@session.max_join_size=@@global.max_join_size;
Puede obtener una lista de la mayoría de variables de sistema
con SHOW VARIABLES. (Consulte
Sección 13.5.4.21, ?Sintaxis de SHOW
?.) Para obtener un nombre de variable
VARIABLES
específico, use una cláusula LIKE
commo se muestra:
SHOW VARIABLES LIKE 'max_join_size';
SHOW GLOBAL VARIABLES LIKE 'max_join_size';
Para obtener una lista de variables cuyos nombres coinciden
con un patrón, use el comodín '%':
SHOW VARIABLES LIKE 'have%';
SHOW GLOBAL VARIABLES LIKE 'have%';
El comodín puede usarse en cualquier posición dentro del
patrón para coincidir.
Puede obtener el valor de un valor específico usando la
sintaxis @@[global.|local.]var_name
con SELECT:
SELECT @@max_join_size, @@global.max_join_size;
Cuando recibe una variable con SELECT
(esto es,no especifica
@@var_name
,
global.session., o
local.), MySQL retorna el valor
SESSION si existe y el valor
GLOBAL en otro caso.
La siguiente lista describe variables que tienen sintaxis no
estándar o que no se describe en la lista de variables de
sistema que se encuentra en
Sección 5.3.3, ?Variables de sistema del servidor?. Aunque
estas variables no se muestran con SHOW
, puede obtener sus valores con
VARIABLES
SELECT (con la excepción de
CHARACTER SET y
SET NAMES). Por ejemplo:
mysql> SELECT @@AUTOCOMMIT;
+--------------+
| @@autocommit |
+--------------+
| 1 |
+--------------+
AUTOCOMMIT = {0 | 1}
Pone el modo autocommit . Con valor
1, todos los cambios de una
tabla toman efecto inmediatamente. Si se pone a
0, debe usar
COMMIT para aceptar una
transacción o ROLLBACK para
cancelarla. Si cambia el modo
de
AUTOCOMMIT0 a
1, MySQL realiza un
COMMIT automático de
cualquier transacción abierta . Otra forma de comenzar
una transacción es usar un comando
o
START TRANSACTIONBEGIN.
Consulte
Sección 13.4.1, ?Sintaxis de START
,
TRANSACTIONCOMMIT
y ROLLBACK?.
BIG_TABLES = {0 | 1}
Si se pone a 1, todas
las tablas temporales se almacenan en disco en lugar que
en memoria. Esto es un poco lento, pero el error
The table
no ocurre para
tbl_name is full
operaciones SELECT que
requieran una tabla temporal grande. El valor por
defecto para una nueva conexión es
(use tablas temporales en memoria).
0
Normalmente, nunca debería necesitar usar esta variable,
ya que MySQL 5.0 convierte automáticamente tablas en
memoria a tablas en disco como se requiere. (Nota:
Esta variable se llamaba préviamente
SQL_BIG_TABLES.)
CHARACTER SET {charset_name
| DEFAULT}
Esto mapea todas las cadenas desde y hacia el cliente
con el mapeo dado. Puede añadir nuevos mapeos editando
sql/convert.cc en la
distribución fuente MySQL. En MySQL 5.0,
SET CHARACTER SET cambia
tres variables de sistema
y
character_set_client
se actualizan con el
character_set_results
conjunto de carácteres dado, y
al valor de
character_set_connection
character_set_database.
El mapeo por defecto puede restaurarse usando el
valor DEFAULT.
Tenga en cuenta que la sintaxis para
SET CHARACTER SET difiere
de la de la mayoría de otras opciones.
FOREIGN_KEY_CHECKS = {0 | 1}
Con valor de 1 (por
defecto), las claves foráneas para tablas
InnoDB se chequean. Si se
pone a 0, se ignoran.
Deshabilitar el chequeo de clave foránea puede ser útil
para recargar tablas InnoDB
en un orden distinto que el requerido por sus relaciones
padre/hijo, Consulte
Sección 15.6.4, ?Restricciones (constraints)
FOREIGN KEY?.
IDENTITY =
value
La variable es un sinónimo para la variable
LAST_INSERT_ID . Existe por
compatibilidad con otras bases de datos. Puede leer su
valor con SELECT @@IDENTITY,
y cambiarlo mediante SET IDENTITY.
INSERT_ID =
value
Cambia el valor a ser usado por los comandos
INSERT o
ALTER TABLE al insertar un
valor AUTO_INCREMENT . Esto
se usa principalmente con el lob binario.
LAST_INSERT_ID =
value
Cambia el valor a ser retornado de
LAST_INSERT_ID(). Esto se
almacena en el log binario cuando usa
LAST_INSERT_ID() en un
comando que actualice una tabla. Cambiar esta variable
no actualiza el valor retornado por la función de la
mysql_insert_id() API de C.
NAMES {'charset_name'
| DEFAULT}
SET NAMES cambia tres
variables de sesión de sistema
,
character_set_client
, y
character_set_connection
al conjunto de carácteres
character_set_results
dado. Cambiar
a
character_set_connection
también cambia
charset_name
a la colación por defecto
collation_connection
para charset_name.
El mapeo por defecto puede restaurarse usando un
valor de DEFAULT.
Tenga en cuenta que la sintaxis para
SET NAMES difiere de la
usada para la mayoría de otras opciones.
SQL_NOTES = {0 | 1}
Con el valor 1 (por defecto), advertencias del nivel
Note se registran. Con
valor 0, las advertencias Note
se suprimen. mysqldump
incluye la salida para cambiar esta variable a 0 así que
recargar el fichero volcado no produce advertencias para
eventos que no afectan a la integridad de la operación
de recarga. SQL_NOTES se
añadió en MySQL 5.0.3.
SQL_AUTO_IS_NULL = {0 | 1}
Con valor 1 (por
defecto), puede encontrar el último registro insertado
para una tabla que contiene una columna
AUTO_INCREMENT usando el
siguiente constructor:
WHERE auto_increment_column IS NULL
Este comportamiento lo usan algunos programas ODBC,
como Access.
SQL_BIG_SELECTS = {0 | 1}
Con valor 0, MySQL
aborta los comandos SELECT
que probablemente tardarán mucho tiempo (esto es,
comandos para los que el optimizador estima que el
número de registros examinados excede el valor de
max_join_size). Esto es
útil cuando un comando WHERE
no aconsejable se ejecuta. El valor por defecto para una
nueva conexión es 1, que
permite todos los comandos SELECT
.
Si cambia la variable de sistema
max_join_size a un valor
distinto a DEFAULT,
SQL_BIG_SELECTS se pone a
0.
SQL_BUFFER_RESULT = {0 | 1}
SQL_BUFFER_RESULT fuerza
los resultados de los comandos
a poner en tablas temporales. Esto ayuda a
SELECT
MySQL a liberar los bloqueos de tabla rápidamente y
pueden ser beneficioso en caso que tarde un largo tiempo
para enviar resultados al cliente.
SQL_LOG_BIN = {0 | 1}
Con valor 0, no se
realiza logueo en el log binario para el cliente. El
cliente debe tener el permiso
para cambiar esta opción.
SUPER
SQL_LOG_OFF = {0 | 1}
Con valor 1 realiza logueo en el log de consultas generales para el
cliente. El cliente debe tener el permiso
SUPER para cambiar esta
opción.
SQL_LOG_UPDATE = {0 | 1}
Esta variable está obsoleta, y es mapea a
SQL_LOG_BIN.
SQL_QUOTE_SHOW_CREATE = {0 |
1}
Con valor 1,
SHOW CREATE TABLE
entrecomilla los nombres de tabla y columnas. Si se pone
a 0, se desactiva el
entrecomillado. Esta opción está activada por defecto,
así que la replicación funciona para tablas con nombres
de tabla y columna que no lo requieren. Consulte
Sección 13.5.4.5, ?Sintaxis de
?.
SHOW CREATE TABLE
SQL_SAFE_UPDATES = {0 | 1}
Con valor 1, MySQL
aborta comandos UPDATE o
DELETE que no usan una
clave en la cláusula WHERE
o LIMIT . Esto hace posible
cazar los comandos UPDATE o
DELETE donde las claves no
se usan apropiadamente y que probablemente cambiarían o
borrarían un gran número de registros.
SQL_SELECT_LIMIT = {value
| DEFAULT}
El máximo número de registros a retornar desde
comandos SELECT . El valor
por defecto para una nueva conexión es ?unlimited.?
Si cambia este límite, el valor por defecto puede
restaurarse usando un valor
de
SQL_SELECT_LIMITDEFAULT.
Si un SELECT tiene una
cláusula LIMIT el
LIMIT tiene preferencia
sobre el valor de SQL_SELECT_LIMIT.
SQL_SELECT_LIMIT no se
aplica a comandos SELECT
ejecutados en rutinas almacenadas. Tampoco se aplica a
comandos SELECT que no
producen un conjunto de resultados a ser retornado al
cliente. Esto incluye comandos
en subconsultas,
SELECT
, y
CREATE TABLE ... SELECT
.
INSERT INTO ... SELECT
SQL_WARNINGS = {0 | 1}
Esta variable controla si comandos
INSERT de un registro
producen una cadena de información si hay una
advertencia. Por defecto es 0. Cambie el valor a 1 para
producir una cadena de información.
TIMESTAMP = {timestamp_value
| DEFAULT}
Cambia la hora del cliente. Se usar para obtener la
fecha y hora original si usa el log binario para
restaurar registros.
debe ser un Unix epoch timestamp,
timestamp_value
no un timestamp de MySQL.
UNIQUE_CHECKS = {0 | 1}
Con valor 1 (por
defecto), se realizan chequeos en tablas
InnoDB para índices
secundarios. Con valor 0,
no se hacen chequeos de valores únicos para entradas de
índices insertados en el búffer de inserción de InnoDB.
Si sabe con certeza que sus datos no contienen
violaciones de valores únicos, puede ponerlo a 0 para
acelerar importaciones de tablas grandes a InnoDB.
Creditos: É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.
