MariaDB Platform inkluderer en række forskellige storage-motorer som pluggbare komponenter i MariaDB Enterprise Server. Dette giver dig mulighed for at vælge den lagermotor, der passer bedst til arbejdsbyrden for en bestemt database eller tabel.
Aria-lagringsmotoren blev udviklet som en crash-sikker erstatning for MyISAM og har været i aktiv udvikling siden 2007. Når MariaDB Server genstarter efter et nedbrud, gendanner Aria alle tabeller til tilstanden fra starten af en erklæring eller ved starten af den sidste LOCK TABLES-sætning.
MariaDB Storage Engines
Aktuelle anbefalinger til lagermotor baseret på arbejdsbelastning:
- Læse-tunge arbejdsbyrder:Aria
- Generelt formål:InnoDB
- SYRE:InnoDB
- Skrive-tunge arbejdsbelastninger:MyRocks
- Kompression:MyRocks
- Sharded:Edderkop
- Analytiske arbejdsbelastninger:MariaDB ColumnStore
Hvorfor bruge Aria til MariaDB
Mens InnoDB er standardlagermaskinen for databaser oprettet med MariaDB, bruges Aria til de fleste af de interne systemtabeller fra MariaDB Enterprise Server 10.4. Aria har et lille fodaftryk og giver mulighed for nem kopiering mellem systemer og er særligt velegnet til læsetunge arbejdsbelastninger. Aria har et avanceret sidebaseret lagerformat, der giver mulighed for overlegen caching-ydeevne og er optimeret til samtidighed.
I virkelige miljøer producerer Aria bedre resultater for aggregerede konstruktioner (såsom GROUP BY eller ORDER BY), der er fremherskende i analyser og transaktionsbehandling. Analyse og transaktionsbehandling finder simple ting som totaler, maksimum og statistik. De fleste applikationer er stærkt afhængige af forespørgsler, der bruger disse samlede funktioner.
MariaDB bruger Aria-lagringsmotoren til alle interne midlertidige tabeller på disken. Da disse tabeller ofte oprettes internt for at udføre GROUP BY- og DISTINCT-forespørgsler, kan disse typer forespørgsler drage fordel af Arias ydeevne, selvom den forespurgte tabel bruger en anden motor.
Aria-lagermotoren er kompileret som standard i MariaDB. Aria er inkluderet med MariaDB Server (Enterprise og Community) uden yderligere installation eller opsætning.
Aria-overvejelser
Hvordan Aria bedst bruges, vil afhænge af use case, tabeldesign, adgangsmønstre (SQL-forespørgsler), ydeevnemål og gendannelsesmål.
Fordele ved Aria | Ulemper ved Aria |
| |
| |
| |
| |
| |
| |
| |
| |
|
Overvej at bruge Aria:
- Hvis din applikation udfører mange søgninger i FULD TEKST.
- Hvis din applikation udfører mange GROUP BY-forespørgsler.
- Hvis din applikation ikke har brug for ACID-overholdelse eller fremmednøgler.
- Hvis din applikation i øjeblikket bruger MyISAM og kræver en mere avanceret motor for at tillade bedre hastighed, sikkerhedskopiering og automatisk gendannelse af nedbrud.
Sammenligning af ydeevne
Det er én ting at sammenligne isolerede forespørgsler og noget andet at se på eksempler fra den virkelige verden. Vi lavede nogle test, der sammenlignede Aria, InnoDB og MyISAM.
Ydeevneresultater
InnoDB | Aria | MyISAM | |
SQL 1 | 2.389 | 0,580 | 0,634 |
SQL 2 | 2.169 | 0,530 | 0,598 |
Simpelt benchmark:Aria vs MyISAM vs InnoDB
I denne enkle benchmark blev en tabel oprettet og udfyldt med 2 millioner rækker. GROUP BY og ORDER BY-forespørgsler blev udført og kopieret ind i alle tre alternative storage-motorer:InnoDB, Aria og MyISAM. Hver test kørte 10 gange, med den gennemsnitlige tid (sekunder) registreret for alle tests.
Opsætning og kommandoer brugt til test:
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;
Fortsæt med at køre ovenstående indsættelse, indtil der er omkring 2 millioner rækker i tabellen.
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 |
Bekræft, at der er et godt forhold mellem forskellige rækker i forhold til det samlede antal rækker:
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`;
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`;
Test 2 forskellige sqls på tværs af InnoDB, Aria og 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
Recap af benchmark
Test viser, at Aria er meget hurtigere på GROUP BY-niveau end enten InnoDB eller MyISAM. Aria er lidt hurtigere end MyISAM og sikrer et nedbrudssikkert miljø. Ydeevnetestene afslørede, at Aria er fire gange hurtigere end InnoDB. På grund af forskellene i brugstilfælde bør hver enkelt gennemgå test i MariaDB Enterprise Server ved hjælp af både Aria og InnoDB (eller en anden, afhængigt af behov).
Oversigt
Afhængigt af din arbejdsbyrde kan Aria give ydeevnefordele. Fordi det er inkluderet med MariaDB Server og kan anvendes pr. database eller pr. tabel (ENGINE=ARIA), kan du teste ydeevnen for din specifikke arbejdsbyrde uden ekstra omkostninger og meget lidt ekstra indsats - bare tilslut den og prøv det.
For mere om lagringsmotorer og lagringsarkitektur, besøg workload-optimerede lagringsmotorer.