Kami memiliki laporan tentang kueri yang berjalan lambat atau waktu keluar di pagi hari, dan satu-satunya pekerjaan yang saya lihat berjalan yang menurut saya dapat memengaruhi ini adalah pekerjaan cadangan basis data kami.
Basis data itu sendiri sekitar 300GB, dan pekerjaan pencadangan dimulai pada pukul 4:30 pagi dan tidak selesai sampai sedikit setelah 7:00 pagi. Sintaks pekerjaan cadangan kami saat ini adalah:
BACKUP DATABASE [DatabaseName]
TO DISK = N'E:\Database Backups\DatabaseName.Bak'
WITH INIT, NOUNLOAD, NAME = N'DatabaseName.Bak',
NOSKIP, STATS = 10, NOFORMAT
E:\
adalah partisi di server yang menampung baik basis data maupun cadangan basis data.
Perlu juga dicatat bahwa ini adalah server virtual, bukan server mandiri khusus. Kami mulai mendapatkan keluhan tentang perlambatan selama proses pencadangan tepat setelah kami beralih ke server virtual, jadi saya pikir itu mungkin terkait.
Apakah ada cara untuk menjalankan pekerjaan pencadangan ini sehingga tidak memengaruhi kinerja kueri saat sedang berjalan?
Kami menggunakan SQL Server 2005
sumber
Ini adalah masalah umum, ada banyak solusi dan sangat tergantung pada lingkungan Anda. Mari kita lewati mereka:
1- Cadangan Kompresi On The Fly
Pada tahun 2008 Kompresi Cadangan R1 menjadi tersedia di Perusahaan, pada tahun 2008 R2 menjadi Kompresi Standar. Ini BESAR. Ini akan menghemat banyak waktu. Jika Anda dapat meng-upgrade, lakukan saja. Jika tidak bisa, periksa utilitas RedBate HyperBak , atau Quest LiteSpeed . Keduanya memiliki uji coba gratis.
2- Backup Lengkap dan Diff
Saya mewarisi database prod 2TB menyebabkan banyak waktu tunggu untuk perusahaan internet utama 24/7 yang saya kerjakan. Kami mengaktifkan cadangan lengkap dan diferensial yang menghemat banyak waktu. Saya akan mengambil cadangan penuh pada hari Minggu 12:00 ketika aktivitas rendah, dan mengambil perbedaan selama seminggu. Ini menghemat banyak ruang. Pekerjaan Diff berbeda dari log transaksi saat mereka bekerja pada halaman database apa yang diubah. Setiap halaman yang diubah didukung. Dengan demikian, Anda melakukan pengembalian penuh, kemudian pemulihan kembali untuk menambahkan halaman yang dimodifikasi.
3- Apa Hambatan Anda?
Analisis bottleneck penting untuk didiagnosis. Apakah Anda mencadangkan ke disk array yang sama dengan file data Anda? Apakah file data Anda dipatok? Apa DISK SEC / READ dan DISK SEC / WRITE Anda untuk disk data selama pencadangan? Saya memodifikasi cadangan untuk membuat 4 file. Setiap file memiliki penulis utas sendiri dan dalam SAN kami yang bekerja dengan baik. Mengujinya, saya mencukur 45 menit dengan hanya membuat 4 file cadangan. Pastikan metrik disk Anda yang tercantum di atas rendah. Dapatkan garis dasar.
4- Replikasi ke Server yang Berbeda Dan Cadangkan Itu
Yang ini sedikit maju. Anda harus memastikan bahwa database replikasi Anda mutakhir dan Anda perlu pemantauan yang tepat untuk itu. Jika ya, Anda bisa mencadangkan database yang direplikasi.
sumber
Anda dapat menggunakan parameter ini:
BLOCKSIZE - Pilih Ukuran 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536. (dalam KB)
BUFFERCOUNT - Menentukan jumlah total buffer I / O yang akan digunakan untuk operasi pencadangan. Anda dapat menentukan bilangan bulat positif apa pun; Namun, sejumlah besar buffer dapat menyebabkan kesalahan "kehabisan memori" karena ruang alamat virtual yang tidak memadai dalam proses Sqlservr.exe. - dari MSDN
MAXTRNASFERSIZE - Berukuran mulai 65536 byte (64 KB) hingga 4194304 byte (4 MB)
sumber
Cobalah. itu menyelesaikan masalah batas waktu kadaluwarsa sementara db ukuran besar.
sumber