it-swarm-id.com

Apa filesystem Linux terbaik untuk MySQL (InnoDB)?

Saya mencoba mencari patokan pada kinerja berbagai filesystem dengan MySQL InnoDB tetapi tidak dapat menemukannya.

Beban kerja basis data saya adalah OLTP berbasis web yang khas, sekitar 90% baca, 10% tulis. IO acak.

Di antara sistem file populer seperti ext3, ext4, xfs, jfs, Reiserfs, Reiser4, dll. Mana yang menurut Anda merupakan yang terbaik untuk MySQL?

48
Continuation

Berapa nilai Anda terhadap data?

Serius, setiap sistem file memiliki pengorbanannya sendiri. Sebelum saya melangkah lebih jauh, saya penggemar berat XFS dan Reiser, meskipun saya sering menjalankan Ext3. Jadi tidak ada bias filesystem nyata yang bekerja di sini, hanya memberi tahu Anda ...

Jika sistem file sedikit lebih dari sekadar wadah untuk Anda, maka lakukan apa saja yang memberi Anda waktu akses terbaik.

Jika datanya bernilai signifikan, Anda harus menghindari XFS. Mengapa? Karena jika itu tidak dapat memulihkan sebagian dari file yang dijurnal itu akan nol blok dan membuat data tidak dapat dipulihkan. Masalah ini diperbaiki di Linux Kernel 2.6.22 .

ReiserFS adalah sistem file yang bagus, asalkan tidak pernah crash keras . Pemulihan jurnal berfungsi dengan baik, tetapi jika karena alasan tertentu Anda kehilangan info partisi Anda, atau blok inti dari sistem file terhapus, Anda mungkin memiliki pertanyaan jika ada beberapa partisi ReiserFS pada disk - karena mekanisme pemulihan pada dasarnya memindai seluruh disk, sektor demi sektor, mencari apa yang "dipikirkan" adalah awal dari sistem file . Jika Anda memiliki tiga partisi dengan ReiserFS tetapi hanya satu yang ditiup, Anda dapat membayangkan kekacauan ini akan menyebabkan proses pemulihan menjahit kekacauan Frankenstein dari dua sistem lainnya ...

Ext3 "lambat", dalam "Saya punya 32.000 file dan butuh waktu untuk menemukan semuanya berjalan ls" agak seperti itu. Jika Anda akan memiliki ribuan meja sementara kecil di mana-mana, Anda akan memiliki sedikit kesedihan. Versi yang lebih baru sekarang menyertakan opsi indeks yang secara dramatis mengurangi traversal direktori tetapi masih bisa menyakitkan.

Saya tidak pernah menggunakan JFS. Saya hanya bisa berkomentar bahwa setiap reviewnya yang pernah saya baca adalah sesuatu yang "solid, tapi bukan anak tercepat di blok". Mungkin pantas diselidiki.

Cukup Kontra, mari kita lihat Pro:

XFS:

  • jeritan dengan file besar, waktu pemulihan cepat
  • pencarian direktori sangat cepat
  • Primitif untuk membekukan dan menghapuskan sistem file untuk dumping

ReiserFS:

  • Akses file kecil yang sangat optimal
  • Paket beberapa file kecil ke dalam blok yang sama, menghemat ruang sistem file
  • pemulihan cepat, saingan kali pemulihan XFS

Ext3:

  • Sudah dicoba dan benar, berdasarkan kode Ext2 yang sudah teruji
  • Banyak alat untuk bekerja dengannya
  • Dapat dipasang kembali sebagai Ext2 dalam keadaan darurat untuk pemulihan
  • Dapat keduanya menyusut dan diperluas (sistem file lain hanya dapat diperluas)
  • Versi terbaru dapat diperluas "langsung" (jika Anda berani)

Jadi Anda lihat, masing-masing memiliki kebiasaan sendiri. Pertanyaannya adalah, mana yang paling tidak aneh untuk Anda?

44
Avery Payne

Mungkin juga patut dicatat bahwa Anda dapat menjalankan InnoDB tanpa filesystem dan meningkatkan kinerja tanpa overhead filesystem. Saya tidak yakin akan merekomendasikannya, tetapi saya telah menggunakannya sebelumnya tanpa masalah.

Perangkat Baku InnoDB

Selain itu, jika Anda menjalankan 90% membaca dan 10% menulis, kecuali jika Anda memerlukan kemampuan transaksional InnoDB Anda mungkin melihat porting ke MyISAM untuk kinerja membaca yang lebih baik.

13
Xorlev

Jawaban di sini benar-benar usang, dan perlu diperbarui karena ini akan muncul di hasil google.

Untuk lingkungan produksi, XFS. Setiap saat. XFS dijurnal dan tidak diblokir. Pastikan Anda memiliki variabel berikut untuk database MySQL modern (2011/2012) menggunakan InnoDB dalam produksi:

innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 1 # an ACID requirement
sync_binlog = 1 # more ACID
innodb_flush_method = O_DIRECT

Jangan gunakan EXT3 atau bahkan EXT4. Suatu hari BTRFS akan sampai di sana.

EXT3, dan mungkin EXT4, mengunci pada level inode, tidak pintar!

Sumber: - www.mysqlperformanceblog.com - http://dev.mysql.com/doc/internals/en/index.html - Memahami Internal MySQL oleh Sasha Pachev - https://www.facebook.com/note.php?note_id=101502109016109 - http://oss.sgi.com/projects/xfs/training/ - Beberapa kit ayunan, coba-coba.

EDIT: Pembaruan. EXT4 tampaknya berjalan cukup baik pada pertengahan 2013! BTRFS masih bukan pilihan yang baik. Dan RHEL mungkin menjadikan XFS sistem file default baru. Sekali lagi, JANGAN gunakan EXT3.

11
Mathnode

Versi singkatnya adalah bahwa yang paling dekat dengan rekomendasi yang pernah saya lihat di MySQL tentang filesystem adalah XFS, namun ext3 juga harus ok, ext4 menjanjikan perbaikan yang bagus, tetapi masih belum cukup stabil, meskipun harus sebelum akhir tahun.

Jika Anda menjalankan filesystem cluster CXFS, OCFS2 dan GFS semua harus ok.

Saya akan sangat memperingatkan terhadap derivatif Reiser, dan JFS meskipun sekali Nice sebagian besar telah dikalahkan oleh XFS dan ext4 yang keduanya lebih banyak digunakan.

9
LapTop006

Itu tidak akan membuat banyak perbedaan. Pergilah dengan apa pun distribusi Anda gunakan sebagai default, asalkan cukup.

Habiskan upaya Anda untuk mencari hal lain - dapatkan ram yang cukup - dapatkan pengendali serangan yang tidak menyedot - dan perbaiki aplikasi (ab) penggunaan database (NB: ini adalah penyebab utama dalam banyak kasus di mana ia belum melakukannya telah dilakukan).

Namun pertimbangkan, dengan hati-hati, sistem file tempat Anda meletakkan mysql tmpdir Anda; ini akan memengaruhi kinerja, khususnya kueri yang melakukan filesort () berbasis disk (lihat EXPLAIN untuk detail lebih lanjut).

Saya pikir sistem file yang mendukung alokasi tertunda sangat berguna di sini, karena Anda dapat menghindari IO sepenuhnya untuk file berumur pendek ketika ada cukup ram untuk menyimpannya dalam cache. XFS, misalnya, sama sekali tidak repot menulis file yang bisa dihapus dan ditutup sebelum dialokasikan.

Tentu saja menempatkan tmpdir pada tmpfs menarik dari perspektif kinerja, tetapi mengarah pada risiko melelahkan ruang dan memiliki pertanyaan yang jika tidak akan berhasil (walaupun dengan file sementara disk yang digunakan) gagal.

6
MarkR

Saya tidak menemukan artikel terbaru dengan benchmark "roundups" di MySQL yang berjalan di berbagai filesystem. Mengingat beban kerja yang Anda jelaskan, saya ragu bahwa fragmentasi tingkat file akan menjadi masalah besar. Tanpa tolok ukur formal, saya tidak bisa mengatakan apa pun yang harus Anda anggap sah, tetapi nyali saya mengatakan bahwa setiap sistem file yang Anda sebutkan di atas akan bekerja secara kasar di rata-rata yang sama (yaitu semua dalam urutan yang sama besarnya untuk angka kinerja) .

Basis data benar-benar menjalankan pertunjukan, karena sistem file hanya mengelola luasan besar yang diakses oleh mesin penyimpanan.

Namun, akan menarik untuk melakukan pembulatan kinerja dengan semua filesystem tersebut. (Namun saya kurang antusias terhadap MySQL, jadi saya tidak akan melakukannya. Benchmarking Postgres, OTOH, mungkin menarik ...)

5
Evan Anderson

IMHO, FS yang patut diperhatikan yang tersedia untuk linux adalah:

XFS (kecepatan baca buruk) dikenal ringan pada sumber daya sistem dan cepat dengan file besar tetapi buruk untuk menangani banyak file kecil.

ReiserFS (kecepatan tulis yang buruk) tidak terlalu baik pada sumber daya sistem tetapi berkinerja sangat baik dengan banyak file kecil.

EXT3 berada di antaranya, berkinerja dapat diterima di semua bidang (alasan mengapa ini dianggap sebagai default linux FS).

Saya belum menggunakan EXT4 bukan ReiserFS4 sendiri tetapi saya telah melihat-lihat beberapa tolok ukur dan ReiserFS tampaknya memiliki kinerja terbaik dalam hal kecepatan membaca, yang menurut Anda paling penting bagi Anda.

Lihatlah ini: ReserFS4 X Ext4 X Ext

Saya akan merekomendasikan Ext3 untuk stabilitas, keamanan, dan kematangannya, tetapi jika kecepatan baca adalah yang paling penting bagi Anda, Anda harus mempertimbangkan ReiserFS.

Ingatlah bahwa Anda juga harus mempertimbangkan penggunaan CPU, stabilitas, keamanan, dan seterusnya sebelum memilih FS.

Dan tentu saja membuat pilot, pengujian dan benchmarking pada lingkungan khusus Anda selalu merupakan cara terbaik untuk memberi tahu apa yang terbaik untuk Anda.

PS: Saya akan mengirim lebih banyak tolok ukur tetapi saya tidak dapat mengirim lebih dari satu tautan.

3
OldJim