Rencana pemeliharaan di SQL Server memberi kami cara mudah untuk mengatur, mengonfigurasi, dan menjadwalkan tugas yang memastikan bahwa mesin basis data dan basis data yang dihosting di dalamnya tetap dalam kondisi prima.
Rencana Pemeliharaan menawarkan kepada administrator basis data kesempatan untuk mengonfigurasi tugas-tugas utama seperti pengindeksan, pembaruan statistik, pencadangan, pembersihan log, dan lainnya. Pada artikel sebelumnya kita telah membahas cara membuat rencana pemeliharaan dasar untuk melakukan pemeriksaan konsistensi database. Pada artikel ini, kita akan melakukan langkah-langkah membuat rencana pemeliharaan untuk instance database yang menghosting database kecil. Selama panduan ini, saya akan menjelaskan pilihan utama yang dibuat di setiap langkah dalam konteks instance dengan jumlah kecil yang cukup besar database. Idenya adalah untuk mengkonfigurasi pemeliharaan untuk database ini tanpa harus melakukannya satu per satu. Fokus pada database kecil dimaksudkan untuk menghindari overhead kinerja yang terkait dengan operasi pemeliharaan.
Rencana Pemeliharaan untuk Tugas Mingguan
Gambar 1:Luncurkan Wizard Rencana Pemeliharaan
Kami meluncurkan Maintenance Plan Wizard dari Object Explorer>[Instance Name]>Management>Maintenance Plans (Lihat Gambar 1). Halaman pertama wizard memberi kita gambaran umum tentang tugas-tugas yang dapat dikonfigurasi. Meskipun ada cara lain untuk menyelesaikan tugas ini menggunakan kode dan penjadwalan pekerjaan, Wizard Rencana Pemeliharaan membuatnya cukup mudah untuk diselesaikan saat menangani sejumlah besar database yang dihosting pada satu instans.
Gambar 2:Wizard Rencana Pemeliharaan
Pada Gambar 3, kita melihat SQL Server mengekspos bidang bagi kita untuk memberi nama dan menjelaskan Rencana Pemeliharaan. Memasukkan deskripsi rencana masuk akal untuk tujuan dokumentasi. Bayangkan mengambil alih contoh SQL Server baru di perusahaan baru. Akan berguna jika Anda menemukan deskripsi objek SQL Server di objek. Anda harus melakukan hal yang sama untuk orang lain. Harap perhatikan bahwa deskripsi yang saya berikan dimaksudkan untuk sekadar mengilustrasikan intinya. Deskripsi yang lebih rinci akan diinginkan dalam lingkungan produksi.
Gambar 3:Memberi Nama Rencana Pemeliharaan
Perhatikan bahwa pada Gambar 3 kita memiliki pilihan untuk memilih apakah kita ingin menggunakan jadwal tunggal untuk semua tugas atau jadwal terpisah untuk setiap tugas. Saya telah memilih untuk menggunakan jadwal terpisah untuk memiliki fleksibilitas tugas yang mengejutkan. Kami tidak ingin terlalu banyak operasi pemeliharaan yang berjalan secara bersamaan atau bolak-balik dalam waktu yang lama untuk menghindari risiko sumber daya server yang berlebihan. Keputusan yang Anda ambil pada saat ini mungkin juga bergantung pada kapasitas sumber daya yang tersedia untuk Anda dan periode pemeliharaan yang tersedia. Beberapa orang memiliki kapasitas yang cukup dan ingin menyelesaikan tugas dengan cepat setiap kali menjalankan. Dalam skenario yang dicakup oleh artikel ini, kami berasumsi bahwa instance yang dimaksud tidak digunakan selama akhir pekan.
Pada Gambar 4, kita memilih tugas yang ingin kita jalankan. Salah satu hal hebat tentang SQL Server adalah setiap tugas dijelaskan di bagian bawah jendela. Membayar ketika bekerja sebagai DBA untuk memahami apa yang Anda lakukan bahkan ketika bekerja di "Windows". Dalam pengalaman saya, banyak "administrator" memiliki kebiasaan mengklik "BERIKUTNYA, BERIKUTNYA, BERIKUTNYA" karena mereka terburu-buru untuk menjalankan fungsi tersebut. Namun meluangkan waktu untuk memahami dampak dari "BERIKUTNYA" membantu memastikan Anda melakukan sesuatu yang akan menambah nilai, bukan menyebabkan masalah baru.
Gambar 4:Memilih Tugas Pemeliharaan
Tugas yang telah kami pilih dijelaskan sebagai berikut:
Periksa Integritas Basis Data tugas melakukan pemeriksaan konsistensi internal data dan halaman indeks dalam database.
Mengatur Ulang Indeks defragment tugas dan pemadatan indeks berkerumun dan tidak berkerumun pada tabel dan tampilan. Ini akan meningkatkan kinerja pemindaian indeks.
Indeks Bangun Ulang tugas mengatur ulang data pada data dan halaman indeks dengan membangun kembali indeks. Ini meningkatkan kinerja pemindaian dan pencarian indeks. Tugas ini juga mengoptimalkan distribusi data dan ruang kosong pada halaman indeks, memungkinkan pertumbuhan yang lebih cepat di masa mendatang.
Statistik Pembaruan tugas memastikan pengoptimal kueri memiliki informasi terkini tentang distribusi nilai data dalam tabel. Hal ini memungkinkan pengoptimal untuk membuat penilaian yang lebih baik tentang strategi akses data.
Pembersihan Riwayat tugas menghapus data historis tentang Backup dan Restore, SQL Server Agent, dan operasi Rencana Pemeliharaan. Wisaya ini memungkinkan Anda untuk menentukan jenis dan usia data yang akan dihapus.
Basis Data Pencadangan (Penuh) tugas memungkinkan Anda untuk menentukan basis data sumber, file atau kaset tujuan, dan opsi penimpaan untuk pencadangan penuh.
Pembersihan Pemeliharaan tugas menghapus file yang tersisa dari menjalankan rencana pemeliharaan.
Gambar 5 menunjukkan di mana kita memilih urutan pelaksanaan tugas-tugas ini. Ini penting karena beberapa alasan. Misalnya, tidak masuk akal untuk melakukan pembaruan statistik indeks setelah pembuatan ulang indeks karena pembuatan ulang indeks juga melakukan pembaruan statistik indeks di SQL Server. Kita akan melihat nanti di artikel bagaimana kita menangani ini dengan urutan yang telah kita pilih. Pertimbangan lain yang mungkin adalah Anda mungkin memutuskan untuk melakukan pencadangan terlebih dahulu sebelum melanjutkan dengan jenis pemeliharaan tertentu.
Gambar 5:Urutan Tugas
Pada Gambar 6, kami memilih database mana yang ingin kami terapkan tugas pemeliharaan pertama. Kita harus melakukan ini untuk setiap tugas selanjutnya juga. Hal ini penting dalam arti bahwa beberapa database mungkin perlu dikecualikan dari operasi tersebut. Misalnya, di mana Anda memiliki campuran Basis Data Sangat Besar (VLDB) dan basis data yang sangat kecil dalam contoh yang sama (ide yang buruk itu sendiri), Anda mungkin perlu mengecualikan VLDB dari pembangunan kembali indeks buta. Dalam kasus seperti itu, Anda perlu mengidentifikasi tabel kunci dalam VLDB itu dan memfokuskan pembangunan kembali dan operasi pemeliharaan intensif lainnya pada tabel kunci. Dalam contoh ini, saya telah mengecualikan database sistem karena saya dapat dengan hati-hati merencanakan pemeliharaan untuk mereka secara terpisah. Saya yakin lebih aman untuk menangani database sistem secara terpisah, mengingat kerusakan apa pun pada mereka dapat berdampak pada seluruh instance.
Gambar 6:Tentukan Ruang Lingkup
Setiap operasi pemeliharaan memiliki serangkaian opsinya sendiri. Gambar 7 menunjukkan opsi yang harus kita putuskan untuk DBCC CHECKDB. Saya telah sedikit menyimpang dari pengaturan default dengan meningkatkan MAXDOP menjadi 2. Pada Gambar 8, kami memilih untuk menjalankan tugas ini pada pukul 1:00 pada hari Sabtu dan Minggu malam.
Gambar 7:Opsi DBCC
Gambar 8:Jadwal DBCC
Tugas Reorganize Index juga memiliki serangkaian opsi tertentu. Patut disebutkan adalah serangkaian kondisi yang akan menentukan apakah indeks harus ditata ulang atau tidak – 30% Fragmentasi, 1000+ jumlah halaman, dan terakhir digunakan paling lama 28 hari lagi. Jendela ini menggarisbawahi kebutuhan untuk memahami opsi yang kami buat. Untuk membuat opsi ini dengan benar, Anda perlu memahami indeks dan pengindeksan sampai batas yang wajar. Perhatikan bahwa pilihan serupa perlu dibuat di Tugas Rebuild Index. Juga, perhatikan bahwa ambang batas fragmentasi yang disarankan untuk Reorganisasi Indeks sebenarnya adalah 15% dan bukan 30%.
Gambar 9:Mengatur Ulang Opsi Indeks
Tugas Rebuild Index menawarkan beberapa opsi lain selain untuk Reorganisasi Indeks. (Lihat Gambar 10). Perhatikan bahwa saya telah memilih untuk mengurutkan hasil di TempDB. Agar pilihan ini efektif, penting untuk menyetel TempDB dengan tepat karena pilihan tersebut menyiratkan bahwa pengurutan untuk operasi ini di SEMUA database akan terjadi di TempDB. Selain itu, kita harus mengatur jadwal untuk Index Rebuild. Saya juga telah menyetel MAXDOP ke 2 untuk tugas ini.
Gambar 10:Membangun Kembali Opsi Indeks
Kami menyebutkan sebelumnya bahwa ketika Index Rebuild dipanggil di SQL Server, pembaruan statistik pada indeks juga dipanggil secara default. Jadi, ketika kami mengonfigurasi Tugas Pembaruan Statistik, kami memilih untuk memperbarui hanya statistik kolom (Gambar 11). Jendela ini juga memberi kita pilihan untuk melakukan pemindaian penuh atau pengambilan sampel. Karena konteksnya adalah database kecil, kami memilih opsi pemindaian penuh. Sekali lagi, ini membutuhkan pemahaman tentang statistik.
Gambar 11:Tugas Pembaruan Statistik
Kami memilih untuk mengonfigurasi pekerjaan pembersihan untuk menghapus data yang lebih lama dari 4 minggu, seperti yang ditunjukkan pada Gambar 12.
Gambar 12:Tugas Pembersihan Riwayat
Tugas Pencadangan memperlihatkan cukup banyak opsi konfigurasi dalam tiga tab! Gambar 13 menunjukkan bahwa kami memilih untuk membatasi tugas pencadangan ini ke database pengguna. Kami menjadwalkannya untuk 3:00 pagi pada hari Minggu, dan kami melangkah lebih jauh untuk memilih tujuan pencadangan sebagai E:\MSSQL\Backup (Lihat Gambar 14). Di tab ketiga (Gambar 15), kami membuat pilihan untuk memverifikasi cadangan dan juga melakukan checksum, jadi kami lebih dekat untuk memastikan bahwa cadangan dapat diandalkan.
Gambar 13:Tugas Backup Database
Gambar 14:Tujuan Cadangan
Gambar 15:Opsi Cadangan
Terakhir, kami mengonfigurasi tugas yang akan mengelola penyimpanan log Rencana Pemeliharaan kami. (Gambar 16). Sekali lagi, kami memilih untuk menghapus catatan log yang lebih lama dari 4 minggu. Gambar 17 menunjukkan opsi yang kami pilih untuk memastikan aktivitas Rencana Pemeliharaan dicatat serta dikirimkan ke grup Admin Basis Data. Tentu saja, agar opsi terakhir ini berfungsi, kita harus mengonfigurasi Database Mail dan mengatur operator dengan benar.
Gambar 16:Tugas Pembersihan Rencana Pemeliharaan
Gambar 17:Opsi Laporan
Gambar 18 dan 19 menunjukkan ringkasan tugas yang telah kami konfigurasikan dan umpan balik tentang keberhasilan penyelesaian wizard.
Gambar 18:Ringkasan Opsi
Gambar 19:Penyelesaian Wizard
Rencana Pemeliharaan untuk Tugas Harian
Kami juga dapat mengatur Rencana pemeliharaan terpisah untuk tujuan lain, seperti sekadar mengatur. Kami tidak perlu menyiapkan rencana terpisah untuk Tugas Harian karena kami dapat mengonfigurasi jadwal secara terpisah untuk setiap tugas. Salah satu alasan kami mungkin ingin menyiapkan rencana terpisah adalah karena memilih kumpulan tugas berbeda yang ditargetkan pada kumpulan database yang berbeda (sebenarnya, kami mungkin masih dapat melakukan ini dalam rencana yang ada juga).
Dalam contoh berikut, mari kita asumsikan bahwa kita memiliki kumpulan database besar lainnya dalam instance yang sama yang memiliki Tujuan Titik Pemulihan yang berbeda. Kami kemudian perlu menggunakan strategi pencadangan yang berbeda – jadwal Pencadangan Diferensial harian dan jadwal Pencadangan Log Transaksi per jam di samping pencadangan penuh mingguan untuk memastikan RPO 1 jam. (Lihat Gambar 21 dan 22).
Gambar 20:Rencana Pemeliharaan Tugas Harian
Gambar 21:Tugas Diferensial dan Pencadangan Tlog
Gambar 22:Perintah Tugas Rencana Pemeliharaan Harian
Untuk Pencadangan Diferensial, kami memilih jadwal harian yang dipicu pada pukul 2:00 pagi setiap hari. (Lihat Gambar 23). Dan pilih opsi pencadangan yang sama seperti yang kami lakukan untuk Cadangan Mingguan Penuh yang dikonfigurasi sebelumnya.
Gambar 23:Jadwal Rencana Pemeliharaan Harian
Gambar 24:Lokasi Pencadangan Diferensial
Gambar 25:Opsi Pencadangan Diferensial
Di sisi lain, kami memilih untuk menjadwalkan pencadangan diferensial agar terjadi setiap jam setiap hari. Kami juga memastikan setiap set cadangan basis data disimpan dalam direktori yang memiliki namanya sendiri. Panduan lainnya hampir sama dengan panduan sebelumnya.
Gambar 26:Jadwal Pencadangan Log Transaksi
Gambar 27:Lokasi Pencadangan Log Transaksi
Gambar 28:Opsi Cadangan Log Transaksi
Kesimpulan
Saat menyelesaikan Wizard Rencana Pemeliharaan, kita berakhir dengan Rencana Pemeliharaan dan serangkaian Pekerjaan Agen SQL yang sesuai (Lihat Gambar 29). Pada dasarnya, Rencana Pemeliharaan adalah kumpulan paket SSIS, dan ketika Anda memeriksa pekerjaan terjadwal, Anda akan menemukan bahwa langkah pekerjaan yang dijalankan di setiap pekerjaan sub-rencana adalah Paket SSIS (Lihat Gambar 30).
Dalam contoh berikutnya, kami akan menunjukkan bahwa kami dapat menjalankan pekerjaan sub-rencana setiap tahun. Kami juga akan meninjau hasil pelaksanaan rencana pemeliharaan dan memecahkan masalah kesalahan yang terkait dengan pelaksanaan langkah-langkah pekerjaan. Kami juga akan memeriksa Log Rencana Pemeliharaan.
Gambar 29:Hasil Pekerjaan Agen SQL
Gambar 30:Langkah Kerja Paket SSIS