Platform MariaDB mencakup berbagai mesin penyimpanan sebagai komponen yang dapat dicolokkan dari MariaDB Enterprise Server. Ini memungkinkan Anda memilih mesin penyimpanan yang paling sesuai dengan beban kerja database atau tabel tertentu.
Mesin penyimpanan Aria dikembangkan sebagai pengganti MyISAM yang aman dari gangguan, dan telah dikembangkan secara aktif sejak 2007. Ketika Server MariaDB dimulai ulang setelah terjadi kerusakan, Aria memulihkan semua tabel ke status pada awal pernyataan atau di awal dari pernyataan LOCK TABLES terakhir.
Mesin Penyimpanan MariaDB
Rekomendasi mesin penyimpanan saat ini berdasarkan beban kerja:
- Beban kerja yang berat untuk membaca:Aria
- Tujuan umum:InnoDB
- ASAM:InnoDB
- Beban kerja tulis yang berat:MyRocks
- Kompresi:MyRocks
- Dipecahkan:Laba-laba
- Beban kerja analitis:MariaDB ColumnStore
Mengapa Menggunakan Aria untuk MariaDB
Sementara InnoDB adalah mesin penyimpanan default untuk database yang dibuat dengan MariaDB, Aria digunakan untuk sebagian besar tabel sistem internal dari MariaDB Enterprise Server 10.4. Aria memiliki footprint kecil dan memungkinkan penyalinan antar sistem dengan mudah dan sangat cocok untuk beban kerja yang berat untuk membaca. Aria memiliki format penyimpanan berbasis halaman canggih yang memungkinkan kinerja caching superior dan dioptimalkan untuk konkurensi.
Di lingkungan dunia nyata, Aria menghasilkan hasil yang lebih baik untuk konstruksi agregat (seperti GROUP BY atau ORDER BY) yang lazim dalam analitik dan pemrosesan transaksi. Analisis dan pemrosesan transaksional menemukan hal-hal sederhana seperti total, maksimum, dan statistik. Sebagian besar aplikasi sangat bergantung pada kueri yang menggunakan fungsi agregat ini.
MariaDB menggunakan mesin penyimpanan Aria untuk semua tabel sementara internal pada disk. Karena tabel ini sering dibuat secara internal untuk mengeksekusi kueri GROUP BY dan DISTINCT, jenis kueri ini dapat memanfaatkan kinerja Aria, meskipun tabel kueri menggunakan mesin yang berbeda.
Mesin penyimpanan Aria dikompilasi secara default di MariaDB. Aria disertakan dengan Server MariaDB (Perusahaan dan Komunitas) tanpa instalasi atau pengaturan tambahan.
Pertimbangan Aria
Cara terbaik menggunakan Aria akan bergantung pada kasus penggunaan, desain tabel, pola akses (kueri SQL), target performa, dan tujuan pemulihan.
Kelebihan Aria | Kekurangan Aria |
| |
| |
| |
| |
| |
| |
| |
| |
|
Pertimbangkan untuk menggunakan Aria:
- Jika aplikasi Anda melakukan banyak penelusuran TEKS LENGKAP.
- Jika aplikasi Anda melakukan banyak kueri GROUP BY.
- Jika aplikasi Anda tidak memerlukan kepatuhan ACID atau kunci asing.
- Jika aplikasi Anda saat ini menggunakan MyISAM dan memerlukan mesin yang lebih canggih untuk memungkinkan kecepatan, pencadangan, dan pemulihan kerusakan otomatis yang lebih baik.
Perbandingan Kinerja
Membandingkan kueri yang terisolasi dan yang lain untuk melihat contoh dunia nyata adalah satu hal. Kami melakukan beberapa pengujian yang membandingkan Aria, InnoDB, dan MyISAM.
Hasil Kinerja
InnoDB | Aria | MyISAM | |
SQL 1 | 2.389 | 0,580 | 0.634 |
SQL 2 | 2.169 | 0,530 | 0,598 |
Tolok Ukur Sederhana:Aria vs MyISAM vs InnoDB
Dalam benchmark sederhana ini, sebuah tabel dibuat dan diisi dengan 2 juta baris. Kueri GROUP BY dan ORDER BY telah diselesaikan dan disalin ke ketiga mesin penyimpanan alternatif:InnoDB, Aria, dan MyISAM. Setiap pengujian berjalan 10 kali, dengan waktu rata-rata (detik) yang tercatat untuk semua pengujian.
Pengaturan dan perintah yang digunakan untuk pengujian:
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;
Terus jalankan penyisipan di atas hingga sekitar 2 juta baris ada di tabel.
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 |
Konfirmasi bahwa ada rasio yang baik dari baris yang berbeda vs 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`;
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`;
Uji 2 sql berbeda di InnoDB, Aria, dan 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
Ringkasan Tolok Ukur
Pengujian menunjukkan Aria jauh lebih cepat di level GROUP BY daripada InnoDB atau MyISAM. Aria sedikit lebih cepat dari MyISAM dan memastikan lingkungan yang aman dari kecelakaan. Tes kinerja mengungkapkan Aria empat kali lebih cepat dari InnoDB. Karena perbedaan dalam kasus penggunaan, masing-masing harus menjalani pengujian di MariaDB Enterprise Server menggunakan Aria dan InnoDB (atau yang lain, tergantung kebutuhan).
Ringkasan
Bergantung pada beban kerja Anda, Aria dapat memberikan keunggulan kinerja. Karena disertakan dengan MariaDB Server dan dapat diterapkan per database atau per tabel (ENGINE=ARIA), Anda dapat menguji kinerja untuk beban kerja spesifik Anda tanpa biaya tambahan dan sedikit usaha tambahan–cukup colokkan dan coba.
Untuk mengetahui lebih lanjut tentang mesin penyimpanan dan arsitektur penyimpanan, kunjungi mesin penyimpanan yang dioptimalkan untuk beban kerja.