¿Qué es MySQL?
MySQL es un sistema de gestión de bases de datos relacionales (RDBMS) de código abierto que utiliza el lenguaje de gestión de bases de datos más utilizado: el lenguaje de consulta estructurado (SQL) para la gestión de bases de datos.
MySQL es de código abierto, por lo que cualquiera puede descargarlo bajo la Licencia Pública General y modificarlo según sus necesidades personales.
MySQL ha llamado mucho la atención por su velocidad, fiabilidad y adaptabilidad. La mayoría de la gente está de acuerdo en que MySQL es la mejor opción para gestionar contenido sin procesamiento transaccional.
Tutorial recomendado: vídeo tutorial introductorio de mysql
Introducción a MySQL
MySQL es un sistema de gestión de bases de datos relacionales (RDBMS) de código abierto, el sistema de base de datos MySQL es el más utilizado lenguaje de gestión de bases de datos comúnmente utilizado: lenguaje de consulta estructurado (SQL) para la gestión de bases de datos.
Debido a que MySQL es de código abierto, cualquiera puede descargarlo bajo la Licencia Pública General y modificarlo según sus necesidades personalizadas. MySQL ha atraído mucha atención por su velocidad, confiabilidad y adaptabilidad. La mayoría de la gente está de acuerdo en que MySQL es la mejor opción para gestionar contenido sin procesamiento transaccional.
El origen del nombre MySQL no está muy claro. Una afirmación más influyente es que las guías básicas y una gran cantidad de bibliotecas y herramientas han tenido el prefijo "my" durante más de 10 años y, de todos modos, la hija de Monty Widenius, uno de los fundadores de MySQL AB, también se llama My. . Cuál de estos dos dio el nombre de MySQL sigue siendo un misterio, incluidos los desarrolladores.
El nombre del logo del delfín de MySQL es "sakila", que fue seleccionado por los fundadores de MySQL AB de una gran lista de nombres sugeridos por los usuarios en el concurso "Dolphin Naming". El nombre ganador fue proporcionado por Ambrose Twebaze, un desarrollador de software de código abierto de Suazilandia, África. Según Ambrose, Sakila proviene de un dialecto suazi llamado SiSwati y también es el nombre de una pequeña ciudad en Arusha, Tanzania, cerca de Uganda, la ciudad natal de Ambrose.
Puede que MySQL no sea muy potente, pero debido a su código abierto y su amplia difusión, muchas personas han conocido esta base de datos. Su historia también es legendaria.
Optimización de bases de datos
Elija InnoDB como motor de almacenamiento
Las bases de datos de productos a gran escala tienen mayores requisitos de confiabilidad y concurrencia, e InnoDB es el motor de almacenamiento MySQL predeterminado , que es una mejor opción que MyISAM.
Optimizar la estructura de la base de datos
Organizar el esquema, las tablas y los campos de la base de datos para reducir la sobrecarga de E/S, guardar elementos relacionados juntos y planificar con anticipación para que, a medida que aumente la cantidad de Los datos aumentan el crecimiento y el rendimiento puede mantenerse en un nivel alto.
La tabla de datos debe diseñarse para minimizar el espacio que ocupa y la clave principal de la tabla debe ser lo más corta posible. ·Para las tablas InnoDB, la columna donde se encuentra la clave primaria es replicable en cada entrada del índice secundario, por lo que si hay muchos índices secundarios, una clave primaria corta puede ahorrar mucho espacio.
Cree solo los índices que necesita para mejorar el rendimiento de las consultas. Los índices facilitan la recuperación, pero aumentan el tiempo de ejecución de las operaciones de inserción y actualización.
Función ChangeBuffering de InnoDB
InnoDB proporciona una configuración de cambio en búfer para reducir la E/S del disco necesaria para mantener índices auxiliares. Las bases de datos de gran escala pueden experimentar una gran cantidad de operaciones de tablas y E/S intensas para mantener actualizados los índices secundarios.
Cuando la página relevante no está en el grupo de búfer, el búfer de cambios de InnoDB almacenará en caché los cambios en la entrada del índice secundario, evitando así operaciones de E/S que consumen mucho tiempo causadas por no poder leer la página desde el disco inmediatamente. Cuando las páginas se cargan en el grupo de búfer, los cambios almacenados en el búfer se fusionan y las páginas actualizadas se descargan posteriormente en el disco. Al hacerlo, se mejora el rendimiento y está disponible para MySQL 5.5 y superiores.
Compresión de páginas InnoDB
InnoDB admite la compresión de tablas a nivel de página. Cuando se escribe una página de datos, se utiliza un algoritmo de compresión específico para comprimirla. Los datos comprimidos se escriben en el disco, y su mecanismo de perforación libera bloques vacíos al final de la página. Si la compresión falla, los datos se escriben sin cambios. Las tablas y los índices se comprimen porque los índices normalmente representan una gran proporción del tamaño total de la base de datos. La compresión puede ahorrar significativamente memoria, E/S o tiempo de procesamiento, logrando así el propósito de mejorar el rendimiento y la escalabilidad. También reduce la cantidad de datos transferidos entre la memoria y el disco. MySQL5.1 y versiones posteriores admiten esta función.
Tenga en cuenta que la compresión de páginas no admite tablas en espacios de tablas compartidos. Los espacios de tablas compartidos incluyen espacios de tablas del sistema, espacios de tablas temporales y espacios de tablas regulares.
Utilizar la importación de datos por lotes
El uso de una fuente de datos ordenada en la clave principal para importar datos por lotes puede acelerar el proceso de inserción de datos. De lo contrario, es posible que sea necesario insertar filas entre otras filas para mantener el orden, lo que puede provocar una alta E/S del disco, afectar el rendimiento y aumentar las divisiones de páginas. También es beneficioso desactivar el modo de confirmación automática, ya que realizará un vaciado de registros en el disco para cada inserción. Cambiar temporalmente las comprobaciones de clave única y clave externa durante las inserciones masivas también puede reducir significativamente la E/S del disco. Para tablas recién creadas, la mejor práctica es crear restricciones de clave externa/clave única después de la importación masiva.
Una vez que sus datos alcancen un tamaño estable, o una tabla en crecimiento agregue decenas o cientos de megabytes, debería considerar usar la instrucción OPTIMIZETABLE para reorganizar la tabla y comprimir el espacio desperdiciado. Un escaneo completo de la tabla reorganizada requerirá menos E/S.
Optimizar la E/S del disco InnoDB
Aumentar el tamaño del grupo de búfer de InnoDB permite acceder a las consultas desde el grupo de búfer en lugar de a través de la E/S del disco. Ajuste el indicador de limpieza del búfer para alcanzar el nivel óptimo ajustando la variable del sistema innodb_flush_method.
Asignación de memoria MySQL
Antes de asignar suficiente memoria para MySQL, considere los requisitos de memoria para MySQL en diferentes áreas. Las áreas clave a considerar son: Conexiones simultáneas: con una gran cantidad de conexiones simultáneas, la clasificación y las tablas temporales requerirán mucha memoria. En el momento de escribir este artículo, de 16 GB a 32 GB de RAM son suficientes para una base de datos que maneje 3000 conexiones simultáneas.
La fragmentación de la memoria puede consumir aproximadamente 10 o más bloques de memoria. Los cachés y buffers como innodb_buffer_pool_size, key_buffer_size, query_cache_size, etc. consumen aproximadamente el 80% de la memoria asignada.
Mantenimiento diario
Revise periódicamente los registros de consultas lentas y optimice el mecanismo de consulta para utilizar eficazmente la memoria caché y reducir la E/S del disco. Optimícelos para escanear la cantidad mínima de filas en lugar de realizar un escaneo completo de la tabla.
Otros registros que pueden ayudar al DBA a verificar y analizar el rendimiento incluyen: registros de errores, registros de consultas generales, registros binarios y registros DDL (registros de metadatos).
Vacia periódicamente las cachés y los buffers para reducir la fragmentación. Utilice la instrucción OPTIMIZETABLE para reorganizar la tabla y comprimir cualquier espacio potencialmente desperdiciado. [1]