Sentencias para el mantenimiento de tablas mysql










13.5.2.1. Sintaxis de
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,
BDB
, y InnoDB . 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
TABLE
se escriben en el log binario a no ser que la
palabra clave NO_WRITE_TO_BINLOG
opcional (o su alias LOCAL) se
use.






13.5.2.2. Sintaxis de
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
MyISAM
. Copia los ficheros de definición
.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 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
Msg_type
de status y
Msg_text normalmente debe ser
OK. Si no obtiene
OK, o
Table is already up to date
debe realizar una
reparación de la tabla. Consulte

Sección 5.8.3, ?Mantenimiento de tablas y recuperación de un
fallo catastrófico (crash)?
. Table
is already up to date
significa que el motor de
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
EXTENDED
se especifica, el tipo de chequeo por
defecto para tablas de formato dinámico
MyISAM es
MEDIUM
. Esto es lo mismo que ejecutar
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,
CHECK TABLE
marca la tabla como correcta.


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
CHANGED
están pensados para usar desde un script (por
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
CHECK TABLE
no pueden corregirse automáticamente:




Found row where the
auto_increment column has the value 0
.

Esto significa que tiene un registro en la tabla
donde la columna
AUTO_INCREMENT
contiene un valor de índice de
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
ALTER TABLE
en la tabla. En este caso, la
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 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
MyISAM
. Consulte

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
QUICK
ni EXTENDED ,
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 [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
VARCHAR
, BLOB, 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
TABLE
se escriben en el log binario a no ser que la
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 [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
TABLE
puede recuperar todos los datos de una tabla
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
Msg_test
normalmente debe ser
OK
. Si no obtiene OK,
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
TABLE
. Use esto si el fichero índice
.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
TABLE
se escriben en el log binario a no ser que la
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 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 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
@var_name
y
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,
@@session.
, o @@ para
indicar que es una variable de sesión.
LOCAL
y @@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
DEFAULT
. Por ejemplo, los siguientes dos comandos son
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
VARIABLES
?
.) Para obtener un nombre de variable
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
@@var_name
(esto es,no especifica
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
VARIABLES
, puede obtener sus valores con
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
AUTOCOMMIT
de 0 a
1, MySQL realiza un
COMMIT automático de
cualquier transacción abierta . Otra forma de comenzar
una transacción es usar un comando
START TRANSACTION
o BEGIN.
Consulte

Sección 13.4.1, ?Sintaxis de START
TRANSACTION
, COMMIT
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
tbl_name
is full
no ocurre para
operaciones SELECT que
requieran una tabla temporal grande. El valor por
defecto para una nueva conexión es
0
(use tablas temporales en memoria).
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
character_set_client
y
character_set_results
se actualizan con el
conjunto de carácteres dado, y
character_set_connection
al valor de
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
,
character_set_connection
, y
character_set_results
al conjunto de carácteres
dado. Cambiar
character_set_connection
a
charset_name
también cambia
collation_connection
a la colación por defecto
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
SELECT
a poner en tablas temporales. Esto ayuda a
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
SUPER
para cambiar esta opción.


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
SQL_SELECT_LIMIT
de DEFAULT.


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
SELECT
en subconsultas,
CREATE TABLE ... SELECT
, y
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.
timestamp_value
debe ser un Unix epoch timestamp,
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.


 


  • 29 istifadəçi bunu faydalı hesab edir
Bu cavab sizə kömək etdi?

Uyğun məqalələr