Azure SQL Veritabanı bellek içi OLTP depolama alanını izleme

Şunlar için geçerlidir:Azure SQL Veritabanı

Bellek içi OLTP ile bellek için iyileştirilmiş tablolardaki ve tablo değişkenlerindeki veriler bellek içi OLTP depolama alanında bulunur.

Verilerin bellek içi OLTP depolama sınırına sığıp sığmadığını belirleme

Farklı hizmet katmanlarının depolama büyük harflerini belirleyin. Her Premium ve İş Açısından Kritik hizmet katmanı en yüksek bellek içi OLTP depolama boyutuna sahiptir.

Bellek için iyileştirilmiş bir tablo için bellek gereksinimlerini tahmin etmek, SQL Server için Azure SQL Veritabanı ile aynı şekilde çalışır. Bellek gereksinimlerini tahmin etme'yi gözden geçirmek için birkaç dakika bekleyin.

Tablo ve tablo değişken satırlarının yanı sıra dizinler, maksimum kullanıcı veri boyutuna doğru sayılır. Ayrıca, ALTER TABLE tüm tablonun ve dizinlerinin yeni bir sürümünü oluşturmak için yeterli alan gerekir.

Bu sınır aşıldıktan sonra ekleme ve güncelleştirme işlemleri başarısız olabilir. Bu noktada, belleği geri kazanmak için verileri silmeniz veya veritabanınızın hizmet katmanını veya işlem boyutunu yükseltmeniz gerekir. Daha fazla bilgi için bkz . Yetersiz bellek OLTP depolama durumları - Hatalar 41823 ve 41840.

İzleme ve uyarı

Bellek içi depolama kullanımını Azure portalında işlem boyutunuz için depolama üst sınırının yüzdesi olarak izleyebilirsiniz:

  1. SQL veritabanınızın Genel Bakış sayfasında İzleme sayfasında grafiği seçin. Ya da gezinti menüsünde İzleme'yi bulun ve Ölçümler'i seçin.
  2. Ölçüm ekle seçeneğini belirleyin.
  3. Temel'in altında Bellek içi OLTP yüzde Depolama ölçümünü seçin.
  4. Uyarı eklemek için Kaynak Kullanımı kutusunu seçerek Ölçüm sayfasını açın ve ardından Yeni uyarı kuralı'nı seçin. Ölçüm uyarısı kuralı oluşturmak için yönergeleri izleyin.

Veya bellek içi depolama kullanımını göstermek için aşağıdaki sorguyu kullanın:

SELECT xtp_storage_percent FROM sys.dm_db_resource_stats;

Yetersiz bellek OLTP depolama durumlarını düzeltme - 41823 ve 41840 hataları

Veritabanınızdaki bellek içi OLTP depolama sınırının karşılanması INSERT, UPDATE, ALTER ve CREATE işlemlerinin hata 41823 (tek veritabanları için) veya hata 41840 (elastik havuzlar için) ile başarısız olur. Her iki hata da etkin işlemin durdurulmasına neden olur.

41823 ve 41840 hataları, veritabanı veya havuzdaki bellek için iyileştirilmiş tabloların ve tablo değişkenlerinin bellek içi OLTP depolama boyutu üst sınırına ulaştığını gösterir.

Bu hatayı çözmek için:

  • Verileri bellek için iyileştirilmiş tablolardan silip verileri geleneksel, disk tabanlı tablolara boşaltabilirsiniz; Veya
  • Hizmet katmanını, bellek için iyileştirilmiş tablolarda tutmanız gereken veriler için yeterli bellek içi depolama alanına sahip bir katmana yükseltin.

Not

Nadir durumlarda, 41823 ve 41840 hataları geçici olabilir; bu da bellek içi OLTP depolama alanı için yeterli kullanılabilirlik olduğu anlamına gelir ve işlemi yeniden deneme başarılı olur. Bu nedenle hem genel kullanılabilir bellek içi OLTP depolama alanını izlemenizi hem de ilk kez 41823 veya 41840 hatasıyla karşılaştığınızda yeniden denemenizi öneririz. Yeniden deneme mantığı hakkında daha fazla bilgi için bkz . Bellek içi OLTP ile Çakışma Algılama ve Mantığı Yeniden Deneme.

DMV’ler ile izleme

  • Bellek tüketimini düzenli aralıklarla izleyerek, bellek tüketiminin nasıl büyüdüğünü ve kaynak sınırlarında ne kadar boş odanız kaldığını belirleyebilirsiniz. Veritabanınızdaki veya örneğinizdeki nesneler tarafından ne kadar bellek tüketildiğini belirleyin. Örneğin, DMV'ler sys.dm_db_xtp_table_memory_stats veya sys.dm_os_memory_clerks.

    • sorgulayarak sys.dm_db_xtp_table_memory_statstüm kullanıcı tabloları, dizinler ve sistem nesneleri için bellek tüketimini bulabilirsiniz:

      SELECT object_name(object_id) AS [Name], *  
         FROM sys.dm_db_xtp_table_memory_stats;
      
    • Bellek içi OLTP altyapısına ayrılan bellek ve bellek için iyileştirilmiş nesneler, veritabanındaki diğer bellek tüketicileri gibi yönetilir. MEMORYCLERK_XTP türündeki bellek katipleri, bellek içi OLTP altyapısına ayrılan tüm belleği hesaplar. Belirli veritabanlarına ayrılmış bellek de dahil olmak üzere bellek içi OLTP altyapısı tarafından kullanılan tüm belleği bulmak için aşağıdaki sorguyu sys.dm_os_memory_clerks kullanın.

      -- 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  
      
    
    
  • Ayrıca, dinamik yönetim görünümü sys.dm_os_out_of_memory_events ile Azure SQL Veritabanı bellek yetersiz hataları hakkında daha fazla bilgi edinebilirsiniz. Örneğin:

    SELECT * FROM sys.dm_os_out_of_memory_events ORDER BY event_time DESC;