Apakah kinerja CPU relevan untuk server basis data?

33

Ini adalah pertanyaan yang murni teoretis. Katakanlah saya memiliki aplikasi yang digunakan di beberapa server.

  1. Sebuah penyeimbang beban,
  2. Beberapa / server aplikasi yang dapat diskalakan
  3. 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.

Zenklys
sumber
Yah, harus ada satu.
ConcernedOfTunbridgeWells

Jawaban:

29

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.)

kgrittn
sumber
Hei, aku punya bukunya. Apakah ada halaman, bagian atau bab tertentu yang Anda rujuk ??? (BTW +1 untuk perspektif PostgreSQL)
RolandoMySQLDBA
Terima kasih atas informasi tentang PostgreSQL. Saya akan memeriksa buku itu. ;)
Zenklys
1
Barang bagus dari halaman 21-23
RolandoMySQLDBA
Saya dapat melihat hikmat dari paragraf kedua Anda jika dibandingkan dengan halaman 21-23.
RolandoMySQLDBA
23

Secara ketat dari perspektif MySQL, itu adalah pertanyaan yang sangat dimuat

Frekuensi CPU yang relevan untuk server basis data?

Sementara CPU dan motherboard yang lebih cepat itu hebat, hambatan lainnya bisa menghalangi. Kemacetan seperti itu meliputi:

  • Disk I / O
  • Maksimum Koneksi
  • Latensi Jaringan
  • Performa Permintaan Per Koneksi

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?

Apakah beberapa CPU inti relevan?

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 .

Apakah RAM lebih penting daripada CPU?

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.

RolandoMySQLDBA
sumber
2
Jawaban yang bagus Saya akan memeriksa semua tautan itu, terima kasih.
Zenklys
6
  • Tidak
  • Tidak
  • iya nih

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)

gbn
sumber
Terima kasih atas jawabannya. SSD adalah pilihan yang bagus? Lebih dari kekuatan CPU?
Zenklys
@ Zenklys: sulit dikatakan. Apa ukuran basis data yang Anda miliki? Tulis volume? Baca memuat? OLTP atau OLAP? etc
gbn
Maksimum 20-30 gb. Rasio baca / tulis 10 banding 1, hanya data kecil, OLTP.
Zenklys
2
@ Zenklys: Dalam hal ini, itu tidak terlalu penting. Beli saja RAM terutama untuk MySQL sehingga sebanyak mungkin data di-cache mungkin
gbn
3
Tidak yakin mengapa ini adalah jawaban yang diterima. Ini sederhana karena tidak mempertimbangkan aplikasi, beban kerja, atau ukuran kumpulan data. @ kgrittn memberikan jawaban yang lebih baik berdasarkan pengalaman dunia nyata dan pemahaman yang lebih baik tentang teori operasi untuk Postgres.
dbenhur