Manfaat Barracuda dan Kompresi

12

Saya telah membaca tentang format file MySQL Antelope dan Barracuda beberapa waktu yang lalu, dan saya ingin tahu apakah saya dapat memperoleh manfaat dengan memiliki Barracuda dan Kompresi.

Server saya saat ini menggunakan Antelope, karena ini adalah default dari MySQL.
Saya sering mengalami masalah dengan memori karena database besar yang saya miliki. Basis data saya bertambah setiap hari.

Tampaknya Kompresi memberi manfaat bagi beberapa orang, seperti:
http://www.mysqlperformanceblog.com/2008/04/23/real-life-use-case-for-barracuda-innodb-file-format/

Saya mengerti memori dan ruang disk bisa lebih rendah, tapi saya tidak yakin apakah saya mengerti ini (dikutip dari artikel):
"~ 5% beban CPU sesuai dengan top (dari 80-100% kebanyakan menunggu I / O)
0,01 waktu pencarian rata-rata detik dengan kunci primer (mulai 1-20 detik sebelum konversi) "

Saya pikir dua hal ini TIDAK akan membaik, karena jika data dikompresi, server harus membuka kompresi untuk mendapatkan data asli lagi, jadi tidakkah masuk akal bahwa penggunaan CPU akan meningkat?

Apakah itu menguntungkan Anda dalam aplikasi intensif baca / tulis? Apakah Anda merekomendasikan saya untuk beralih ke Barracuda dan Compression?

Apakah Anda mengetahui adanya masalah Barracuda?
Tampaknya jawaban dari pertanyaan berikut menunjukkan beberapa masalah, tetapi karena ini berasal dari 2011, saya akan mengatakan bahwa mereka sudah diperbaiki sekarang: /server/258022/mysql-innodb-how-to-switch -untuk-barracuda-format

Nuno
sumber

Jawaban:

14

Mengenai "Dynamic" , format Barracuda-only yang tidak dikompresi, sangat sedikit yang berubah dari compact, terutama tentang bagaimana blob (dan bidang yang sangat dinamis) disimpan . Saya tidak pernah memiliki masalah dengan compact vs dynamic, jadi saya dapat dengan aman merekomendasikan dinamis Barracuda. Ingat bahwa Barracuda juga mendukung format baris yang redundan dan ringkas .

Artikel yang Anda sebutkan mungkin terlalu tua (5.1) dan, seperti yang dikatakan Peter Z., CEO Percona, menyebutkan komentar-komentar itu mungkin agak menyesatkan. Itu tidak berarti bahwa kompresi tidak bisa menjadi keuntungan besar tergantung pada beban kerjanya. Namun, saya akan merekomendasikan Anda untuk mencobanya pada versi> = 5.6, karena Facebook dan Oracle telah melakukan banyak perbaikan tentang hal itu.

Sebagai bahan referensi yang lebih baru, saya akan merekomendasikan Anda:

Secara khusus, saya suka materi Facebook karena mereka adalah pihak ketiga (tidak perlu agenda) dan mereka memiliki salah satu penyebaran MySQL terbesar di dunia. Seperti yang Anda lihat, mereka memiliki setup yang sangat sukses menggabungkan teknologi SSD dengan kompresi.

Apakah ini akan menguntungkan Anda? Itu akan tergantung pada beban kerja, set dan pengaturan kerja Anda (IOPS, memori) . Bergantung jika Anda terikat IO, CPU terikat atau memori terikat, kompresi dapat mempengaruhi negatif dalam beberapa kasus, dengan menambahkan CPU tambahan, persyaratan memori (halaman terkompresi dan tidak terkompresi disimpan di pool buffer InnoDB) atau menghasilkan terlalu banyak kegagalan kompresi, menambah latensi. Ini juga tergantung pada jenis data: kompresi dapat banyak membantu dengan gumpalan teks besar, tetapi mungkin tidak berguna dengan data yang sudah dikompresi.

Dalam pengalaman saya, dalam prakteknya, ada orang-orang yang kompresi adalah cawan suci kinerja dan sangat senang dengan itu, tetapi pada kasus lain, kami harus kembali ke data yang tidak terkompresi karena tidak ada perolehan yang diperoleh. Sementara beban kerja penulisan yang sangat berat mungkin tampak seperti lingkungan yang buruk untuk kompresi, jika dalam kasus khusus Anda, Anda tidak terikat cpu dan terikat memori, tetapi terikat dengan iops mungkin tidak kurang membantu.

Secara umum, sangat sulit untuk memprediksi hasil, biasanya Anda harus menyiapkan lingkungan pengujian untuk pembandingan dan kemudian menemukan mengapa Anda mendapatkan hasil yang lebih baik atau lebih buruk (dan dengan cara itu Anda bisa bermain dengan ukuran blok yang berbeda, dll.). Barracuda sepenuhnya aman. Kompresi mungkin atau tidak untuk Anda. Dan Anda selalu dapat bereksperimen dengan metode kompresi lain seperti kompresi gumpalan sisi klien (misalnya, jika Anda berakhir dengan terikat CPU) atau mesin pihak ke - 3 lainnya seperti RocksDB dan TokuDB , di mana kompresi merupakan prioritas besar, karena difokuskan dalam kinerja untuk dataset yang lebih besar daripada yang bisa ditangani InnoDB.

Singkatnya: Alasan utama untuk menggunakan Barracuda adalah penanganan BLOB, innodb_large_prefixkompatibilitas (indeks besar) dan kompresi. Dinamis, pada MySQL 8.0 sekarang merupakan format file default.

jynus
sumber
1
Ini adalah jawaban yang benar-benar MENGAGUMKAN dan jelas! Itu masuk akal dan merupakan tipe jawaban yang saya inginkan. Anda menyebutkan MySQL 5.6 (yang saya tingkatkan baru-baru ini) dan merujuk Facebook sebagai contoh, seperti yang saya suka, karena mereka biasanya harus mengatasi tantangan sebelum orang lain. Sayangnya tidak akan mudah untuk mengujinya terlebih dahulu, karena lingkungan pengujian tidak akan memiliki beban CPU / IO / RAM yang sama dengan produksi, tetapi memang saya harus mencobanya! Terima kasih banyak atas waktu anda
Nuno
Karena format baris dapat dipilih pada tingkat tabel, itu dapat memberi Anda beberapa fleksibilitas untuk pengujian pada produksi (setelah pengujian yang tepat pada mesin yang terpisah). Pendekatan ini, bagaimanapun, akan berpotensi membuat debugging dan benchmark lebih sulit.
jynus
Yup, saya mungkin bisa mencoba mengubah beberapa tabel terlebih dahulu (mungkin yang tidak begitu besar / bekas). Namun, untuk yang besar, itu akan memerlukan beberapa downtime, daripada hanya 1 downtime di mana saya akan mengkonversi semuanya sekaligus. Saya harus melihat apa pendekatan terbaik. Saya tidak mengerti, mengapa hal itu membuat debugging lebih sulit Apa maksudmu di sini? Terima kasih banyak.
Nuno
1
Anda memiliki alat seperti pt-online-schema-change percona.com/doc/percona-toolkit/2.2/… untuk membuat ulang tabel secara online. Saya baru saja menyebutkan bahwa mencampur beberapa tabel saja mungkin membuat pengukuran cpu / memory / iops lebih sulit karena perubahan mesin dan membedakannya dari perubahan beban normal atau karena perubahan caching ketika membuatnya kembali. Juga sulit untuk melihat pada mesin yang berbeda dengan perangkat keras yang berbeda, jadi semoga berhasil!
jynus
Pada ZFS, tidaklah mutlak yang tidak baik saat menggunakan LZ4 pada sistem file.
Denis Denisov