Penskalaan basis data dengan hard drive SSD murah

25

Saya harap banyak dari Anda bekerja dengan situs web yang didorong oleh basis data lalu lintas tinggi, dan kemungkinan masalah skalabilitas utama Anda ada di dalam basis data. Saya memperhatikan beberapa hal belakangan ini:

  1. Kebanyakan database besar membutuhkan tim DBA untuk skala. Mereka terus-menerus berjuang dengan keterbatasan hard drive dan berakhir dengan solusi yang sangat mahal (SAN atau RAID besar, jendela perawatan yang sering untuk defragging dan partisi ulang, dll.) Biaya tahunan aktual untuk mempertahankan database tersebut adalah dalam kisaran $ 100K - $ 1M yang terlalu curam untuk saya :)

  2. Akhirnya, kami mendapatkan beberapa perusahaan seperti Intel, Samsung, FusionIO, dll. Yang baru saja mulai menjual hard drive SSD yang sangat cepat namun terjangkau berdasarkan teknologi SLC Flash. Drive ini 100 kali lebih cepat dalam baca / tulis acak daripada hard drive pemintalan terbaik di pasaran (hingga 50.000 tulis acak per detik). Waktu pencarian mereka hampir nol, sehingga biaya I / O acak sama dengan I / O berurutan, yang luar biasa untuk basis data. Drive SSD ini harganya sekitar $ 10- $ 20 per gigabyte, dan harganya relatif kecil (64GB).

Jadi, tampaknya ada peluang untuk menghindari biaya BESAR dalam penskalaan basis data dengan cara tradisional dengan hanya membangun array RAID 5 yang cukup besar dari drive SSD (yang hanya berharga beberapa ribu dolar). Maka kami tidak peduli jika file database terfragmentasi, dan kami dapat membayar 100 kali lebih banyak menulis disk per detik tanpa harus menyebarkan database di 100 spindle. .

Apakah ada orang lain yang tertarik dengan ini? Saya telah menguji beberapa drive SSD dan dapat membagikan hasil saya. Jika ada orang di situs ini yang telah menyelesaikan bottleneck I / O mereka dengan SSD, saya akan senang mendengar cerita perang Anda!

PS. Saya tahu bahwa ada banyak solusi mahal di luar sana yang membantu skalabilitas, misalnya SAN berbasis RAM yang terbukti saat itu. Saya ingin menjadi jelas bahwa bahkan $ 50K terlalu mahal untuk proyek saya. Saya harus menemukan solusi yang harganya tidak lebih dari $ 10K dan tidak membutuhkan banyak waktu untuk mengimplementasikannya.


Dave, NXC, dan Burly,

Terima kasih atas balasan Anda! Saya ingin mengklarifikasi bahwa kata "murah" sangat penting dalam situasi saya. Jadi, saya harus menggunakan server Dell murah ($ 4K 2950 yang hanya memiliki 8 bank memori). RAM saya sudah terpasang 32GB, jadi saya tidak bisa terus melakukan penskalaan dengan cara ini. Selain itu, menambahkan RAM tidak menyelamatkan Anda dari kemacetan disk MENULIS, yang merupakan masalah utama saya saat ini.

Saya dulu prihatin dengan masa pakai SSD, tetapi setelah membaca tentang algoritma level pakai modern saya cukup yakin bahwa drive ini akan bertahan cukup lama. Basis data saya menulis 300GB per hari, dan diproyeksikan lebih dari 1TB per hari pada tahun 2009. SSD Perusahaan dirancang untuk menangani sekitar 10TB penulisan per hari selama beberapa tahun.

Saya tidak setuju dengan poin Burly bahwa terlalu banyak tenaga untuk bermigrasi dari SAS ke SSD. Basis data saya adalah cermin sinkron, jadi saya dapat memutakhirkan satu sisi cermin, lalu menontonnya selama beberapa bulan, dan jika berhembus saya dapat gagal ke server kedua yang masih memiliki hard drive SAS lama yang baik ...

Dennis Kashkin
sumber
2
BTW, saat Anda menyatakan bagaimana kinerja yang ditingkatkan berpotensi mengurangi biaya perangkat keras, Anda tidak secara jelas menyatakan bagaimana SSD akan mengurangi biaya utama Anda - tenaga kerja. Saya berasumsi bahwa mungkin mendapatkan fakta bahwa pengurangan ukuran instalasi dapat mengurangi kebutuhan staf Anda
Burly
2
Basis data saya berjalan dengan senang hati pada produksi selama 3 tahun tanpa DBA atau konsultan penuh waktu. Kemudian beban meningkat ke titik di mana kita menabrak bottlnecks I / O. Jadi, saya mungkin harus membayar banyak uang ke DBA untuk mempartisi dan mendefrag database. Atau hanya mendapatkan beberapa SSD murah.
Dennis Kashkin
Saya memperbarui jawaban saya untuk membahas kendala biaya yang Anda tambahkan. Tergantung pada ruang, ukuran, kinerja, pemeliharaan, dan persyaratan modifikasi DB Anda, SSD tentu dapat menawarkan solusi yang hemat biaya. Desain solusi dan analisis biaya berada di luar jangkauan kami di sini. Semoga berhasil!
Burly
Anda telah minum terlalu banyak koolaid, SSD, paling baik, 1,5x lebih cepat untuk membaca daripada drive RAID, tetapi menulis lebih lambat daripada disk magnetik. SANS berbasis serat dengan RAID kecepatan tinggi akan menghancurkan SSD apa pun sebaik apa pun itu.
TravisO
Hanya ingin berbagi - kami telah menjalankan basis data 400GB pada SSD selama 5 bulan sekarang. Basis data ini mendapat banyak aktivitas menulis (hingga 1.200 transaksi per detik). Kami tidak memiliki masalah sejauh ini, dan kinerja secara dramatis lebih baik dibandingkan dengan RAID10s dengan drive SAS 15K rpm. Disk tetap idle 96%. Jadi, mengingat SSD sekarang menjadi sangat murah ($ 600 untuk drive Intel 160GB), saya akan mengklaim bahwa ini adalah cara yang lebih baik untuk skala I / O daripada SAN.
Dennis Kashkin

Jawaban:

20

Masalah Potensial

Saya memiliki beberapa masalah dengan penggunaan SSD untuk basis data produksi saat ini

  • Mayoritas transaksi basis data pada sebagian besar situs web dibaca bukan menulis. Seperti yang dikatakan Dave Markle, Anda memaksimalkan kinerja ini dengan RAM terlebih dahulu.
  • SSD baru untuk pasar utama dan perusahaan dan tidak ada admin yang sepadan dengan garamnya yang akan memindahkan basis data produksi yang saat ini membutuhkan disk 15K RPM U320 di RAID5 yang berkomunikasi melalui fibrechannel ke teknologi yang belum terbukti.
  • Biaya penelitian dan pengujian untuk pindah ke teknologi baru ini, memeriksanya di lingkungan mereka, memperbarui prosedur operasi, dan sebagainya adalah biaya di muka yang lebih besar, baik dalam hal waktu dan uang, daripada yang harus disediakan oleh sebagian besar toko.

Manfaat yang Diusulkan

Yang mengatakan, ada sejumlah item, setidaknya di atas kertas, yang mendukung SSD di masa depan:

  • Konsumsi daya yang lebih rendah dibandingkan dengan HDD
  • Generasi panas yang jauh lebih rendah
  • Kinerja per watt lebih tinggi dibandingkan dengan HDD
  • Throughput yang jauh lebih tinggi
  • Latensi jauh lebih rendah
  • Sebagian besar SSD generasi saat ini memiliki urutan jutaan siklus ketahanan tulis, sehingga ketahanan menulis bukanlah masalah seperti dulu. Lihat artikel yang agak ketinggalan zaman di sini

Jadi untuk tolok ukur kinerja yang diberikan, ketika Anda memperhitungkan total biaya kepemilikan termasuk daya langsung dan biaya pendinginan tidak langsung, SSD bisa menjadi sangat menarik. Selain itu, tergantung pada rincian lingkungan Anda, pengurangan jumlah perangkat yang diperlukan untuk tingkat kinerja tertentu juga dapat mengakibatkan pengurangan persyaratan kepegawaian, mengurangi biaya tenaga kerja.

Biaya dan Kinerja

Anda telah menambahkan bahwa Anda memiliki batasan biaya di bawah $ 50K USD dan Anda benar-benar ingin menyimpannya di bawah $ 10K. Anda juga telah menyatakan dalam komentar bahwa Anda bisa mendapatkan beberapa SSD "murah", mengelak bahwa SSD akan lebih murah daripada DBA atau konsultan. Ini mungkin benar tergantung pada jumlah jam Anda akan membutuhkan DBA dan apakah itu merupakan biaya reoccuring atau tidak. Saya tidak dapat melakukan analisis biaya untuk Anda.

Namun, satu hal yang harus Anda perhatikan adalah jenis SSD yang Anda dapatkan. Tidak semua SSD dibuat sama. Pada umumnya, SSD "murah" yang Anda lihat dijual dalam dolar $ 200-400 (2008/11/20) ditujukan untuk lingkungan dengan daya / panas rendah seperti laptop. Drive ini sebenarnya memiliki tingkat kinerja yang lebih rendah dibandingkan dengan HDD 10K atau 15K RPM - terutama untuk penulisan. Drive tingkat perusahaan yang memiliki kinerja pembunuh yang Anda bicarakan - seperti seri Mtron Pro - cukup mahal. Saat ini mereka ada di sekitar:

  • 400 USD untuk 16GB
  • 900 USD untuk 32GB
  • 1400 USD untuk 64GB
  • 3.200 USD untuk 128GB

Bergantung pada ruang, kinerja, dan persyaratan redundansi Anda, Anda dapat dengan mudah menghancurkan anggaran Anda.

Misalnya, jika persyaratan Anda mengharuskan total penyimpanan 128GB yang tersedia maka RAID 0 +1 / 10 atau RAID 5 dengan 1 hotspare adalah ~ $ 5600

Namun jika Anda membutuhkan TB penyimpanan yang tersedia, maka RAID 0 +1 / 10 akan menjadi ~ $ 51K dan RAID 5 dengan 2 hotspares akan ~ $ 32K.

Gambar besar

Yang mengatakan, instalasi, konfigurasi, dan pemeliharaan basis data produksi besar membutuhkan individu yang sangat terampil. Data dalam DB dan layanan yang disediakan dari data tersebut bernilai sangat tinggi bagi perusahaan dengan tingkat persyaratan kinerja ini. Selain itu, ada banyak hal yang tidak bisa diselesaikan dengan melemparkan perangkat keras pada masalahnya. DBMS yang dikonfigurasi dengan tidak tepat, skema database yang buruk atau strategi pengindeksan dapat / merusak / kinerja DB. Lihat saja masalah yang dialami Stackoverflow dalam migrasi mereka ke SQL Server 2008 di sini dan di sini. Faktanya adalah, database adalah aplikasi yang berat tidak hanya pada disk tetapi juga RAM dan CPU. Menyeimbangkan masalah kinerja multi-variate bersama dengan integritas data, keamanan, redundansi, dan cadangan adalah sedikit rumit.

Singkatnya, sementara saya pikir setiap dan semua perbaikan baik pada perangkat keras dan teknologi perangkat lunak disambut oleh masyarakat, administrasi basis data skala besar - seperti pengembangan perangkat lunak - adalah masalah yang sulit dan akan terus membutuhkan pekerja terampil. Peningkatan yang diberikan mungkin tidak menuai biaya pengurangan tenaga kerja yang Anda atau perusahaan mungkin harapkan.

Titik loncatan yang baik untuk beberapa penelitian mungkin situs web / blog Brent Ozar di sini . Anda mungkin mengenali namanya - dialah yang telah membantu kru stackoverflow dengan masalah kinerja MS SQL Server 2008 mereka. Blog dan sumber daya yang ia tautkan menawarkan sedikit keluasan dan kedalaman.

Memperbarui

Stackoverflow sendiri akan menggunakan rute berbasis SSD konsumen untuk penyimpanan mereka. Baca tentang ini di sini: http://blog.serverfault.com/post/our-storage-decision/

Referensi

Burly
sumber
Jawaban yang sangat bagus.
NotMe
Anda menghabiskan terlalu banyak waktu untuk hal ini: P
TravisO
Penjelasan luar biasa. Potong kayu untuk semua orang. Pekerjaan yang baik!
BerggreenDK
4

Jika Anda memiliki situs dengan lalu lintas sangat tinggi yang dapat memanfaatkan SSD untuk meningkatkan kinerja penulisan, Anda mungkin akan memiliki masalah dengan masa pakai SSD, jadi saya belum menjualnya untuk itu.

Dengan mengingat hal itu, apa yang harus dilakukan dengan database yang memiliki tingkat pembacaan yang tinggi? Jawabannya sederhana: selai server dengan RAM sebanyak yang Anda bisa. Anda akan menemukan bahwa tabel terpanas hampir selalu disimpan dalam cache RAM, dan setiap hit besar ke disk mungkin karena tabel besar atau pemindaian indeks, yang sering dapat dioptimalkan dengan pengindeksan yang tepat.

Dave Markle
sumber
Saya akan meninjau kembali komentar Anda tentang masalah masa pakai SSD. Dalam hal MTBF, SSD memiliki peringkat yang jauh lebih tinggi daripada HDD. Dalam hal ketahanan siklus tulis - yang sebelumnya merupakan masalah, generasi saat ini adalah> 1 juta siklus tulis, menjadikan ini bukan masalah, terutama dalam konfigurasi RAID.
Burly
(Kehabisan karakter) ... Bukannya Anda tidak perlu khawatir tentang masa pakai SSD, hanya saja peringkat teknis saat ini menunjukkan bahwa SSD sama atau lebih unggul dari mitra HDD. Fakta bahwa SSD tidak memiliki pengalaman berpuluh-puluh tahun dalam produksi berarti tidak terbukti.
Burly
SSD lebih lambat dalam menulis daripada HDs
TravisO
SSD umumnya jauh lebih cepat pada penulisan acak, khususnya penulisan 4K acak. Mereka mungkin lebih lambat untuk menulis berurutan, tetapi itu tidak selalu penting untuk server database.
ChrisInEdmonton
1

Saya telah bekerja sebagai DBA selama 5+ tahun dan memikirkan cara untuk meningkatkan kinerja DB selalu menjadi bagian belakang tambang saya. Saya telah menonton ruang SSD dan saya pikir mereka pasti menjadi lebih dan lebih banyak pilihan yang layak.

Lihat ini;

http://i.gizmodo.com/5166798/24-solid-state-drives-open-all-of-microsoft-office-in-5-seconds

Ada juga produk baru yang diproduksi oleh Acard yang disebut ANS-9010 yang merupakan versi perbaikan dari GC-Ramdisc yang memungkinkan Anda untuk menggunakan ram DDR2 untuk membuat Drive SATA (hingga 64gig) menggunakan tongkat DDR2 dengan teori 400MB / s secara teoritis maksimum.

http://techreport.com/articles.x/16255/3

^^ Tetapi hal lain yang berguna dalam artikel itu adalah bahwa ia membandingkan ANS-9010 dengan semua pemain di pasar SSD dan ternyata Intel memiliki 64GB x25-E SSD yang hampir sebanding dengan memiliki ramdisk perangkat keras.

Hal yang akan membuat saya khawatir tentang SSD adalah memakainya dengan semua tekanan yang ditimbulkan oleh DB besar, sehingga Anda harus menggunakan raid untuk mencerminkan drive yang artinya Anda membayar dua kali lebih banyak;

Dan kerugiannya dengan ramdisk perangkat keras adalah baterai, dalam kasus pemadaman listrik hanya akan menguasainya begitu lama sehingga Anda harus mencari cara lain untuk mendukungnya. Saya percaya bahwa Anda juga dapat membeli steker listrik untuk mereka tetapi kemudian masih bergantung pada UPS Anda.

Saya menyarankan agar Anda menggunakan disk ram perangkat keras untuk temp DB dan file swap windows - dan meletakkan basis data pada Intel X25-E Extreme (sekitar 600 USD untuk 64 pertunjukan).

Pokoknya itu akan menjerit dan membuat kita semua sangat iri.

(Juga pertimbangkan untuk menggunakan ANS-9010 lain untuk hosting situs web)

Salam, Dave


sumber
1

Kami baru saja membuat server w2k3 r2 64bit Sql 2008 pada dual 2.5in Seagate Momentus XT hybrid mirror - 1/4 stroke untuk OS, dan 1/4 stroke untuk DB. Begitu juga menggunakan 125GB untuk OS dan 125GB untuk DB. mendapatkan 1500MB / s hingga 1900MB / s seq berbunyi. Pada Intel i7 2600K 3.4Ghz 8GB

Adam Smith
sumber
0

Ada produk di pasaran seperti ini yang melakukan hal semacam ini. Juga, seperti yang dikatakan oleh poster lainnya, menambahkan RAM ekstra ke server DB akan memberi Anda tingkat hit cache yang lebih baik, yang akan mengurangi lalu lintas disk.

Server 8-socket Opteron seperti Sun X4600 akan memungkinkan Anda memasang hingga 256GB RAM di dalamnya untuk harga yang masih lebih murah daripada tim DBA besar. Anda juga dapat mempertimbangkan menggunakan file flat daripada DBMS (seperti yang dilakukan perusahaan ini), yang akan memberi Anda kinerja yang lebih baik daripada DBMS. Dalam hal ini, SAN akan memberi Anda integritas data. Namun, Anda harus merancang strategi akses data dengan hati-hati untuk menghindari kekacauan. Rupanya cukup banyak pakaian dot-com volume besar melakukan ini. Ini jauh lebih efisien daripada DBMS, memungkinkan perangkat keras pejalan kaki yang cukup untuk menangani beban besar, dan menghindari biaya lisensi DBMS.

ConcernedOfTunbridgeWells
sumber
-1

Drive SSD didasarkan pada memori flash NAND (MLC atau SLC). Jika Anda membeli drive SSD dalam faktor bentuk SATA (2 atau 3), Anda membatasi kinerja yang bisa Anda dapatkan dari mereka. Biasanya, drive SSD yang didasarkan pada pengontrol cepat Sandforce SF-1200 menghasilkan 220MB / detik dibaca dan 205MB / detik menulis - jauh lebih cepat daripada disk putar mekanik kuno.

Namun, jika Anda pindah ke solusi PCIe seperti FusioIO, yang tidak melibatkan konektor SATA 2 atau SATA 3 yang lambat, Anda mencari solusi yang 10-50 kali lebih cepat daripada memutar bull mekanik (maksud saya disk).

Jadi untuk solusi "murah" Anda, gunakan SATA 2/3 SDD berbasis pada pengontrol Sandforce SF-1200. Ini akan membuat Anda mendapatkan peningkatan kecepatan 3-5 kali lipat (berdasarkan pengalaman dunia nyata). Jika Anda memiliki anggaran, maka pilihlah FusioIO. Tidak ada yang akan mengalahkannya dalam hal kinerja. Ini sangat cepat. Berharap untuk menghabiskan $ 20.000 hingga $ 50.000 sekalipun.

John DeRegnaucourt
sumber
2
Kekeliruan. SSD modern bagus untuk sekitar 50.000 IOPS, memberikan throughput 580mb. SAS menghasilkan kurang dari 500 IOPS. Database bukan server file.
TomTom