MySQL versus MariaDB
Kisah Belakang MySQL dan MariaDB
MySQL dan MariaDB berbagi beberapa sejarah umum, keduanya dinamai putri pengembang Michael Widenius, My dan Maria. MySQL dibuat pada tahun 1995 oleh perusahaan perangkat lunak Swedia, MySQL AB . Ini semakin populer selama bertahun-tahun dan menjadi standar untuk sistem manajemen basis data relasional sumber terbuka. Pada tahun 2008, Sun membeli MySQL AB (dan akhirnya MySQL) seharga $1 miliar. Tidak lama setelah Sun dibeli oleh Oracle pada bulan April 2009. Pada titik ini, Oracle, sistem database yang bersaing, menjadi pemilik MySQL. Ini mengganggu pengembang asli melihat bagaimana mereka merasa masa depan MySQL dalam bahaya. Mengikuti aturan open source, mereka memutuskan untuk "fork" MySQL dan membuat MariaDB. Dan begitulah, MySQL dan MariaDB berbagi sejarah!
Kami memiliki tutorial yang bagus tentang cara menginstal MariaDB untuk menggantikan MySQL di WHM.
Versi Replikasi MySQL dan MariaDB
Tuan Budak→→ | MariaDB-5.5 | MariaDB-10.0 | MariaDB-10.1 | MariaDB-10.2 | MySQL-5.6 | MySQL-5.7 | MySQL-8.0 |
---|---|---|---|---|---|---|---|
MariaDB-5.5 | Oke | Tidak | Tidak | Tidak | Tidak | Tidak | Tidak |
MariaDB-10.0 | Oke | Oke | Oke | ||||
MariaDB-10.1 | Oke | Oke | Oke | Oke | |||
MariaDB-10.2 | Oke | Oke | Oke | Oke | Oke | Oke |
Perbandingan Fitur MySQL dan MariaDB
Mesin Penyimpanan Lebih Banyak
MariaDB berisi mesin penyimpanan standar MyISAM, BLACKHOLE, CSV, MEMORY, ARCHIVE, dan MERGE. Ini juga mencakup beberapa mesin penyimpanan yang kurang umum seperti;
- Cassandra (MariaDB 10.0)
- Laba-laba (MariaDB 10.0+)
- Urutan (MariaDB 10.0+)
- HUBUNGKAN (MariaDB 10.0+)
- TokuDB (MariaDB 5.5+)
- SphinxSE (MariaDB 5.2+)
- OQGRAPH (Tidak Tersedia di MariaDB 5.5)
- FederatedX (Penggantian Federated)
- Aria (pengganti MyISAM dengan caching yang ditingkatkan)
- MyRocks (mesin penyimpanan MariaDB 10.2 dengan kompresi yang ditingkatkan)
- ColumnStore (mesin penyimpanan berorientasi kolom yang dioptimalkan untuk pergudangan data)
Peningkatan Kecepatan
MariaDB memiliki banyak peningkatan yang lebih baik dibandingkan MySQL saat membandingkan fitur Pengoptimal:
Fitur | MariaDB 5.3/5.5 | MariaDB 10.0 | MySQL 5.5 | MySQL 5.6 |
---|---|---|---|---|
Pengoptimalan akses disk | ||||
Penurunan Kondisi Indeks (ICP) | YA | YA | – | YA |
Disk-sweep Multi-range read (DS-MRR) | YA | YA | – | YA |
DS-MRR dengan Pengambilan berdasarkan kunci | YA | YA | – | – |
Index_merge / Sort_intersection | YA | YA | – | – |
Pilihan rentang berbasis biaya vs. index_merge | YA | YA | – | – |
PESAN BERDASARKAN … BATAS | – | YA | – | YA |
Gunakan kunci utama yang diperluas (tersembunyi) untuk innodb/xtradb | YA (5.5) | YA | – | – |
Gabung dengan pengoptimalan | ||||
Akses kunci batch (BKA) | YA | YA | – | YA |
Blokir hash join | YA | YA | – | – |
Batas memori yang ditetapkan pengguna pada semua buffer gabungan | YA | YA | – | – |
Terapkan kondisi awal tabel luar AKTIF | YA | YA | – | – |
Kondisi penolakan nol diuji lebih awal untuk NULL | YA | YA | – | – |
Pengoptimalan subkueri | ||||
In-to-exist | YA | YA | YA | YA |
Semi-gabung | YA | YA | – | YA |
Materialisasi | YA | YA | – | YA |
Materialisasi yang sadar NULL | YA | YA | – | – |
Pilihan biaya materialisasi vs. yang sudah ada | YA | YA | – | YA |
Cache subkueri | YA | YA | – | – |
Penjelasan cepat dengan subkueri | YA | YA | – | – |
ADA-ke-IN | – | YA | – | – |
Optimasi untuk tabel/tampilan turunan | ||||
Tertundanya materialisasi tabel turunan / tampilan material | YA | YA | – | YA |
MENJELASKAN Instan untuk tabel turunan | YA | YA | – | YA |
Tabel Turunan dengan pengoptimalan Kunci | YA | YA | – | YA |
Bidang tampilan yang dapat digabungkan dan tabel turunan yang digunakan dalam pengoptimalan kesetaraan | YA | YA | – | – |
Kontrol eksekusi | ||||
BATAS BARIS YANG DIPERIKSA rows_limit | YA (5.5) | YA | – | – |
Kontrol pengoptimal (saklar pengoptimal) | ||||
Kontrol sistematis semua strategi pengoptimal | YA | YA | – | sebagian |
MENJELASKAN peningkatan | ||||
Jelaskan untuk DELETE, INSERT, REPLACE, dan UPDATE | – | Sebagian | – | YA |
Jelaskan dalam format JSON | – | – | – | YA |
MENJELASKAN lebih detail dan konsisten untuk subkueri | YA | YA | – | – |
Jejak pengoptimal | ||||
Jejak pengoptimal | – | – | – | YA |
- Replikasi paralel — baru di 10.0; berlangsung dalam tiga bagian:peristiwa replikasi dibaca oleh utas IO dan diantrekan di log relai, diambil satu per satu oleh utas SQL dari log relai, dan setiap peristiwa diterapkan pada budak yang mereplikasi perubahan pada master.
- Peningkatan kinerja mencakup subsistem IO asinkron InnoDB yang lebih baik di Windows.
- Indeks untuk mesin MEMORY(HEAP) lebih cepat. Perbaikan terbaru diterapkan di MariaDB 5.5 dan MySQL 5.7.
- Cache Kunci Tersegmentasi untuk MyISAM telah ditambahkan di MariaDB 5.2. Ini telah meningkatkan kinerja di tabel MyISAM hingga 4x.
- Pada versi 10.0.13, ukuran hash yang dapat disesuaikan untuk MyISAM dan Aria meningkatkan waktu shutdown jika Anda menggunakan banyak tabel MyISAM/Aria dengan kunci yang tertunda.
- Dengan CHECKSUM TABLE menggunakan opsi CEPAT, kecepatan ditingkatkan.
- Kinerja ditingkatkan dengan konversi kumpulan karakter dan penghapusan konversi (bila tidak diperlukan). Peningkatan kecepatan secara keseluruhan adalah sekitar 1-5% tetapi bisa lebih cepat dengan kumpulan hasil yang besar.
- Kumpulan Utas di MariaDB 5.1/MariaDB 5.5 memungkinkan MariaDB berjalan dengan 200.000+ koneksi yang mengarah pada peningkatan kecepatan saat menggunakan banyak koneksi.
- Peningkatan koneksi klien ditambahkan pada MariaDB 10.1 dan MariaDB 10.2.
- Beberapa peningkatan pada kode DBUG dalam MariaDB membantu membuat kode berjalan lebih cepat dengan debug yang dikompilasi, tetapi tidak digunakan.
- Menggunakan mesin penyimpanan Aria menggunakan tabel sementara internal memungkinkan peningkatan kinerja.
- Rangkaian pengujian berjalan lebih cepat bahkan dengan daftar pengujian yang diperluas.
Fitur dan Ekstensi Baru
Pengujian Lebih Baik
MariaDB berisi lebih banyak tes di test suite daripada MySQL. Tidak valid dan tes yang tidak perlu telah dihapus. Masalah dengan rangkaian pengujian telah diperbaiki.
Lebih Sedikit Bug
Saat ini, komunitas MariaDB waspada dan bekerja untuk memperbaiki bug secepat dan selengkap mungkin. Selain itu, peringatan kompiler juga telah dikurangi sebagai akibat dari pengurangan bug.
Sumber Terbuka
Semua kode sumber untuk MariaDB dirilis di bawah GPL, LGPL, atau BSD. Sementara MySQL memiliki modul sumber tertutup di Edisi Perusahaan mereka, MariaDB tidak memiliki modul sumber tertutup. MariaDB menyertakan semua fitur sumber tertutup yang terdapat dalam MySQL 5.5 Enterprise Edition dalam versi sumber terbukanya. MariaDB menyertakan kasus uji untuk semua bug baru yang diperbaiki. MySQL tidak menyediakan kasus uji untuk bug yang diperbaiki di MySQL 5.5. MariaDB membuat semua rencana pengembangan masa depan publik, termasuk bug dan perbaikannya. MariaDB memiliki komunitas besar dan komunitas pengembang itu mencakup berbagai macam kontributor sedangkan semua pembuat komitmen ke MySQL tampaknya berasal dari karyawan Oracle. Pustaka klien MySQL dirilis di bawah lisensi GPL yang melarang penautan ke aplikasi sumber tertutup. Sebaliknya, MariaDB melisensikan pustaka klien di bawah lisensi LGPL yang memungkinkan penautan ke perangkat lunak sumber tertutup.
Masalah Kompatibilitas antara MariaDB &MySQL
MariaDB dirancang untuk menjadi pengganti drop-in untuk MySQL dan merupakan cabang dari basis kode MySQL asli. Ini berarti bahwa ketika beralih dari MySQL ke MariaDB, ini adalah proses yang relatif mudah. Anda cukup uninstall MySQL dan install MariaDB. Karena ini adalah pengganti drop-in, tidak perlu mengonversi data apa pun. Pengembang MariaDB melakukan penggabungan bulanan kode MySQL untuk memastikan mereka tetap kompatibel. Ada perbedaan ketidaksesuaian antara versi MySQL dan MariaDB meskipun versi dirancang agar kompatibel dengan nomor versi masing-masing (misalnya MySQL 5.1 -> MariaDB 5.1 &MySQL 5.5 -> MariaDB 5.5).
Inkompatibilitas antara MariaDB 10.0 &MariaDB 5.5 / MySQL 5.5
- Sintaksis SET OPTION tidak digunakan lagi di MariaDB 10.0 dan MySQL 5.6. Gunakan hanya SET.
Inkompatibilitas antara MariaDB 10.0 &MySQL 5.6
- Semua binari MySQL (MySQLd, myisamchk, dll.) memberikan peringatan jika seseorang menggunakan awalan opsi (seperti –big-table bukan –big-tables). Binari MariaDB bekerja dengan cara yang sama seperti kebanyakan perintah Unix lainnya dan tidak memberikan peringatan saat menggunakan awalan yang unik.
- MariaDB GTID tidak kompatibel dengan MySQL 5.6. Ini berarti bahwa seseorang tidak dapat memiliki MySQL 5.6 sebagai budak untuk MariaDB 10.0. Namun MariaDB 10.0 dapat menjadi budak MySQL 5.6 atau versi MySQL/MariaDB sebelumnya.
- Replikasi multi-sumber MariaDB 10.0 tidak didukung di MySQL 5.6.
- Kolom dinamis MariaDB 10.0 tidak didukung oleh MySQL 5.6.
- Untuk membuat CREATE TABLE … SELECT bekerja dengan cara yang sama dalam replikasi berbasis pernyataan dan berbasis baris, secara default dijalankan sebagai CREATE OR REPLACE TABLE pada slave. Salah satu keuntungannya adalah jika slave mati di tengah CREATE … SELECT, ia akan dapat melanjutkan.
- Seseorang dapat menggunakan variabel slave-ddl-exec-mode untuk menentukan bagaimana CREATE TABLE dan DROP TABLE direplikasi.
- Lihat juga rincian rincian perbedaan variabel Sistem antara MariaDB 10.0 dan MySQL 5.6.
- MySQL 5.6 memiliki skema kinerja yang diaktifkan secara default. Untuk alasan kinerja, MariaDB 10.0 menonaktifkannya secara default. Anda dapat mengaktifkannya dengan memulai MySQLd dengan opsi –performance-schema.
- MariaDB 10.0 tidak mendukung plugin MySQL Memcached.
- Pengguna yang dibuat dengan algoritme kata sandi SHA256 MySQL tidak dapat digunakan di MariaDB 10.0.
- MariaDB 10.0 tidak mendukung replikasi tertunda – MDEV-7145.
Inkompatibilitas antara MariaDB 10.1 &MySQL 5.7
- MariaDB 10.1 tidak mendukung JSON MySQL 5.7.
- Enkripsi InnoDB MariaDB 10.1 diimplementasikan secara berbeda dari enkripsi InnoDB MySQL 5.7.
- MariaDB 10.1 tidak mendukung plugin parser teks lengkap ngram dan MeCab – MDEV-10267, MDEV-10268.
- MariaDB 10.1 tidak mendukung beberapa pemicu untuk sebuah tabel – MDEV-6112.
- MariaDB 10.1 tidak mendukung CREATE TABLESPACE untuk InnoDB.
Inkompatibilitas antara MariaDB 10.2 &MySQL 5.7
- Perbedaan variabel sistem antara MariaDB 10.2 dan MySQL 5.7.
- Perbedaan fungsi antara MariaDB 10.2 dan MySQL 5.7.
- Beberapa pemicu per tabel ditambahkan di 10.2
- Enkripsi MariaDB InnoDB diimplementasikan secara berbeda dari enkripsi InnoDB MySQL 5.7.
- MariaDB menyimpan JSON sebagai teks asli, bukan dalam format biner seperti MySQL. Alasannya adalah fungsi JSON kami jauh lebih cepat daripada MySQL sehingga kami tidak perlu melihat kebutuhan untuk menyimpan sesuatu dalam format biner karena menambah banyak kerumitan saat memanipulasi objek JSON.
- MariaDB 10.2 tidak mendukung plugin parser teks lengkap ngram dan MeCab – MDEV-10267, MDEV-10268.
- MariaDB 10.2 tidak mendukung plugin MySQL X.
- MariaDB 10.2 tidak mendukung ruang tabel umum MySQL.
- Lihat juga Inkompatibilitas antara MariaDB 10.1 dan MySQL 5.7.