Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pemeliharaan Terjadwal dari Database IS 24/7 di MS SQL Server

Pengantar

Artikel ini adalah ulasan singkat tentang pemeliharaan terjadwal utama dengan database sistem informasi 24/7 yang tidak memiliki waktu henti, serta pendekatan untuk pelaksanaannya di MS SQL Server.

Setiap komentar dan pembaruan artikel sangat dihargai.

Pemeliharaan terjadwal

Ada pemeliharaan terjadwal berikut yang ingin saya tunjukkan:

  1. Pencadangan terjadwal dengan verifikasi lebih lanjut tanpa memulihkan
  2. Pemulihan cadangan terjadwal untuk memverifikasi kinerjanya
  3. Analisis perangkat penyimpanan data yang berisi sistem dan semua database yang diperlukan
  4. Pengujian terjadwal untuk layanan yang diperlukan
  5. Pengoptimalan terjadwal dari kinerja sistem
  6. Pemeliharaan integritas data terjadwal
  7. Pemeliharaan validasi data terjadwal

Tiga poin pertama adalah yang paling penting, karena mereka menyediakan pemulihan sistem setelah berbagai kegagalan. Namun, saya akan merekomendasikan menjalankan setidaknya tiga poin juga, sehingga pengguna dapat bekerja dengan nyaman (dengan demikian, semua kueri harus dieksekusi dengan cepat) dan agar data harus divalidasi di semua sistem pelaporan.

Untuk mengotomatiskan pemeliharaan terjadwal, dimungkinkan untuk mengatur bagian-bagiannya di Agen atau Penjadwal Windows.

Poin keenam didasarkan pada perintah CHECKDB.

Poin ketujuh diimplementasikan terhadap domain area yang digunakan dalam sistem informasi.

Saya akan berbicara secara rinci tentang lima poin pertama.

Pencadangan terjadwal dengan verifikasi lebih lanjut tanpa memulihkan

Karena ada banyak artikel tentang topik ini, perlu dicatat bahwa pemeliharaan terjadwal ini perlu dilakukan secara teratur di server cadangan, bukan di server utama. Server cadangan ini harus berisi data terbaru (misalnya, yang diperoleh dengan replikasi). Selain itu, Anda perlu mencadangkan semua database sistem (kecuali tempdb) pada setiap instance MS SQL Server.

Ketika pencadangan gagal, atau pemindaian cadangan mengidentifikasi masalah, informasi ini harus dilaporkan kepada administrator. Misalnya, Anda dapat mengirim email kepada mereka.

Penting untuk menentukan strategi pencadangan, yang akan menjawab pertanyaan berikut:

  1. Seberapa sering dan kapan kita harus mencadangkan data (lengkap, diferensial, dan log transaksi)?
  2. Berapa lama dan kapan kami harus menghapus cadangan?

Pemulihan cadangan terjadwal untuk memverifikasi kinerjanya

Saya sarankan untuk menjalankan prosedur ini di server cadangan dengan utilitas pihak ketiga atau KEMBALIKAN perintah.

Saat memulihkan cadangan gagal, informasi ini harus dilaporkan ke administrator. Misalnya, Anda dapat mengirim email kepada mereka.

Selain itu, perlu untuk memulihkan cadangan database sistem. Untuk melakukannya, Anda perlu memulihkannya sebagai database pengguna biasa dengan nama yang berbeda dari nama database sistem.

Analisis perangkat penyimpanan data yang berisi sistem dan semua database yang diperlukan

Anda perlu menganalisis berapa banyak ruang yang dibutuhkan setiap basis data, bagaimana ukuran file berubah, dan bagaimana ukuran ruang kosong di seluruh perangkat penyimpanan berubah. Misalnya, Anda dapat melakukan tugas ini sebagian dengan pengumpulan data otomatis tentang file database dan drive logis dari sistem operasi di MS SQL Server.

Anda dapat melakukan pemeriksaan ini setiap hari dan kemudian mengirimkan hasilnya. Seperti biasa, Anda dapat mengirimkannya ke email.

Anda juga perlu memantau basis data sistem sehingga Anda memastikan semuanya bekerja dengan benar.

Selain itu, penting untuk menguji perangkat penyimpanan untuk memeriksa apakah ada penyusutan atau bad sector.

Perhatikan bahwa saat menguji perangkat harus tidak beroperasi dan semua data harus disalin ke perangkat lain karena pengujian memuat perangkat secara drastis.

Tugas ini sangat terkait dengan tugas administrator sistem sehingga kami akan mengesampingkannya. Untuk mengambil kendali penuh atas kasus ini, Anda perlu mengotomatiskan pengiriman laporan email.

Saya akan merekomendasikan untuk melakukan tes ini dua kali setahun.

Pengujian terjadwal untuk layanan yang diperlukan

Waktu henti layanan adalah praktik yang buruk. Oleh karena itu, server cadangan akan bertindak jika terjadi kegagalan. Namun, perlu untuk memeriksa log dari waktu ke waktu. Selain itu, Anda juga dapat memikirkan pengumpulan data otomatis dengan pemberitahuan lebih lanjut kepada administrator dengan mengirimkan email.

Penting untuk memeriksa tugas Agen SQL Server atau Penjadwal Windows dengan pengumpulan data otomatis tentang tugas yang diselesaikan di MS SQL Server.

Pengoptimalan terjadwal dari kinerja sistem

Ini mencakup aspek-aspek berikut:

  1. Otomatis defragmentasi indeks dalam database MS SQL Server
  2. Mengotomatiskan pengumpulan data tentang perubahan skema database di MS SQL Server. Anda dapat memulihkan cadangan dan membandingkan perubahan, misalnya, menggunakan dbForge
  3. Pembersihan otomatis dari proses yang macet di MS SQL Server
  4. Membersihkan cache prosedur. Di sini Anda perlu menentukan kapan dan apa yang harus dibersihkan
  5. Menerapkan indikator kinerja
  6. Mengembangkan dan memodifikasi indeks berkerumun

Selain itu, saya sarankan untuk menonaktifkan AUTO_CLOSE fitur.

Terkadang, untuk alasan yang berbeda, pengoptimal memparalelkan kueri, yang tidak selalu optimal.

Jadi, ada beberapa rekomendasi yang harus Anda ingat:

  1. Jika Anda mendapatkan banyak data, tinggalkan paralelisme.
  2. Jika Anda mendapatkan sedikit data, maka jangan gunakan paralelisme.

Ada dua parameter dalam pengaturan instance SQL Server yang bertanggung jawab untuk paralelisme:

  1. derajat paralelisme maksimum. Untuk menonaktifkan paralelisme, setel “1” sebagai nilai, yang berarti hanya satu prosesor yang akan mengeksekusi kode.
  2. ambang biaya untuk paralelisme. Ini harus disetel secara default.

Ada dua antrian utama:

  1. antrian untuk waktu CPU (antrian QCPU). Ini terjadi ketika kueri telah diaktifkan dan menunggu prosesor untuk mengeksekusinya.
  2. antrian untuk sumber daya (antrean QR). Ini terjadi saat kueri menunggu sumber daya dilepaskan untuk menjalankan proses.

Rumus berikut menjelaskan eksekusi kueri (T):

T=TP+TQR+TCPU+TQCPU, di mana:

  • TP sedang menyusun waktu untuk sebuah rencana
  • TQR adalah waktu antrean untuk sumber daya (antrean QR)
  • TQCPU adalah waktu antrean untuk sumber daya tidak terikat (antrean QCPU)
  • TPU adalah waktu untuk mengeksekusi kueri

Dalam tampilan sistem sys.dm_exec_query_stats:

  1. total_worket_time =TP+TCPU+TQCPU
  2. total_elapsed_time =TQR+TCPU

Alat bawaan tidak memungkinkan penilaian waktu eksekusi kueri secara tepat.

Biasanya, total_elapsed_time memberi Anda waktu yang mendekati waktu eksekusi kueri.

Anda dapat menentukan waktu eksekusi kueri secara lebih akurat dengan menggunakan jejak. Atau, Anda dapat mencatat waktu mulai dan berakhir kueri. Hati-hati dengan jejak karena mereka secara signifikan memuat sistem. Jadi, lebih baik melakukannya di server cadangan dan mengumpulkan data dari server utama. Dalam hal ini, hanya jaringan yang akan dimuat.

Saat memparalelkan, SQL Server mengalokasikan N proses ke kueri (dalam edisi Standart n<=4). Setiap proses membutuhkan waktu CPU untuk mengeksekusi kueri (satu proses tidak selalu dieksekusi pada setiap inti).

Semakin banyak proses yang Anda miliki, semakin besar kemungkinan beberapa akan digantikan oleh yang lain, yang mengarah pada peningkatan TQCPU.

Mungkin diperlukan lebih banyak waktu untuk mengeksekusi kueri saat memparalelkan, dalam kasus berikut:

  1. Troughput sub-sistem disk rendah. Dalam hal ini, dekomposisi kueri membutuhkan lebih banyak waktu.
  2. Data mungkin diblokir untuk proses tersebut.
  3. Tidak ada indeks untuk predikat, yang mengarah ke pemindaian tabel.
    Keterangan:
    Anda perlu menonaktifkan kueri paralel di server yang tidak perlu melakukan seleksi besar (total_worket_time harus dikurangi karena kemungkinan penurunan TCPU dan TQCPU). Untuk melakukan ini, Anda perlu menyetel fitur derajat paralelisme maksimum ke '1' agar hanya satu prosesor yang bekerja.
    Selain itu, Anda dapat menggunakan kerangka kerja lain untuk membangun sistem yang menentukan kinerja database berkecepatan tinggi . Penting untuk memahami cara kerja kerangka kerja ini dan cara menginterpretasikan angka yang diambil.

Sedangkan untuk pengembangan dan modifikasi indeks, yaitu indeks berkerumun, poin utamanya adalah memahami bagaimana logika indeks diatur dan cara kerjanya.

Perlu diingat bahwa kunci utama dan kunci kluster tidak memiliki arti yang sama:

Kunci utama adalah kolom atau kumpulan kolom, yang membuat record menjadi unik dalam tabel. Untuk kunci utama, Anda dapat membuat indeks clustered atau non-clustered yang unik. Kunci utama digunakan di tabel lain sebagai kunci asing untuk menyediakan integritas data.

indeks berkerumun adalah B-tree atau modifikasinya. Daun berisi data itu sendiri sementara node menyimpan informasi indeks. Selain itu, indeks berkerumun juga bisa tidak unik. Namun, saya merekomendasikannya untuk menjadi unik.

Saya ingin mengingatkan bahwa B-tree adalah struktur yang menyimpan data dalam urutan yang disaring oleh indeks berkerumun. Dengan demikian, penting untuk mengelompokkan bidang yang dipilih sebagai indeks berkerumun dalam urutan menurun atau menaik. Untuk indeks berkerumun, Anda dapat menggunakan kolom bilangan bulat (identitas), serta data dan waktu. Namun, kolom seperti pengidentifikasi unik tidak cocok karena yang terakhir akan menyebabkan restrukturisasi reguler B-tree, yang akan meningkatkan jumlah pembacaan dan catatan pada perangkat penyimpanan tempat database berada.

Selain itu, Anda perlu memastikan bahwa indeks digunakan dengan tampilan sistem sys.dm_db_index_usage_stats.

P.S. Penting untuk memeriksa apakah data terbaru pada server cadangan, serta memeriksa sistem yang menyinkronkan data ini (misalnya, ulangan).

Baca juga:

Mengotomatiskan Defragmentasi Indeks di Database MS SQL Server

Pengumpulan Data Otomatis Perubahan Skema Basis Data di MS SQL Server

Penghapusan Otomatis Proses Stuck di MS SQL Server

Memecahkan Masalah Kueri yang Berjalan Lama di MS SQL Server

Menerapkan Indikator Kinerja


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kembalikan Semua Kunci Asing &PERIKSA Batasan dalam Database SQL Server (Contoh T-SQL)

  2. Cara Menjatuhkan Batasan Kunci Asing di Database SQL Server - Tutorial SQL Server / TSQL Bagian 75

  3. Cara cepat menulis Select Query di SQL Server - Tutorial SQL Server / TSQL Bagian 108

  4. Apa tipe data SYSNAME di SQL Server?

  5. Tolong bantu meningkatkan statistik SQL Server!