sql >> Base de Datos >  >> RDS >> MariaDB

Elección del motor de almacenamiento:Aria

MariaDB Platform incluye una variedad de motores de almacenamiento como componentes conectables de MariaDB Enterprise Server. Esto le permite elegir el motor de almacenamiento que mejor se adapte a la carga de trabajo de una base de datos o tabla en particular.

El motor de almacenamiento Aria se desarrolló como un reemplazo a prueba de fallas para MyISAM y ha estado en desarrollo activo desde 2007. Cuando MariaDB Server se reinicia después de una falla, Aria recupera todas las tablas al estado al comienzo de una declaración o al comienzo de la última instrucción LOCK TABLES.

Motores de almacenamiento MariaDB

Recomendaciones actuales del motor de almacenamiento basadas en la carga de trabajo:

  • Cargas de trabajo de lectura intensiva:Aria
  • Propósito general:InnoDB
  • ÁCIDO:InnoDB
  • Cargas de trabajo de escritura intensiva:MyRocks
  • Compresión:MisRocas
  • Fragmentado:Araña
  • Cargas de trabajo analíticas:MariaDB ColumnStore

Por qué usar Aria para MariaDB

Si bien InnoDB es el motor de almacenamiento predeterminado para las bases de datos creadas con MariaDB, Aria se usa para la mayoría de las tablas del sistema interno de MariaDB Enterprise Server 10.4. Aria tiene una huella pequeña y permite una fácil copia entre sistemas y es particularmente adecuado para cargas de trabajo de lectura intensiva. Aria tiene un formato de almacenamiento avanzado basado en páginas que permite un rendimiento de almacenamiento en caché superior y está optimizado para la concurrencia.

En entornos del mundo real, Aria produce mejores resultados para construcciones agregadas (como GROUP BY u ORDER BY) que prevalecen en análisis y procesamiento de transacciones. El análisis y el procesamiento transaccional encuentran cosas simples como totales, máximos y estadísticas. La mayoría de las aplicaciones dependen en gran medida de consultas que utilizan estas funciones agregadas.
MariaDB utiliza el motor de almacenamiento Aria para todas las tablas temporales internas en disco. Dado que estas tablas a menudo se crean internamente para ejecutar consultas GROUP BY y DISTINCT, este tipo de consultas pueden beneficiarse del rendimiento de Aria, incluso si la tabla consultada utiliza un motor diferente.

El motor de almacenamiento Aria está compilado de forma predeterminada en MariaDB. Aria se incluye con MariaDB Server (Enterprise and Community) sin instalación ni configuración adicional.

Consideraciones sobre Aria

La mejor manera de utilizar Aria dependerá del caso de uso, el diseño de la tabla, los patrones de acceso (consultas SQL), los objetivos de rendimiento y los objetivos de recuperación.

Ventajas de Aria Desventajas de Aria
  • Inserción simultánea en la misma tabla desde múltiples fuentes
  • Carga masiva ineficiente
  • Capacidad de caché por página
  • Bloqueo a nivel de mesa
  • Eficientemente respaldado por MariaDB Enterprise Backup

  • Carece de compatibilidad con claves foráneas nativas
  • Formato de fila de PÁGINA mejorado:a prueba de fallas por defecto; operaciones; proporciona una notable mejora de la velocidad para el almacenamiento en caché de datos, especialmente en Windows
  • Carece de compatibilidad con INSERCIÓN DEMORADA.
  • Tablas e índices a prueba de fallas
  • Limitaciones de almacenamiento en caché:varios cachés de claves y depende del caché de disco del sistema operativo
  • Recuperación de bloqueo al comienzo de una última declaración o bloqueo
  • Sobrecarga de formato PAGE:tamaño mínimo de archivo 16K; almacenamiento de pequeñas filas; mismo tamaño de página para índice y datos.
  • ÍNDICE DE CARGA optimizado
  • No admite transacciones (es decir, ROLLBACK y COMMIT)
  • Compatible con los formatos MyISAM ROW y PAGE
  • Baja sobrecarga
  • Considere usar Aria:

    • Si su aplicación realiza muchas búsquedas de TEXTO COMPLETO.
    • Si su aplicación realiza muchas consultas GROUP BY.
    • Si su aplicación no necesita el cumplimiento de ACID o claves foráneas.
    • Si su aplicación actualmente usa MyISAM y requiere un motor más avanzado para permitir una mejor velocidad, copias de seguridad y recuperación automática de fallas.

    Comparaciones de rendimiento

    Una cosa es comparar consultas aisladas y otra muy distinta mirar ejemplos del mundo real. Hicimos algunas pruebas comparando Aria, InnoDB y MyISAM.

    Resultados de rendimiento
    InnoDB Aria MiISAM
    SQL 1 2.389 0,580 0,634
    SQL 2 2.169 0,530 0,598
    Comparativa simple:Aria vs MyISAM vs InnoDB

    En este punto de referencia simple, se creó una tabla y se completó con 2 millones de filas. Las consultas GROUP BY y ORDER BY se realizaron y copiaron en los tres motores de almacenamiento alternativos:InnoDB, Aria y MyISAM. Cada prueba se ejecutó 10 veces, con el tiempo promedio (segundos) registrado para todas las pruebas.

    Configuración y comandos utilizados para la prueba:

    INSERT INTO fact VALUES (1,1,'Justin',md5(''), .1);
    INSERT INTO fact SELECT FLOOR(1+ rand()*9999), FLOOR(1 + rand()*499),
    (select name from names where id = 1 + rand() * 4),
    MD5(1+rand()*9999), rand()
    FROM fact;

    Siga ejecutando la inserción anterior hasta que haya aproximadamente 2 millones de filas en la tabla.

    MariaDB [test2]> SELECT count(*) from fact;
    +----------+
    | count(*) |
    +----------+
    | 2097152 |
    +----------+
    MariaDB [test2]> SHOW CREATE TABLE fact;
    +-------+-------------------------------
    | Table | Create Table
    +-------+-------------------------------
    | fact | CREATE TABLE `fact` (
    `dim1` int(11) DEFAULT NULL, `dim2` int(11) DEFAULT NULL,
     `name` varchar(20) DEFAULT NULL, `hash` varchar(32) DEFAULT NULL,
     `measure1` double DEFAULT NULL)
    ENGINE=InnoDB DEFAULT CHARSET=utf8 |

    Confirme que hay una buena proporción de filas distintas frente al total:

    MariaDB [test2]> SELECT count(distinct (dim1)) from fact;
    +------------------------+
    | count(distinct (dim1)) |
    +------------------------+
    | 9999              	 |
    +------------------------+
    MariaDB [test2]> SELECT count(distinct (dim2)) from fact;
    +------------------------+
    | count(distinct (dim2)) |
    +------------------------+
    | 499                    |
    +------------------------+
    MariaDB [test2]> SELECT count(distinct (name)) from fact;
    +------------------------+
    | count(distinct (name)) |
    +------------------------+
    | 1                      |
    +------------------------+
    

    Aria

    CREATE TABLE `test2`.`fact2` (
     `dim1` INT(11) NULL DEFAULT NULL,
     `dim2` INT(11) NULL DEFAULT NULL,
     `name` VARCHAR(20) NULL DEFAULT NULL,
     `hash` VARCHAR(32) NULL DEFAULT NULL,
     `measure1` DOUBLE NULL DEFAULT NULL )
    ENGINE=ARIA TRANSACTIONAL=1;
    INSERT INTO `test2`.`fact2` (`dim1`, `dim2`, `name`, `hash`, `measure1`) 
    SELECT `dim1`, `dim2`, `name`, `hash`, `measure1` FROM `fact`;
    

    MiISAM

    CREATE TABLE `test2`.`fact3` (
     `dim1` INT(11) NULL DEFAULT NULL,
     `dim2` INT(11) NULL DEFAULT NULL,
     `name` VARCHAR(20) NULL DEFAULT NULL,
     `hash` VARCHAR(32) NULL DEFAULT NULL,
     `measure1` DOUBLE NULL DEFAULT NULL )
    COLLATE='latin1_swedish_ci' ENGINE=MyISAM;
    INSERT INTO `test2`.`fact3` (`dim1`, `dim2`, `name`, `hash`, `measure1`) 
    SELECT `dim1`, `dim2`, `name`, `hash`, `measure1` FROM `fact`;
    

    Pruebe 2 sql diferentes en InnoDB, Aria y MyISAM:

    — sql 1:

    SELECT dim1, dim2 from fact group by dim1 order by dim1; 
    -- 9999 rows in set

    — sql 2:

    SELECT dim1, dim2 from fact group by dim2 order by dim2; 
    -- 499 rows in set

    Resumen comparativo

    Las pruebas muestran que Aria es mucho más rápida en el nivel GROUP BY que InnoDB o MyISAM. Aria es ligeramente más rápida que MyISAM y garantiza un entorno a prueba de accidentes. Las pruebas de rendimiento revelaron que Aria es cuatro veces más rápida que InnoDB. Debido a las diferencias en los casos de uso, cada uno debe someterse a pruebas en MariaDB Enterprise Server utilizando Aria e InnoDB (u otro, según sea necesario).

    Resumen

    Dependiendo de su carga de trabajo, Aria podría brindarle ventajas de rendimiento. Debido a que se incluye con MariaDB Server y se puede aplicar por base de datos o por tabla (ENGINE=ARIA), puede probar el rendimiento para su carga de trabajo específica sin costo adicional y con muy poco esfuerzo adicional; simplemente conéctelo y pruébelo.

    Para obtener más información sobre los motores de almacenamiento y la arquitectura de almacenamiento, visite Motores de almacenamiento optimizados para cargas de trabajo.