Ini adalah pertanyaan yang murni teoretis. Katakanlah saya memiliki aplikasi yang digunakan di beberapa server.
- Sebuah penyeimbang beban,
- Beberapa / server aplikasi yang dapat diskalakan
- Server database (tunggal) (untuk saat ini)
Pada dua bagian pertama, saya tahu apa yang harus dicari. Tetapi bagaimana dengan server database? Jenis perangkat keras apa yang harus saya cari?
- Apakah frekuensi CPU relevan untuk server basis data?
- Apakah beberapa CPU inti relevan?
- Apakah RAM lebih penting daripada CPU?
PS: Misalkan database yang dipilih adalah MySQL atau PostgreSQL.
mysql
postgresql
performance
Zenklys
sumber
sumber
Jawaban:
Untuk PostgreSQL, kekuatan CPU bisa sangat relevan, terutama jika persentase yang cukup tinggi dari set data yang aktif bekerja sesuai dengan RAM. Sebagian besar database yang pernah saya gunakan memiliki kekuatan CPU sebagai hambatan utama sebagian besar waktu. (Saya baru saja memeriksa vmstat di server situs web hosting dengan jutaan hit per hari hosting lebih dari 5TB ruang basis data, dan saya tidak pernah melihat lebih dari 2% waktu tunggu disk, tetapi melihat puncak waktu pengguna CPU 12%.)
Karena PostgreSQL berbasis proses, setiap proses tunggal hanya dapat berjalan secepat satu inti, tetapi dalam campuran seperti yang kami miliki di server yang disebutkan di atas, dengan volume tinggi permintaan kecil, total CPU di semua core adalah yang paling penting. Untuk kekuatan CPU total yang sama, PostgreSQL umumnya akan melakukan lebih baik dengan lebih sedikit, lebih cepat core daripada banyak, core lebih lambat.
Sampai pada titik di mana persentase tinggi dari set data aktif Anda di-cache, menambahkan RAM biasanya akan menunjukkan lebih banyak uang daripada menambahkan core. Setelah Anda mendapatkan caching yang cukup, manfaat dari RAM tambahan turun dan Anda lebih baik meningkatkan daya CPU.
Untuk detail lebih lanjut tentang topik ini berkaitan dengan PostgreSQL, saya tidak berpikir ada sumber yang lebih baik daripada PostgreSQL 9.0 High Performance oleh Greg Smith . (Pengungkapan penuh, saya adalah peninjau teknis untuk buku ini, tetapi tidak mendapatkan manfaat finansial berdasarkan penjualan.)
sumber
Secara ketat dari perspektif MySQL, itu adalah pertanyaan yang sangat dimuat
Sementara CPU dan motherboard yang lebih cepat itu hebat, hambatan lainnya bisa menghalangi. Kemacetan seperti itu meliputi:
Setiap keuntungan kecil membantu, tetapi saya harus mengatakan TIDAK karena kecepatan CPU, dengan sendirinya, tidak membaik pada kemacetan yang disebutkan di atas. Lagi pula, apa yang bisa dilakukan oleh balap mobil Formula Satu mengenakan parasut terbuka atau dengan gorila seberat 800 pon?
Itu sepenuhnya tergantung pada versi MySQL yang Anda jalankan. Plugin MySQL 5.1 InnoDB, MySQL 5.5, dan XtraDB dari Percona Server semuanya memiliki pengaturan ANDA HARUS MENGONFIGURKAN agar mendapatkan InnoDB untuk mengakses semua core. Insentif nyata untuk melakukan ini berasal dari fakta bahwa beberapa versi lama MySQL LEFT UNCONFIGURED lebih cepat daripada versi yang lebih baru seperti yang saya bahas dalam posting saya sebelumnya:
Oleh karena itu, jika Anda tidak ingin mengonfigurasi InnoDB untuk mengakses semua CPU, memiliki beberapa core tidak akan memberi Anda apa-apa .
Oh ya. Konfigurasi memori untuk MySQL memerlukan pengaturan
Meminta terlalu sedikit atau terlalu banyak kombinasi hal-hal ini dan MySQL kembali menggigit Anda. CPU yang lebih cepat dengan MySQL yang tidak dikonfigurasi dengan benar untuk RAM hanya membuat MySQL menggigit Anda lebih cepat.
sumber
Secara sederhana, Anda memerlukan kinerja RAM dan IO (latensi + kecepatan baca + kecepatan tulis) untuk basis data.
Pilihan 4 atau 6 core atau 2,5 GHz vs 3 GHz tidak benar-benar relevan (saya berasumsi Anda tidak harus memilih antara P3-450 dengan RAM 32 GB atau Xeon terbaru dengan RAM 1GB).
Jika Anda terikat dengan CPU, maka Anda memiliki masalah lain (desain buruk, indeks buruk, swapping, server tidak berdedikasi dll)
sumber