Saran untuk Desain Database SQL Server Besar

8

Kami membuat database di MSSQL 2008 R2 Standard di mana kami akan menyimpan sejumlah besar catatan. Kami memperkirakan 200 juta catatan dalam satu tabel setiap tahun dan kami pada dasarnya MEMASUKI dengan sangat sedikit UPDATE atau DELETE pada data. Ini adalah sistem arsip data tempat kami menyisipkan catatan bersejarah setiap hari. Kami akan menghasilkan berbagai jenis laporan pada catatan bersejarah ini berdasarkan permintaan pengguna sehingga kami memiliki beberapa kekhawatiran dan memerlukan masukan dan saran teknis.

  • Apa cara terbaik untuk mengelola tabel dan basis data arsip semacam ini?
Kodvavi
sumber
1
Jika Anda mendesain database besar (atau yang besar untuk Anda) maka sangat penting untuk mendapatkan deisgn sejak awal dan cara terbaik untuk melakukannya adalah dengan menyewa spesialis basis data yang telah bekerja dengan basis data dalam rentang yang Anda bicarakan . Ini lebih penting daripada mempekerjakan pengembang aplikasi.
HLGEM

Jawaban:

12

Inilah pendapat saya:

  1. Jika Anda memiliki sangat sedikit pembaruan / penghapusan, Anda dapat meningkatkan faktor isi halaman menjadi 95%. Ini akan menghemat ruang dan membaca. Lakukan beberapa pengujian.
  2. Partisi tabel berdasarkan kategori luas seperti tahun.
  3. Letakkan partisi ini di filegroup yang berbeda.
StanleyJohns
sumber
7

200 juta baris per tahun tidak terlalu besar (kecuali jika barisnya luar biasa besar). Anda perlu memperhatikan prinsip-prinsip desain database yang sehat (normalisasi) dan memanfaatkan fitur-fitur standar seperti pengindeksan dan partisi. Jelas perangkat keras yang tepat juga penting.

Tidak ada cukup informasi di sini untuk memberikan saran khusus. Pertimbangkan untuk mempekerjakan seseorang jika Anda merasa perlu bantuan dengan desain dan implementasi terperinci.

nvogel
sumber
Terima kasih atas masukan Anda. kami telah menerapkan prinsip-prinsip desain yang Anda maksudkan tetapi akan bekerja pada pengindeksan setelah bagian pengembangan selesai. Saya kira untuk mempartisi, Anda memerlukan lisensi Perusahaan dan saat ini kami memiliki lisensi edisi Standar.
kodvavi
6
  • Pastikan bahwa desain Anda memungkinkan penyisipan Anda selalu ada di akhir tabel. Petunjuk Clustered Petunjuk.

  • Hanya memiliki sangat sedikit indeks tidak tercakup yang mendukung laporan yang perlu Anda lakukan untuk mempertahankannya seminimal mungkin. Apakah laporan ini diprioritaskan? jika ya maka pertimbangkan pertanyaan ini: Apakah boleh jika laporan membutuhkan waktu 2 jam untuk menghasilkan? (tanpa indeks) atau 1mins (dengan indeks). Mungkin tidak apa-apa untuk membiarkan laporan membutuhkan waktu 2 jam untuk memiliki satu indeks lebih sedikit? atau mungkin tidak? Jika laporan tidak dibuat dengan baik itu adalah pertanyaan lain maka karena pengguna tidak suka menunggu dan Anda mungkin perlu menerapkan lebih banyak indeks untuk mendukung laporan Anda.

  • Dari bagaimana Anda menggambarkan basis data ini, sepertinya Anda mengharapkan banyak baris dan data akan bertambah dan bertambah banyak. Apakah Anda mempertimbangkan cara membuat cadangan sistem ini? Saya melihat sebagian besar data akan sama dan hanya menambahkan baru? Saya tidak tahu kebutuhan bisnis dari sistem ini, tetapi bagi saya sepertinya dalam satu atau dua tahun ini mungkin merupakan database dengan ukuran yang cukup besar dan Anda mungkin mengalami kesulitan membuat banyak cadangan lengkap. Pertimbangkan untuk membuat cadangan penuh dengan log berkala (mingguan?) Dan diferensial (harian?) Dan transaksi (setiap jam?) Tentu saja seperti yang saya katakan saya tidak tahu persyaratan bisnis, mungkin Anda tidak memerlukan semua cadangan sepanjang waktu? Ukuran dapat menjadi masalah dalam sistem arsip.

Martin Sjöberg
sumber
1
Terima kasih martin atas masukan Anda. Sebenarnya db berisi statistik dan catatan bersejarah tentang produk pertanian. Pertumbuhannya substansial dan masukan Anda tentang cadangan bermanfaat. Kami telah merencanakan rutin pencadangan dan masukan Anda menambahkan beberapa nilai bagus. Proses pencadangan kami yang ada untuk database berbeda memiliki pendekatan yang agak sama. Diferensial harian dan cadangan penuh mingguan.
kodvavi
1
desain btw hampir final dan kami menggunakan SSR untuk persyaratan pelaporan dan kerjanya sangat bagus tapi kami tetap menyesuaikan dan memberikan peningkatan kinerja sebelum mulai berproduksi.
kodvavi