24x7 vs Jendela Waktu Malam


19

Di mana saya dapat menemukan sumber daya tentang cara lebih baik pindah ke operasi 24x7? Bagaimana perusahaan besar dengan database besar mencapai ini? Pekerjaan malam kami seperti

  1. bersihkan data lama
  2. pengindeksan ulang
  3. perbarui statistik

semua tampaknya menyebabkan dampak penting bagi sistem kami ( mis . pengguna online dan umpan data waktu nyata). Saya telah mencari di Amazon untuk buku apa pun yang berkaitan dengan subjek ini, dan sejauh ini belum menemukan apa pun.


Apakah Anda ingin memigrasi basis data dari satu server ke server lain atau cara yang lebih baik untuk mengelola dampak pekerjaan malam Anda?
Mike Fal

Bagaimana cara mengelola dampak dari pekerjaan malam hari? Yaitu cara mengurangi atau menghilangkan "jendela batch" setiap malam.
NealWalters

2
@NealWalters Apa edisi SQL Server Anda? (Pembuatan indeks daring dan partisi tabel untuk mengganti data lama tersedia dalam Enterprise Edition)
Martin Smith

1
Versi server sql apa yang Anda gunakan? Perusahaan / standar? Enterprise memiliki fitur tertentu yang dapat memungkinkan Anda melakukan beberapa operasi sebagai ONLINE dengan dampak pengguna minimal.
Kin Shah

1
@NealWalters Periksa Membagi CHECKDB DBCC selama beberapa hari memberikan rincian lebih lanjut. Meskipun lebih untuk CHECKDB, tetapi akan membantu Anda mendapatkan lebih banyak ide. Beri tahu kami edisi apa yang Anda gunakan, sehingga orang-orang di sini dapat membantu Anda dengan lebih baik.
Kin Shah

Jawaban:


27

Mempertahankan basis data 24x7 adalah topik yang cukup besar dengan banyak opsi untuk dipertimbangkan. Topik luas ini memiliki banyak hal yang perlu dipertimbangkan, tetapi kita dapat mencoba dan menyentuh berdasarkan beberapa poin tinggi.

Apa yang pertama kali ingin Anda identifikasi adalah, sementara banyak operasi 24x7, biasanya ada saat aktivitas rendah. Anda dapat memanfaatkan waktu ini untuk menjalankan pemeliharaan sehingga Anda mengurangi gangguan yang Anda miliki pada basis data. Yang kedua adalah Anda harus menyediakan waktu untuk pemadaman total (untuk hal-hal seperti paket layanan atau migrasi basis data), jadi Anda perlu menegosiasikan jendela perawatan penuh dengan manajemen Anda. Untuk barang-barang tertentu, Anda perlu mempertimbangkan dan merencanakannya, serta memanfaatkan alat-alat Anda dengan tepat. Yang penting adalah Anda harus RENCANA masing-masing, setiap contoh yang saya berikan sangat banyak "mil Anda dapat bervariasi".

Cadangan

Cadangan biasanya tidak akan berdampak besar pada beban kerja, tetapi harus diperhitungkan karena mereka dapat mengkonsumsi banyak I / O. Anda akan ingin menjadwalkan ini dengan tepat dan memonitor jumlah waktu yang dibutuhkan untuk menyelesaikannya. Rintangan terbesar di sini adalah bahwa dalam operasi 24x7, Anda mungkin tidak akan dapat melakukan backup malam penuh setiap malam dalam seminggu. Anda akan ingin merencanakan kapan Anda dapat mengambil penuh, ketika Anda mengambil diferensial, dan periode retensi untuk keduanya dikombinasikan dengan cadangan log Anda.

Sebagai contoh, saya menjalankan backup penuh dari semua database saya pada Minggu malam (aktivitas terendah), perbedaan pada semua malam lainnya (Senin-Sabtu). Saya menyimpan dua minggu penuh penuh dan berbeda pada disk, log selama dua hari terakhir. Ini memberi saya cukup fleksibilitas untuk pemulihan, tetapi saya mungkin harus memulihkan cadangan dari kaset jika perlu.

Pemeliharaan Indeks / Statistik

Ini adalah jenis perawatan aktif paling umum yang harus Anda tangani. Anda tidak dapat menghindarinya, tetapi Anda dapat mengurangi dampaknya. Aturan awal praktis adalah Anda hanya harus melakukan perawatan pada objek yang membutuhkannya. Pedoman umum hanya untuk membangun kembali indeks yang lebih besar dari 30% terfragmentasi dan lebih dari 1000 halaman . Jika Anda memiliki statistik pembaruan otomatis , ini akan menangani sebagian besar pemeliharaan statistik Anda, tetapi pekerjaan malam hari untuk menjaga semuanya tetap sinkron bukanlah ide yang buruk.

Jika Anda memiliki Edisi Perusahaan, Anda juga memiliki akses ke beberapa opsi lain untuk mengelola pemeliharaan. Yang terpenting adalah Online Index Rebuilds , yang akan memungkinkan Anda untuk membangun kembali indeks saat masih digunakan (pada dasarnya, itu membangun indeks berdampingan, lalu menukarnya). Anda juga dapat memanfaatkan partisi untuk tabel "besar" untuk mengurangi jumlah waktu yang diperlukan untuk membangun kembali.

Taruhan terbaik Anda untuk jenis pemeliharaan ini, jika Anda tidak memiliki skrip khusus yang menangani praktik terbaik ini, adalah dengan menggunakan skrip Pemeliharaan Ola Hallengren . Ini cukup mudah untuk diatur dan dikonfigurasikan dan memiliki banyak panduan ini.

Cek Konsistensi DBCC

Bergantung pada keseluruhan beban kerja Anda, Anda mungkin mendapati bahwa pemeriksaan DBCC akan mengganggu operasi Anda. Ada dua cara umum untuk meminimalkan dampak DBCC Anda untuk database Anda:

  • PHYSICAL_ONLY- Menjalankan opsi ini akan memeriksa basis data Anda di tingkat halaman fisik dan menghindari pemeriksaan penuh yang lebih invasif. Ini akan mencakup mengidentifikasi jenis-jenis korupsi yang paling mungkin.
  • Memeriksa salinan yang dipulihkan - Jika Anda memiliki ruang, Anda dapat mengembalikan database ke instance lain dan menjalankan pemeriksaan DBCC terhadap salinan yang dipulihkan. Ini akan menceritakan kisah yang sama tentang database langsung Anda, tetapi Anda jelas tidak akan mengganggu aktivitas. Beberapa alternatif lain di sini menjalankan DBCC terhadap salinan yang dikirimkan log atau db yang dicerminkan.

Posting blog ini memberikan detail lebih lanjut tentang opsi Anda.

Pekerjaan batch / ETL

Ini benar-benar bermuara pada bagaimana Anda merancang proses Anda. ETL Anda selalu dapat mengganggu tabel OLTP langsung (seperti halnya aplikasi lain), jadi beberapa kunci yang perlu diingat:

  • Jadwalkan pekerjaan semacam itu di sekitar pemeliharaan Anda yang lain dan dalam periode aktivitas yang rendah.
  • Ukuran pekerjaan yang tepat sehingga batch untuk kinerja dan agar batch tidak begitu besar sehingga mengunci meja Anda selama berjam-jam. Contoh dari ujung spektrum: Baris-demi-agonisasi-baris (RBAR) versus satu juta baris dihapus.
  • Gunakan tabel panggung dan luring pemrosesan data Anda jika perlu. Hanya menyentuh siaran langsung saat benar-benar diperlukan.

Kesimpulan

Sekali lagi, ada banyak alasan untuk dibahas di sini. Ini bukan panduan yang komprehensif, tetapi gambaran umum tingkat tinggi dari beberapa pendekatan. Saya bahkan belum membahas opsi ketersediaan tinggi (seperti Ketersediaan Groups dan Failover Clustering). Anda perlu meninjau setiap item dan menyusun rencana bagaimana menanganinya. Dalam banyak hal, Anda juga perlu mengulang dan memperbaiki pekerjaan Anda saat Anda bergerak maju.

Sumber daya tambahan:

Praktik terbaik pemeliharaan Keterampilan SQL VLDB


Respons yang disetujui, luar biasa, membantu, terperinci. Terima kasih! Kami sedang mengerjakannya.
NealWalters

Salah satu faktor lain yang sedang kami kerjakan adalah memindahkan banyak data basi ke ODS (Operational Data Store) untuk menjaga agar database utama lebih rapi. Kami juga menemukan "Perbarui Statistik" berjalan sekitar 2 hingga 2,5 jam setiap pagi, dan itu tampaknya memperlambat kinerja umum. Apakah "praktik terbaik" untuk menjalankan Update-Stats setiap hari?
NealWalters

Saya biasanya akan melakukannya, tetapi YMMV. Risiko tidak memperbarui statistik adalah statistik menjadi basi dan Anda mulai memiliki rencana kueri yang buruk. Anda harus menganalisis apakah ini masalah atau tidak jika Anda tidak menjalankan statistik pembaruan setiap malam. Anda bisa melihat lebih banyak tentang melenyapkan pekerjaan statistik dan melihat bagaimana kinerja kueri Anda secara umum.
Mike Fal
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.