Pentingnya RAM adalah fakta mapan tetapi jauh lebih sedikit materi yang tersedia tentang pentingnya core dan multithreading ketika datang ke penggunaan CPU oleh MySQL. Saya berbicara tentang perbedaan menjalankan MySQL pada 4cores vs 6cores vs 8cores dan seterusnya.
Apakah mesin penyimpanan yang berbeda menggunakan CPU secara berbeda?
mysql
performance
Rick James
sumber
sumber
Jawaban:
Ketika datang ke MySQL, tidak ada perbandingan antara mesin penyimpanan kecuali bahwa ia jatuh ke dalam dua kategori dasar:
Fitur MySQL penggunaan beberapa mesin penyimpanan
Adapun mesin penyimpanan yang terdaftar, satu-satunya yang memiliki kepatuhan ACID adalah InnoDB dan NDB. Mengapa ini tidak perlu disebutkan? Dua alasan:
InnoDB di bawah MySQL 5.5, InnoDB Plugin), dan XtraDB Percona Server memiliki opsi yang dapat Anda atur untuk mengakses beberapa core (Percona Server telah melakukannya lebih lama). Bahkan, Percona menyuntikkan sekitar 30.000 baris kode khusus untuk peningkatan kinerja InnoDB dengan setiap rilis GA baru dari kode sumber MySQL. Kita bisa yakin Oracle telah memasukkan perangkat tambahannya sendiri dari think tank mereka sendiri untuk dijalankan dalam InnoDB untuk operasi multicore (sejak MySQL 5.1.38).
Dengan kebutuhan untuk melakukan MVCC pada data bersamaan dengan penguncian baris / halaman, kinerja transaksi sekarang dapat diinstrumentasi, diukur, dan dikonfigurasikan.
Jika ada satu hal yang saya pelajari tentang menggunakan beberapa core, itu adalah Anda harus menyetel InnoDB secara efektif dan tidak hanya mengandalkan InnoDB di luar kotak .
UPDATE 2011-09-20 08:03 EDT
Berkenaan dengan InnoDB yang diuntungkan dari semua core, kita perlu menjaga segala sesuatunya dalam perspektif. Core juga harus cenderung ke hal-hal lain (OS, Disk, Memori, Aplikasi, Pemantauan, dll.) Di Server Database. Bagi mereka dengan anggaran sederhana, banyak yang cenderung memiliki Database Server juga menyediakan NFS, pemantauan dari Munin, dukungan aplikasi untuk JBoss, PHP, dan daftar berjalan. Jika Anda ingin MySQL, lebih khusus InnoDB, untuk menggunakan lebih banyak core, Server Database harus didedikasikan khusus untuk MySQL dan OS / Disk / Memory harus cenderung hanya untuk MySQL . Mengingat perspektif ini, InnoDB akan melibatkan lebih banyak core tanpa keraguan .
Adapun Plugin InnoDB, itu disebutkan hanya untuk menunjukkan inisiatif sebelumnya untuk memiliki InnoDB yang lebih baik pada bagian dari MySQL (eh, Oracle. Maaf, masih belum bergeming). Variabel baru untuk memanggil lebih banyak aktivitas inti menjadi jelas dari MySQL 5.1.38.
Misalnya, innodb_read_io_threads dan innodb_write_io_threads (keduanya sejak MySQL 5.1.38) mengalokasikan jumlah utas yang ditentukan untuk dibaca dan ditulis. Default adalah 4 dan maksimum adalah 64. Pengaturan default dan maks sangat berbeda (4 - 64) menunjukkan bahwa InnoDB adalah multithread dan inti intensif seperti yang Anda konfigurasikan !!!
Mengatasi kebutuhan komunitas MySQL untuk mengakses lebih banyak core dengan InnoDB dipimpin oleh Percona. Akibatnya, MySQL mulai mengikutinya. Saya harus mengakui bahwa Oracle (yuck) melakukan perbaikan yang diperlukan untuk aktivitas inti yang lebih banyak.
sumber
Saya menemukan berbicara tentang mesin penyimpanan menggunakan core dapat menyesatkan bagi pemula. Asalkan suatu program cukup multi-threaded, sistem operasi akan menjadwalkannya sebanyak mungkin core.
Masalah khusus yang membatasi penskalaan cpu adalah ketika kode penguncian internal ( mutex ) memiliki pertikaian dan memblokir utas dari menjalankan secara bersamaan. Semua mesin penyimpanan akan membutuhkan mutex, tetapi tentu saja ada beberapa yang panas di MyISAM.
Jika kami mengabaikan pertikaian mutex sebentar dan kembali ke pertanyaan utama Anda: seberapa pentingkah memiliki banyak core? -
Saya suka memiliki banyak core untuk beban kerja yang melayani permintaan yang dihadapi pengguna. Memiliki banyak dapat mengurangi perbedaan antara waktu permintaan. Anggap ini seperti antre di pasar super dengan 12 gang terbuka versus hanya 2.
Pembaruan : Saya menulis posting blog tentang mengapa skalabilitas vertikal (multi-core) penting.
sumber