Memantau penyimpanan OLTP dalam memori di Azure SQL Managed Instance

Berlaku untuk:Azure SQL Managed Instance

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

Tingkat layanan Business Critical mencakup sejumlah memori Max In-Memory OLTP, yang ditentukan oleh jumlah vCore.

Memperkirakan persyaratan memori untuk tabel yang dioptimalkan memori berfungsi dengan cara yang sama untuk SQL Server seperti halnya di Azure SQL Managed Instance. 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 dengan kesalahan 41823.

Memperbaiki situasi penyimpanan OLTP kehabisan memori - kesalahan 41823

Memenuhi batas penyimpanan OLTP dalam memori dalam database Anda menghasilkan operasi INSERT, UPDATE, ALTER, dan CREATE yang gagal dengan kesalahan 41823. Kesalahan ini dapat menyebabkan transaksi aktif dibatalkan.

Kesalahan 41823 menunjukkan bahwa tabel dan variabel tabel yang dioptimalkan memori dalam instans 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 jumlah vCore tambahkan penyimpanan dalam memori untuk data yang perlu Anda simpan dalam tabel yang dioptimalkan memori.

Catatan

Dalam kasus yang jarang terjadi, kesalahan 41823 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. 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 Managed Instance 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;
    

    Untuk informasi selengkapnya, lihat Memantau dan memecahkan masalah penggunaan memori OLTP dalam Memori.