MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Избор на система за съхранение:Aria

Платформата MariaDB включва различни машини за съхранение като включващи се компоненти на MariaDB Enterprise Server. Това ви позволява да изберете механизма за съхранение, който най-добре отговаря на работното натоварване на конкретна база данни или таблица.

Двигателят за съхранение на Aria е разработен като безопасен от сривове заместител на MyISAM и е в активно развитие от 2007 г. Когато MariaDB Server се рестартира след срив, Aria възстановява всички таблици до състоянието от началото на изявлението или в началото от последния израз LOCK TABLES.

MariaDB Storage Engines

Текущи препоръки на механизма за съхранение въз основа на работното натоварване:

  • Тежки натоварвания при четене:Aria
  • Общо предназначение:InnoDB
  • ACID:InnoDB
  • Натоварвания с тежко писане:MyRocks
  • Компресия:MyRocks
  • Раздробено:Паяк
  • Аналитични натоварвания:MariaDB ColumnStore

Защо да използвате Aria за MariaDB

Докато InnoDB е машината за съхранение по подразбиране за бази данни, създадени с MariaDB, Aria се използва за повечето вътрешни системни таблици от MariaDB Enterprise Server 10.4. Aria има малък отпечатък и позволява лесно копиране между системи и е особено подходяща за тежки натоварвания при четене. Aria има усъвършенстван формат за съхранение, базиран на страници, който позволява превъзходна производителност на кеширане и е оптимизиран за едновременност.

В реални среди, Aria дава по-добри резултати за агрегирани конструкции (като GROUP BY или ORDER BY), които преобладават в анализа и обработката на транзакции. Анализът и обработката на транзакции намират прости неща като суми, максимуми и статистически данни. Повечето приложения до голяма степен разчитат на заявки, които използват тези агрегатни функции.
MariaDB използва механизма за съхранение на Aria за всички вътрешни временни таблици на диска. Тъй като тези таблици често се създават вътрешно за изпълнение на заявки GROUP BY и DISTINCT, тези типове заявки могат да се възползват от производителността на Aria, дори ако запитаната таблица използва различен механизъм.

Машината за съхранение на Aria е компилирана по подразбиране в MariaDB. Aria е включена в MariaDB Server (Enterprise and Community) без допълнителна инсталация или настройка.

Съображения за Ария

Как най-добре да използвате Aria ще зависи от случая на използване, дизайна на таблицата, моделите на достъп (SQL заявки), целите за ефективност и целите за възстановяване.

Предимства на Aria Недостатъци на Aria
  • Едновременно вмъкване в една и съща таблица от множество източници
  • Неефективно групово зареждане
  • Възможност за кеширане по страница
  • Заключване на нивото на маса
  • Ефективно архивирано от MariaDB Enterprise Backup

  • Липсва поддръжка на собствен външен ключ
  • Подобрен формат на PAGE ред:безопасен при срив по подразбиране; операции; осигурява значително подобрение на скоростта за кеширане на данни, особено в Windows
  • Липсва поддръжка INSERT DELAYED.
  • Таблици и индекси, защитени от сривове
  • Ограничения за кеширане:множество ключови кешове и зависи от дисковия кеш на ОС
  • Възстановяване при срив до началото на последно изявление или заключване
  • Резервни разходи във формат PAGE:минимален размер на файла 16K; съхранение на малки редове; същия размер на страницата за индекс и данни.
  • Оптимизиран ИНДЕКС НА LOAD
  • Не поддържа транзакции (т.е. ROLLBACK и COMMIT)
  • Съвместим с форматите MyISAM ROW и PAGE
  • Ниски режийни разходи
  • Помислете за използването на Aria:

    • Ако приложението ви прави много търсения в ПЪЛЕН ТЕКСТ.
    • Ако приложението ви прави много заявки GROUP BY.
    • Ако приложението ви не се нуждае от съответствие с ACID или външни ключове.
    • Ако приложението ви понастоящем използва MyISAM и изисква по-усъвършенствана машина, за да позволи по-добра скорост, архивиране и автоматично възстановяване при срив.

    Сравнения на производителността

    Едно е да сравнявате изолирани заявки и съвсем друго е да разглеждате примери от реалния свят. Направихме някои тестове, сравняващи Aria, InnoDB и MyISAM.

    Резултати от производителността
    InnoDB Ария MyISAM
    SQL 1 2,389 0,580 0,634
    SQL 2 2.169 0,530 0,598
    Прост бенчмарк:Aria срещу MyISAM срещу InnoDB

    В този прост бенчмарк беше създадена таблица и попълнена с 2 милиона реда. Заявките GROUP BY и ORDER BY бяха направени и копирани в трите алтернативни механизма за съхранение:InnoDB, Aria и MyISAM. Всеки тест се проведе 10 пъти, като средното време (секунди) се записва за всички тестове.

    Настройка и команди, използвани за тестване:

    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;

    Продължете да изпълнявате горното вмъкване, докато около 2 милиона реда не се появят в таблицата.

    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 |

    Потвърдете, че има добро съотношение на отделни спрямо общите редове:

    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                      |
    +------------------------+
    

    Ария

    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`;
    

    MyISAM

    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`;
    

    Тествайте 2 различни sql в InnoDB, Aria и 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

    Обобщение на сравнителния анализ

    Тестването показва, че Aria е много по-бърза на ниво GROUP BY от InnoDB или MyISAM. Aria е малко по-бърза от MyISAM и осигурява среда, безопасна при срив. Тестовете за производителност разкриха, че Aria е четири пъти по-бърза от InnoDB. Поради разликите в случаите на използване, всеки от тях трябва да бъде подложен на тестване в MariaDB Enterprise Server, като се използват както Aria, така и InnoDB (или друг, в зависимост от нуждите).

    Резюме

    В зависимост от вашето работно натоварване, Aria може да осигури предимства за производителност. Тъй като е включен в MariaDB Server и може да се прилага за база данни или за таблица (ENGINE=ARIA), можете да тествате производителността за вашето конкретно работно натоварване без допълнителни разходи и много малко допълнителни усилия – просто го включете и опитайте.

    За повече информация относно механизмите за съхранение и архитектурата за съхранение, посетете оптимизирани за натоварване машини за съхранение.


    1. Database
    2.   
    3. Mysql
    4.   
    5. Oracle
    6.   
    7. Sqlserver
    8.   
    9. PostgreSQL
    10.   
    11. Access
    12.   
    13. SQLite
    14.   
    15. MariaDB
    1. Какво е MariaDB Enterprise и как да го управляваме с ClusterControl?

    2. Как да идентифицираме проблеми с производителността на MySQL с бавни заявки

    3. MariaDB JSON_OBJECT() Обяснено

    4. Как да сравните производителността на MySQL и MariaDB с помощта на SysBench

    5. Как да изпълнявате и управлявате резервни копия на MySQL за Oracle DBA