Reparar y optimizar todas las bases de datos en MYSQL

emanuele
Administrador del Sitio
Mensajes: 48
Registrado: Sab, 18 Feb 2017, 09:15

Reparar y optimizar todas las bases de datos en MYSQL

Mensaje por emanuele » Mar, 28 Feb 2017, 17:55

Aqui vemos que la tabla jos_session quedo corrupta y marcada como dañada.

Mysqkl chek nos ofrece muchas maneras de optimizar y reparar bases de datos corrupas o bien optimizar todo el servicio. Los comandos más utilizados, y los que normalemnte solucionan cualquier problema son estos:

Código: Seleccionar todo

# mysqlcheck -o –all-databases
(Las optimiza)

Código: Seleccionar todo

# mysqlcheck –all-databases -r
(Las chequea y repara)

Código: Seleccionar todo

# mysqlcheck -r nomb_base
(repara solo la base de datos que coloquemos

La orden a ejecutar será la siguiente y el resultado lo veréis en la consola, si OK o si hay problemas:

Código: Seleccionar todo

mysqlcheck -u root -p --auto-repair --optimize --all-databases
Descargar la base de datos de prueba

Para el desarrollo de este nanotutorial, vamos a utilizar una base de datos de prueba que esta disponible desde la documentación oficial de MySQL, para esto vamos a ejecutar el siguiente comando:

Código: Seleccionar todo

wget https://launchpad.net/test-db/employees-db-1/1.0.6/+download/employees_db-full-1.0.6.tar.bz2
Descargar la base de datos de prueba

Esto puede tardar algunos minutos dependiendo de la velocidad de tu enlace a internet.

Descargar la base de datos de prueba
Descomprimir el archivo

Necesitamos ahora descomprimir el archivo que hemos descargado, para eso utilizaremos el siguiente comando:

tar -xvjf employees_db-full-1.0.6.tar.bz2

Descomprimir el archivo

Luego vamos a desplazarnos al directorio employees_db/ con el siguiente comando:

cd employees_db

Importar la base de datos con el cliente de MySQL

Para iniciar la importación de la base de datos a través del cliente de MySQL debes ejecutar el siguiente comando (debes saber la contraseña del usuario root).

mysql -u root -p -t < employees.sql

Importar la base de datos con el cliente de MySQL

Este proceso puede tardar unos minutos.

Importar la base de datos con el cliente de MySQL
Sentencias SQL

Ahora estamos listos para conocer un buen número de sentencias SQL con MySQL. Vamos a iniciar sesión con el cliente, para esto ejecuta el siguiente comando:

mysql -u root -p

Cada sentencia que ejecutemos en el cliente de MySQL debe de finalizar un el caracter ”;” al final de la sentencia.

SHOW DATABASES

Esta sentencia lista todas las bases de datos disponibles para el usuario con el que hemos iniciado sesión. En nuestro caso, al haber iniciado sesión con el usuario root, vamos a ver todas las bases de datos del servidor.

SHOW DATABASES;

SHOW DATABASES

USE <nombre_bd>

Esta sentencia nos sirve para cambiar a otra base de datos que el usuario tenga disponible.

USE employees;

SHOW TABLES

Esta sentencia lista todas las tablas disponibles en la base de datos.

SHOW TABLES;

SHOW TABLES

SHOW FIELDS FROM <nombre_tabla>

Lista la estructura de una tabla, mostrando los nombres de los campos, el tipo de datos y otras propiedades.

SHOW FIELDS FROM employees;

SELECT * FROM <nombre_tabla>

Lista todas las columnas y registros de una tabla.

SELECT * FROM employees;

SELECT * FROM employees

Ahora entienden porque tardo tanto la importación.

SELECT COUNT(*) FROM <nombre_tabla>

Devuelve el total de registros en la tabla.

SELECT COUNT(*) FROM employees;

SELECT COUNT(*) FROM employees

SELECT * FROM <nombre_tabla> LIMIT <limite_filas> OFFSET <número_pagina>

Lista un número de registros limitado.

SELECT * FROM employees LIMIT 10;

SELECT * FROM employees LIMIT 10

También podemos definir el número de página deseado.

SELECT * FROM employees LIMIT 10 OFFSET 0;

SELECT * FROM employees LIMIT 10 OFFSET 0

Para obtener la siguiente página basta con incrementar el OFFSET.

SELECT * FROM employees LIMIT 10 OFFSET 1;

SELECT * FROM employees LIMIT 10 OFFSET 1

Este es el concepto de una paginación.

SELECT * FROM <nombre_tabla> ORDER BY <nombre_campo>

Lista los registros ordenados por un campo. El ordenamiento puede ser ascendente o descendente.

SELECT * FROM employees ORDER BY first_name ASC LIMIT 10;
SELECT * FROM employees ORDER BY first_name DESC LIMIT 10;

Si ven, podemos combinarlos con las otras sentencias.

SELECT * FROM employees ORDER BY first_name ASC LIMIT 10 OFFSET 1;

SELECT * FROM employees ORDER BY first_name ASC LIMIT 10 OFFSET 1

SELECT MAX|MIN(<nombre_campo>) FROM <nombre_tabla>

Muestra el valor mayor o menor del campo en la tabla.

SELECT MAX(hire_date) FROM employees;
SELECT MIN(hire_date) FROM employees;

SELECT MAX MIN

SELECT DISTINCT(<nombre_campo>) FROM <nombre_tabla>

Muestra los los diferentes valores de un campo en la tabla. Ningún valor aparecerá repetido.

SELECT DISTINCT(gender) FROM employees;

SELECT <nombre_campo> FROM <nombre_tabla>

Lista campos específicos de la tabla. Si hay más de un campo, estos deben delimitarse por una ”,”.

SELECT first_name, last_name, gender FROM employees LIMIT 10;

SELECT first_name, last_name, gender FROM employees LIMIT 10

SELECT SUM(<nombre_campo>) FROM <nombre_tabla>

Devuelve la sumatoria de campos numéricos.

SELECT SUM(salary) FROM salaries;

SELECT * FROM <nombre_tabla> WHERE <condiciones>

La sentencia WHERE nos sirve para filtrar registros por una serie de condiciones definidas por nosotros. Las condiciones deben cumplirse y pueden ser anidadas por los operadores lógicos OR y AND.

SELECT * FROM employees WHERE gender = 'M' AND last_name = 'Facello' LIMIT 10;

En este ejemplo estamos filtrando los registros donde el género sea M y además el apellido sea igual a Facello.

SELECT * FROM employees WHERE gender = 'M' AND (last_name = 'Facello' OR last_name = 'Simmel') LIMIT 10;

En el segundo ejemplo el campo género debe ser M y el apellido puede ser Facello o Simmel. Cuando se trabaja con diferentes operadores lógicos es necesario agruparlos por paréntesis para evitar malas interpretaciones del motor SQL.

Existen otros operadores condicionales como por ejemplo:

> mayor que

SELECT * FROM <nombre_tabla> WHERE <nombre_campo> > <valor>;

< menor que

SELECT * FROM <nombre_tabla> WHERE <nombre_campo> < <valor>;

>= mayor o igual que

SELECT * FROM <nombre_tabla> WHERE <nombre_campo> >= <valor>;

<= menor o igual que

SELECT * FROM <nombre_tabla> WHERE <nombre_campo> <= <valor>;

<> diferente a

SELECT * FROM <nombre_tabla> WHERE <nombre_campo> <> <valor>;

!= no igual que

SELECT * FROM <nombre_tabla> WHERE <nombre_campo> != <valor>;

IS NULL nulo

SELECT * FROM <nombre_tabla> WHERE <nombre_campo> IS NULL;

IS NOT NULL no nulo

SELECT * FROM <nombre_tabla> WHERE <nombre_campo> IS NOT NULL;

Mucho más por conocer

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado