Saya mencoba membeli Server baru untuk menjalankan MySQL Server. Server baru ini akan menjadi budak dari mesin utama saya. Namun, server ini hanya akan didedikasikan untuk melaporkan "Banyak bacaan dan kueri kompleks."
Sekarang saya sedang mencari untuk berinvestasi dalam hard drive solid state tetapi bertanya-tanya apakah itu benar-benar layak harganya. Perbedaan antara SSD dan hard drive SATA 7200 adalah sekitar $ 1500 dan SSD memiliki lebih sedikit ruang disk. Jika saya berinvestasi ke SSD, apakah kecepatannya akan terlihat?
Saya dapat membeli 4 (500GB SATA 7200) seharga $ 1500 kurang dari pembelian 2 (500GB SSD)
Bisakah Anda membantu saya membuat keputusan untuk melihat apakah itu layak untuk ditingkatkan atau tidak?
Sekali lagi hal yang ingin saya sebutkan adalah bahwa saya tidak menggunakan query_cache
sehingga akan ada banyak disk membaca.
Server ini akan memiliki 32GB RAM dan akan menjalankan Ubuntu 12.04
Jawaban:
Ya dengan banyak membaca dan melaporkan SSD akan membuat perbedaan besar. Dari 7200 RPM drive Anda dapat mengharapkan tidak lebih dari ~ 100 IOPS sementara SSD termurah dapat minimal 5x secepat itu. Dengan SSD yang bagus Anda bisa mencapai 20000 IOPS atau bahkan lebih.
Tulisan acak di SSD jauh lebih cepat karena disk tidak harus bergerak setiap waktu.
sumber
Ada tiga faktor yang perlu Anda pertimbangkan di sini:
innodb_buffer_pool_size
Jika memori yang tersedia> ukuran basis data , server Anda mungkin akan dapat menyimpan semua data Anda dalam memori, dan karena itu SSD mungkin membuang-buang uang. Buffer InnoDB tidak ada hubungannya dengan
query_cache
opsi.Jika memori yang tersedia <ukuran basis data , ada kemungkinan bahwa kueri perlu mengambil data dari disk. Untuk kueri yang sangat kompleks, atau jika banyak pengguna menjalankan kueri sekaligus, ini bisa mulai memberi tekanan pada disk.
Secara umum, basis data menyimpan data yang paling banyak digunakan ke dalam memori - jika 80% dari data Anda jarang / tidak pernah digunakan, Anda hanya perlu menyimpan 20% dari basis data Anda dalam memori untuk mempertahankan kinerja.
Jumlah persis memori yang Anda butuhkan tidak akan segera terlihat, tetapi kecuali jika database Anda 200GB +, saya benar-benar akan merekomendasikan untuk mengambil saran Up_One dan menghabiskan uang ekstra untuk memori daripada SSD.
NB: Jika database Anda menggunakan MyISAM (Anda dapat memeriksanya dengan ini
show table status;
), pertimbangkan untuk beralih ke InnoDB. MyISAMkey_buffer_cache
hanya menyimpan blok indeks, di mana InnoDB Buffer Pool menyimpan seluruh blok data. Dalam kebanyakan kasus, InnoDB akan terbukti menjadi mesin yang lebih baik untuk digunakan.sumber
Saya pikir itu bukan ide yang bagus!
Saran saya
meningkatkan ukuran kumpulan buffer InnoDB Anda adalah cara terbaik untuk mempercepat MySQL. Jika Anda dapat menambahkan lebih banyak RAM, lakukanlah. Ini akan membuat sebagian besar data panas Anda dalam memori jadi bayangkan! Disk vs Memori!
Skenario sempurna adalah memiliki memeory Anda seukuran
SSD basis data Anda - bagus tetapi akan mahal! dan itu hanya baik untuk pekerjaan membaca intensif.
Periksa tautan ini untuk artikel bagus tentang ini dari Vadim Tkachenko
sumber
Untuk memberikan alternatif: Anda bisa menggunakan keduanya, harddisk besar (idealnya, RAID1 dengan tiga disk) untuk menyimpan data, dan SSD yang lebih kecil untuk menyimpan indeks.
Alasan:
sumber
Lakukan.
Anda menyebutkan bahwa Anda memiliki beban kerja baca-berat, jadi Anda sudah menghindari masalah besar dengan menggunakan SSD pada database: kelelahan. Tidak menulis berarti tidak pakai, jadi Anda emas.
Seperti yang disebutkan oleh edvinas.me, IOPS Anda adalah urutan yang lebih cepat dengan SSD daripada dengan disk yang berputar. Untuk database, IOPS cukup banyak diterjemahkan menjadi permintaan per detik. Mengabaikan cache RAM, Anda akan melayani sekitar 100x lebih banyak permintaan dari SSD daripada dari disk 7200RPM.
TRIM tidak akan membuat banyak perbedaan karena ini adalah beban kerja yang berat dan sepertinya Anda berencana mengisi disk. Jangan stres tentang itu.
Saya tidak yakin dari mana $ 1500 itu berasal. Memeriksa pemasok lokal saya (Australia), saya bisa mendapatkan SSD 960GB dengan nilai reputasi tinggi untuk $ 750 ( http://www.auspcmarket.com.au/960gb-crucial-m500-sata-6gbps-2-5-7mm-with- 9-5mm-adapter-ssd-read-500mb-s-write-400mb-s / ). Disk berputar lebih atau kurang gratis, tetapi $ 750 masih jauh lebih enak daripada $ 1500.
(Oh, tunggu - Anda mungkin memesan dari pemasok besar-nama, jadi mereka menagih Anda melalui hidung untuk SSD? Saya selalu membeli SSD secara terpisah dan menukarnya sendiri, tapi saya tidak tahu apakah itu diizinkan di lingkungan Anda.)
Anda mungkin juga akan mendapatkan lebih sedikit RAM, tetapi tanpa mengetahui beban kerja Anda yang sebenarnya, sulit untuk menilai apakah Anda dapat mengurangi RAM dengan aman tanpa mengganggu kinerja.
Jika Anda masih tidak yakin, Anda bisa mendapatkan drive RPM 10k yang besar, tetapi harganya akan hampir sama dengan SSD namun lebih lambat.
Jika Anda perlu skala jauh melampaui 1TB maka SSD mulai menjadi terlalu mahal, tetapi pada 1TB, saya akan mengatakan SSD adalah kemenangan yang jelas.
sumber
Saya pasti setuju bang terbesar untuk uang berasal dari meningkatkan ukuran innodb_db_bufferpool Anda, tetapi sayangnya itu benar-benar tergantung pada seberapa besar kumpulan data Anda dan seberapa sering berbagai blok disk diakses. Saya memelihara beberapa basis data yang cukup besar 200 GB + jadi paskan segala sesuatu ke dalam RAM bukan pilihan dan karena itu kami baru saja beralih ke penyimpanan berbasis SSD. Saya telah melakukan penelitian yang cukup besar dalam hal IOPS untuk penggunaan MySQL pada berbagai array RAID yang saya miliki aksesnya. Inilah hasilnya:
1.253 IOPS - 4 x SCSI 15k (3,5 ") disk
tes: (g = 0): rw = randrw, bs = 4K-4K / 4K-4K / 4K-4K, ioengine = libaio, iodepth = 64 baca: io = 3071.7MB, bw = 5012.8KB / s, iops = 1253 , runt = 627475msec tulis: io = 1024.4MB, bw = 1671.7KB / s, iops = 417, runt = 627475msec cpu: usr = 0.63%, sys = 3.11%, ctx = 985926, majf = 0, minf = 22
2.558 IOPS - 8 x 10K RPM 900GB SAS (2,5 ") disk
tes: (g = 0): rw = randrw, bs = 4K-4K / 4K-4K / 4K-4K, ioengine = libaio, iodepth = 64 baca: io = 3071.7MB, bw = 10236KB / s, iops = 2558, runt = 307293msec tulis: io = 1024,4MB, bw = 3413.5KB / s, iops = 853, runt = 307293msec cpu: usr = 2.73%, sys = 8.72%, ctx = 904875, majf = 0, minf = 25, minf = 25,
23.456 IOPS - Server Rackspace Performance 2 SSD
tes: (g = 0): rw = randrw, bs = 4K-4K / 4K-4K / 4K-4K, ioengine = libaio, iodepth = 64 baca: io = 3071.7MB, bw = 93708KB / s, iops = 23426, runt = 33566msec tulis: io = 1024.4MB, bw = 31249KB / s, iops = 7812, runt = 33566msec cpu: usr = 5.73%, sys = 35.83%, ctx = 181568, majf = 0, minf = 23,
35.484 IOPS - 2 x Mirrored EDGE Tingkatkan 480GB 2.5 "MLC ( http://www.edgememory.com )
tes: (g = 0): rw = randrw, bs = 4K-4K / 4K-4K / 4K-4K, ioengine = libaio, iodepth = 64 baca: io = 3068.4MB, bw = 141934KB / s, iops = 35483, runt = 22137msec tulis: io = 1027.7MB, bw = 47537KB / s, iops = 11884, runt = 22137msec cpu: usr = 11,68%, sys = 69,89%, ctx = 24379, majf = 0, minf = 20, minf = 20
Jadi jelas bahwa SSD berkualitas tinggi saat ini adalah pemain yang luar biasa. Dua Mirrored SSD dapat dengan mudah mengungguli 16 kandang penyimpanan SAN disk dan itu adalah pernyataan yang meyakinkan saja.
Jika Anda tertarik dengan detail lengkap, sisa penulisan ditemukan di blog saya:
http://www.juhavehnia.com/2015/05/using-ssds-to-improve-mysql-performance.html
sumber