|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- # Saber peso de nuestras base de datos
-
- Es importante poder conocer el tamaño que ocupan nuestras base de datos y tablas para poder definir donde hay gran cantidad de datos y por ende hay que realizar optimizacion
-
- *Sintaxis*
- ```
- SELECT table_schema AS "Base de datos",
- ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Tamaño (MB)"
- FROM information_schema.TABLES
- GROUP BY table_schema;
- ```
-
- Saber el peso de una tablas
-
- *Sintaxis*
- ```
- SELECT table_name AS "Tabla",
- ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Tamaño (MB)"
- FROM information_schema.TABLES
- WHERE table_schema = "base_de_datos"
- ORDER BY (data_length + index_length) DESC;
- ```
-
- # Mejorar rendimiento de campos que guardan UUID
-
- Lo estandar es guardar campos que guardar uuid en varchar de 32 o incluso en char de 32 pero por alguna razon cuando se guarda en campos de tipo binario el rendimiento mejora considerablemente y si ademas indexamos el campos el rendimiento es hasta 160% mas rapido que si lo guardamos en tipo texto.
-
- # SLOW QUERY
-
- Para Permitirnos ver las querys que estan tomando mucho tiempo en realizarse en el servidor y que por ende nos estan causando problemas de rendimiento lo podremos activar en el archivo de configuracion my.cnf, pero tambien podremos activarlo desde una consulta.
-
- *Sintaxis*
- ```
- SET GLOBAL slow_query_log = 'ON';
- ```
-
- Por defaul cualqueir consulta que dure mas de 10 segunos sera registrada, podemos cambiar ese tiempo usando la siguiente instrucción.
-
- *Sintaxis*
- ```
- SET GLOBAL long_query_time = TIEMPO;
- ```
-
- Para desactivarlo solo tendremos que hacer esta consulta. Cuando
-
- *Sintaxis*
- ```
- SET GLOBAL slow_query_log = 'OFF';
- ```
-
- # Reparación de bases de datos dañadas
-
- Mysql tiene basicamente dos motores de base de datos MyISAM e InnoDB por desgracia la forma de repararlas no es la misma asi que listo rapidamente las dos maneras de realizar estas tareas
-
- ## AMBOS
-
- Tendras que detener el servicio de base de datos dependiedo de la distribucion de SO que tengas.
-
- En esta parte recomiendo en sacar un respaldo de los archivos data de tu base de datos, esto tambien dependera del SO anfitrion de tu servidor de base de datos.
-
- Si quieres verificar toda una base de datos usaras el siguiente comando.
-
- ```
- mysqlcheck base_de_datos
- ```
-
- Si solo quieres verificar una tabla seria el siguiente:
-
- ```
- mysqlcheck base_de_datos tabla
- ```
-
- En ambos casos indicara si la tabla contiene algun error si no mostrara ok alado de la tabla.
-
- En caso de requerir reparacion el mismo comando que usaste pero con el parametro -r hara la reparacion quedando d ela siguiente manera:
-
- ```
- mysqlcheck -r base_de_datos tabla
- ```
-
- ## MyISAM
-
- Para una repacaion mas especializada podras en caso de usar este motor usar la herramienta **myisamchk** la cual trabbaja con archivos asi que tendras que indicar el archivo con extencion .MYI de la tabla que quieres reparar tambien puedes indicarle *.MYI para que lo haga en todas las tablas.
-
- Si el comando logra encontrar alguna tabla con fallo ejecutarias el siguiente comando para repararla.
- ```
- myisamchk --recover tabla
- ```
-
- ## InnoDB
-
- Para el caso de InnoDB se tiene que hacer un cmabio en el archivo de configuración, por supuesto con el servicio de la base de datos apagado.
- ```
- innodb_force_recovery=4
- ```
- dentro del archivo de configuracion my.cnf
-
- luego usando **mysqldump** habria que respaldar las base de datos
- ```
- mysqldump --all-databases --add-drop-database --add-drop-table > bases_de_datos.sql
- ```
-
- Despues abria que borra la base de datos y restaurar el respaldo que hicimos, para finalizar comentando de nuevo la configuracion hecha en el archivo my.cnf
- ```
- mysql < bases_de_datos.sql
- ```
- ```
- #innodb_force_recovery=4
- ```
-
- para mas informacion el link de la documentación oficial
-
- [Documentacion Oficial](https://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html)
-
|