Bagikan melalui


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 di penyimpanan OLTP Dalam Memori, yang merupakan bagian dari memori database yang disisihkan untuk data dalam memori.

  • Database dan kumpulan elastis di tingkat layanan Premium (DTU) dan Business Critical (vCore) mendukung OLTP Dalam Memori.
  • Tingkat layanan Hyperscale mendukung subset objek OLTP Dalam Memori, tetapi tidak menyertakan tabel yang dioptimalkan memori. Untuk informasi selengkapnya, lihat Batasan Hyperscale.

Tentukan apakah data sudah sesuai dengan batas penyimpanan OLTP dalam memori

Tentukan batas penyimpanan dari tujuan layanan yang berbeda. Setiap tujuan layanan Premium dan Bisnis Kritis 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. Tinjau Memperkirakan persyaratan memori.

Baris variabel tabel dan tabel, serta indeks, dihitung terhadap batas. Selain itu, ALTER TABLE pernyataan membutuhkan memori yang cukup untuk membuat versi baru dari seluruh tabel dan indeksnya.

Setelah batas tercapai, operasi sisipkan dan perbarui mungkin mulai gagal. Pada saat itu Anda perlu menghapus data untuk mengklaim kembali memori, atau meningkatkan tujuan layanan database atau kumpulan elastis Anda. Untuk informasi selengkapnya, lihat Memperbaiki situasi penyimpanan OLTP di luar memori - Kesalahan 41823 dan 41840.

Memantau dan memberi peringatan

Anda dapat memantau penggunaan penyimpanan OLTP Dalam Memori sebagai persentase batas penyimpanan untuk tujuan layanan di 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
ORDER BY end_time DESC;

Mengatasi kesalahan kehabisan memori dengan OLTP Dalam Memori

Mencapai batas penyimpanan OLTP Dalam Memori di database atau kumpulan elastis Anda dapat mengakibatkan INSERTpernyataan , UPDATE, ALTER dan CREATE 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 ukuran tabel dan variabel tabel yang dioptimalkan memori dalam database atau kumpulan elastis mencapai ukuran penyimpanan OLTP Dalam Memori maksimum.

Untuk mengatasi kesalahan ini, baik:

  • Hapus data dari tabel yang dioptimalkan memori, berpotensi membongkar data ke tabel tradisional berbasis disk; Atau,
  • Tingkatkan tujuan layanan ke satu dengan penyimpanan OLTP Dalam Memori yang cukup untuk data yang perlu Anda simpan dalam tabel dan variabel 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 yang tersedia, dan percobaan ulang operasi berhasil. Oleh karena itu, kami merekomendasikan untuk memantau keseluruhan penyimpanan OLTP dalam memori yang tersedia dan mencoba ulang ketika pertama kali mengalami kesalahan 41823 atau 41840. Untuk informasi lebih lanjut mengenai logika percobaan ulang, lihat Deteksi Konflik dan Logika Coba Ulang dengan OLTP Dalam Memori.

Memantau dengan DMV

  • Dengan memantau konsumsi memori secara proaktif, Anda dapat menentukan bagaimana konsumsi memori tumbuh dan berapa banyak ruang kepala yang Telah Anda tinggalkan menuju batas sumber daya. Identifikasi berapa banyak memori yang digunakan oleh objek dalam database atau instans Anda. Anda dapat menggunakan 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. Petugas memori jenis MEMORYCLERK_XTP akun untuk semua memori yang dialokasikan untuk mesin OLTP Dalam Memori. Gunakan kueri berikut untuk 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 OLTP 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;