Anuncios

Bienvenidos sean a este post, hoy veremos la instruccion CHECK TABLE.

Anuncios

Esta instruccion debe ser usado cuando al trabajar con una tabla a traves de una instruccion de SQL nos devuelve un error de que la misma esta dañada, les paso un ejemplo:

MariaDB [base3]> SELECT * FROM producto;
ERROR 130 (HY000): Incorrect file format 'producto'
Anuncios

Otro caso que puede suceder es que mariadb no se de cuenta que la tabla esta dañada y por lo tanto no nos notifica como en el caso anterior pero si podemos observar que nos devuelve campos con valores vacios, pero en el peor de los casos nos detiene al servidor, si periodicamente buscamos en el log de errores por estas detenciones veremos que antes de estas InnoDB nos informara que una tabla esta corrupta.

Anuncios

Si sospechamos que una tabla esta corrupta pero no estamos seguros ahi entra en accion la instruccion CHECK TABLE, la cual nos permitira chequear la integirdad sin reiniciar el servidor, los siguientes motores de almacenamiento soportan esta instruccion:

  • InnoDB
  • MyIsam
  • Aria
  • Archive
  • CSV
Anuncios

Veamos como es su sintaxis:

CHECK TABLE <lista_tablas> [opciones…];
Anuncios

Esta sintaxis sera para chequear toda las tablas informadas en lista_tablas, pero tambien podemos chequear particiones de una o mas tablas, veamos su sintaxis:

ALTER TABLE <nombre_tablas> CHECK PARTITION <lista_particiones> [opciones…];
Anuncios

Los valores que pasemos en nombre_tablas o lista_particiones deben estar separados por comas, todos estos valores deben estar y las opciones son las opcionales que podemos informar o no, veamos a continuacion las disponibles:

  • FOR UPGRADE, esto es especialmente util cuando importamos tablas con archivos creados en versiones viejas de mariadb
  • CHANGED, chequeara solo las tablas que fueron modificadas desde el ultimo CHECK TABLE ejecutado
  • FAST, esta chequea si las tablas se cerraron apropiadamente o no, o si las tablas o indices estan marcadas como corruptos, despues de un inconveniente con el servidor esta seria la mejor opcion para detectar corrupciones de tabla pero solo funcion con las tablas Aria y MyIsam
  • QUICK, esto no chequea la cadena de enlace de eliminacion, porque esta operacion lleva mucho tiempo, pero detecta la mayoria de los tipos de corrupcion
  • MEDIUM, hace un chequeo de la integridad de los datos e indices a traves del chequeo de sus checksums, es raro que una anomalia no sea detectada, esta es la opcion predeterminada
  • EXTENDED, ejecuta una chequeo de integridad completo, es el que toma mas tiempo
Anuncios

Si chequeamos una tabla y no presenta inconvenientes veremos una salida como esta:

MariaDB [base3]> check table t1;
+----------+-------+----------+----------+
| Table    | Op    | Msg_type | Msg_text |
+----------+-------+----------+----------+
| base3.t1 | check | status   | OK       |
+----------+-------+----------+----------+
1 row in set (0.002 sec)

MariaDB [base3]>
Anuncios

En cambio si tenemos un inconveniente con la tabla obtendremos una salida similar a esta:

MariaDB [test]> CHECK TABLE product;
+--------------+-------+----------+---------------------------------+
| Table        | Op    | Msg_type | Msg_text                        |
+--------------+-------+----------+---------------------------------+
| test.product | check | Error    | Incorrect file format 'product' |
| test.product | check | error    | Corrupt                         |
+--------------+-------+----------+---------------------------------+
2 rows in set (0.00 sec)
Anuncios

En este caso podemos ver las notificaciones que mencionamos en este post, y tal como mencionamos en ese post InnoDB puede hacer que se detenga el servidor ante este inconveniente para evitar que se propague, si esto sucede debemos forzar a que se haga el chequeo automaticamente al reinicio del mismo, todo eso lo explicamos en este post.

Anuncios

En resumen, hoy hemos visto a CHECK TABLE, que es, para que sirve, que opciones disponemos para trabajar con esta instruccion, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50

Anuncio publicitario