Memantau penyimpanan OLTP dalam memori di Azure SQL Database

Berlaku untuk:Azure SQL Database

Dengan OLTP dalam memori, data dalam tabel yang dioptimalkan memori dan variabel tabel berada dalam penyimpanan OLTP dalam memori.

Menentukan apakah data sesuai dalam batas penyimpanan OLTP dalam memori

Tentukan batas penyimpanan dari berbagai tingkat layanan. Setiap tingkat layanan Premium dan Business Critical memiliki ukuran penyimpanan OLTP dalam memori maksimum.

Memperkirakan persyaratan memori untuk tabel yang dioptimalkan memori bekerja dengan cara yang sama untuk SQL Server seperti halnya di Azure SQL Database. Luangkan waktu beberapa menit untuk meninjau Memperkirakan persyaratan memori.

Baris variabel tabel dan tabel, serta indeks, diperhitungkan dalam ukuran data pengguna maksimum. Selain itu, ALTER TABLE perlu ruang yang cukup untuk membuat versi baru dari seluruh tabel dan indeksnya.

Setelah batas ini terlampaui, operasi sisipkan dan perbarui mungkin mulai gagal. Saat itu Anda perlu menghapus data untuk mendapatkan kembali memori, atau meningkatkan tingkat layanan atau ukuran komputasi database Anda. Untuk informasi selengkapnya, lihat Memperbaiki situasi penyimpanan OLTP di luar memori - Kesalahan 41823 dan 41840.

Pemantauan dan Pemberitahuan

Anda dapat memantau penggunaan penyimpanan dalam memori sebagai persentase batas penyimpanan untuk ukuran komputasi Anda dalam portal Azure:

  1. Pada halaman Gambaran Umum database SQL Anda, pilih bagan di halaman Pemantauan. Atau, di menu navigasi, temukan Pemantauan dan pilih Metrik.
  2. Pilih Tambahkan metrik.
  3. Di bawah Dasar, pilih metrik Persentase Penyimpanan OLTP dalam memori.
  4. Untuk menambahkan pemberitahuan, pilih kotak Pemanfaatan Sumber Daya untuk membuka halaman Metrik , lalu pilih Aturan pemberitahuan baru. Ikuti instruksi untuk membuat aturan pemberitahuan metrik.

Atau, gunakan kueri berikut untuk memperlihatkan pemanfaatan penyimpanan dalam memori:

SELECT xtp_storage_percent FROM sys.dm_db_resource_stats;

Memperbaiki situasi penyimpanan OLTP kehabisan memori - Kesalahan 41823 dan 41840

Memenuhi batas penyimpanan OLTP dalam memori dalam database Anda menghasilkan operasi INSERT, UPDATE, ALTER, dan CREATE yang gagal dengan kesalahan 41823 (untuk database tunggal) atau kesalahan 41840 (untuk kumpulan elastis). Kedua kesalahan tersebut menyebabkan transaksi aktif dibatalkan.

Kesalahan 41823 dan 41840 menunjukkan bahwa tabel dan variabel tabel yang dioptimalkan memori dalam database atau kumpulan mencapai ukuran penyimpanan OLTP dalam memori maksimum.

Untuk mengatasi masalah ini:

  • Hapus data dari tabel yang dioptimalkan memori, berpotensi membongkar data ke tabel tradisional berbasis disk; Atau,
  • Tingkatkan tingkat layanan ke tingkat dengan penyimpanan dalam memori yang cukup untuk data yang perlu Anda simpan dalam tabel yang dioptimalkan memori.

Catatan

Dalam kasus yang jarang terjadi, kesalahan 41823 dan 41840 dapat bersifat sementara, yang berarti ada cukup penyimpanan OLTP dalam memori, dan mencoba kembali operasi berhasil. Oleh karena itu, kami menyarankan untuk memantau keseluruhan penyimpanan OLTP dalam memori yang tersedia dan untuk mencoba kembali ketika pertama kali mengalami kesalahan 41823 atau 41840. Untuk informasi selengkapnya tentang logika coba lagi, lihat Deteksi Konflik dan Logika Coba Lagi dengan OLTP dalam memori.

Memantau dengan DMV

  • Dengan memantau konsumsi memori secara berkala, Anda dapat menentukan bagaimana konsumsi memori tumbuh dan berapa banyak ruang kepala yang Anda tinggalkan dalam batas sumber daya. Identifikasi berapa banyak memori yang digunakan oleh objek dalam database atau instans Anda. Misalnya, DMV sys.dm_db_xtp_table_memory_stats atau sys.dm_os_memory_clerks.

    • Anda dapat menemukan konsumsi memori untuk semua tabel pengguna, indeks, dan objek sistem dengan mengkueri sys.dm_db_xtp_table_memory_stats:

      SELECT object_name(object_id) AS [Name], *  
         FROM sys.dm_db_xtp_table_memory_stats;
      
    • Memori yang dialokasikan untuk mesin OLTP dalam memori dan objek yang dioptimalkan memori dikelola dengan cara yang sama seperti konsumen memori lain dalam database. Pegawai memori jenis MEMORYCLERK_XTP akun untuk semua memori yang dialokasikan untuk mesin OLTP dalam memori. Gunakan kueri berikut untuk sys.dm_os_memory_clerks menemukan semua memori yang digunakan oleh mesin OLTP dalam memori, termasuk memori yang didedikasikan untuk database tertentu.

      -- This DMV accounts for all memory used by the in-memory engine  
      SELECT [type], [name]
           , memory_node_id  
           , pages_kb/1024 AS pages_MB   
      FROM sys.dm_os_memory_clerks 
      WHERE [type] LIKE '%xtp%';
      
      type                 name       memory_node_id pages_MB  
      -------------------- ---------- -------------- --------------------  
      MEMORYCLERK_XTP      Default    0              18  
      MEMORYCLERK_XTP      DB_ID_5    0              1358  
      MEMORYCLERK_XTP      Default    64             0  
      
    
    
  • Anda juga bisa mendapatkan informasi selengkapnya tentang kesalahan kehabisan memori di Azure SQL Database dengan tampilan manajemen dinamis sys.dm_os_out_of_memory_events. Contohnya:

    SELECT * FROM sys.dm_os_out_of_memory_events ORDER BY event_time DESC;