MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Pilihan Mesin Penyimpanan:Aria

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
  • Menyisipkan secara bersamaan ke dalam tabel yang sama dari berbagai sumber
  • Pemuatan massal tidak efisien
  • Kemampuan cache menurut halaman
  • Penguncian level tabel
  • Dicadangkan secara efisien oleh MariaDB Enterprise Backup

  • Tidak memiliki dukungan kunci asing asli
  • Format baris PAGE yang disempurnakan:secara default aman dari kerusakan; operasi; memberikan peningkatan kecepatan yang mencolok untuk penyimpanan data dalam cache, terutama di Windows
  • Kurangnya dukungan INSERT DELAYED.
  • Tabel dan indeks yang aman dari kerusakan
  • Batasan cache:beberapa cache kunci dan bergantung pada cache disk OS
  • Pemulihan mogok ke awal pernyataan atau kunci terakhir
  • Overhead format HALAMAN:ukuran file minimum 16K; penyimpanan baris kecil; ukuran halaman yang sama untuk indeks dan data.
  • INDEX BEBAN yang dioptimalkan
  • Tidak mendukung transaksi (yaitu ROLLBACK dan COMMIT)
  • Kompatibel dengan format ROW dan HALAMAN MyISAM
  • Overhead rendah
  • 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.


    1. Database
    2.   
    3. Mysql
    4.   
    5. Oracle
    6.   
    7. Sqlserver
    8.   
    9. PostgreSQL
    10.   
    11. Access
    12.   
    13. SQLite
    14.   
    15. MariaDB
    1. Menerapkan Replikasi MySQL Multicloud Aman di AWS dan GCP dengan VPN

    2. Optimasi Mesin Penyimpanan MySQL:Mengonfigurasi Optimasi InnoDB Untuk Kinerja Tinggi

    3. Cara Membuat Database MySQL atau MariaDB Anda Sangat Tersedia di AWS dan Google Cloud

    4. Cara Membuat Klon dari Cluster Database MySQL atau PostgreSQL Anda

    5. Bagaimana UNCOMPRESS() Bekerja di MariaDB