Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 1141|Yanıt: 1

[Kaynak] SQL SERVER veritabanları için bellek optimize edilmiş tablolar

[Bağlantıyı kopyala]
2025-5-10 tarihinde yayınlandı 21:28:18 | | | |
Bellek optimize edilmiş tablolara giriş

Bellek optimize edilmiş tablolar, CREATE TABLE (Transact-SQL) kullanılarak oluşturulan tablolardır.

Varsayılan olarak, bellek optimize edilmiş tablolar tamamen kalıcı olur. (Geleneksel) disk tabanlı tablolardaki işlemler gibi, bellek optimize edilmiş tablolardaki işlemler de tamamen atomik, tutarlı, izole ve kalıcı (ACID) olur. Bellek optimize edilmiş tablolar ve doğal derlenmiş depolanmış prosedürler yalnızca Transact-SQL özelliklerinin bir alt kümesini destekler.

SQL Server 2016 ve Azure SQL Database itibarıyla, bellek içi OLTP'ye özgü derleme veya kod sayfaları üzerinde herhangi bir kısıtlama yoktur.

Bellek optimize edilmiş bir tablonun birincil belleği birincil bellektir. Tablodaki satırları hafızadan oku ve bu satırları hafızaya yaz. Tablo verisinin başka bir kopyası diskte tutulur, ancak sadece süreklilik amaçları için. Kalıcı tablolar hakkında daha fazla bilgi için, bkz. Memory optimizasyonu için nesnelerin depolanmasını oluştur ve yönet. Bellek optimize edilmiş tablolardaki veriler, yalnızca veritabanı kurtarma sırasında diskten okunur (örneğin sunucu yeniden başlatılmasından sonra).

Daha yüksek performans artışı için, bellek içi OLTP, işlem amaçlı kalıcı gecikmeye sahip kalıcı tabloları destekler. Gecikmeli kalıcı işlemler, işlem tamamlandıktan kısa bir süre sonra diske kaydedilir ve kontrol istemciye geri verilir. Performansın artması karşılığında, diske kaydedilmeyen taahhüt edilen işlemler, sunucu çökmesi veya failover durumunda kaybolur.

Varsayılan kalıcı bellek optimize edilmiş tablolara ek olarak, SQL Server kaydedilmemiş, kalıcı bellek optimize edilmemiş tabloları destekler ve bu veriler diskte saklanmaz. Bu, bu tablolardaki işlemlerin diskin IO'su gerektirmediği anlamına gelir, ancak sunucu arızası veya devre gerçekleşirse veri kaybolur.

Bellek içi OLTP, SQL Server ile entegre olarak geliştirme, dağıtım, yönetilebilirlik ve desteklenebilirlik gibi tüm yönlerde sorunsuz bir deneyim sunar. Bir veritabanı hem bellek içi nesneler hem de disk tabanlı nesneler içerebilir.

Bellek optimize edilmiş tablodaki satırlar versiyonlandırılmıştır. Bu, tablodaki her satırın birden fazla versiyonu olabileceği anlamına gelir. Tüm satır sürümleri aynı tablo veri yapısında korunur. Satır sürümleme, aynı satıra eşzamanlı okuma ve yazma işlemlerini mümkün kılmak için kullanılır. Aynı satıra eşzamanlı okuma ve yazma hakkında daha fazla bilgi için Bellek Optimizasyon Tablosunda Şeyler'e bakınız.

Yaklaşık adımlar ve kullanım sınırlamaları

Adım -ları:

(1) Bir veritabanı oluşturun ve dosya grubu MEMORY_OPTIMIZED_DATA (veritabanı dosya grubu ekleyin, her veritabanı sadece bir MEMORY_OPTIMIZED_DATA dosya grubuna sahip olabilir!!) )
(2) Veri dosyalarını depolamak için dosya grubuna bir klasör ekleyin (lütfen bu klasörü önceden oluşturmayın, veritabanı dosyasını file grubuna ekle modunu kullanın)
(3) Kalıcı veya kalıcı olmayan bellek için optimize edilmiş tablolar oluşturun (SQL Server 2014 varsayılan olarak devam eder), ayrıca toplanmamış bir hash index temelinde birincil anahtar tanımlamanız gerekir. Hash edilmiş indeksler, bellek optimize edilmiş tablolarda desteklenen tek indeks tipidir.
(4) Yerel derlenmiş depolanmış prosedürler kullanın: Bellek optimize edilmiş tablolar, yalnızca bellek optimize edilmiş tablolara referans verdiği sürece yerel derlenmiş depolanmış prosedürleri destekler.

Sınırlamak:

(1) Bellek optimize edilmiş tablo, CONTAINS dosya grubu ile veritabanının altına yerleştirilmelidir MEMORY_OPTIMIZED_DATA.
(2) Bellek optimize edilmiş tablo, toplu olmayan bir hash indeksine dayalı birincil anahtar tanımlamalı ve tablo tanımlanmalıdırYabancı anahtar veya kısıtlama kontrolü desteklenmemektedir
(3) Bellek optimizasyon tablosunun yeterli belleğe sahip olması gerekir, aksi takdirde güncellemeler eklemek gibi işlemler başarısız olur.
(4) SQL Server 2014'ün bu tablolarda birçok kısıtlaması vardır. Örneğin, yabancı anahtarları veya kısıtlama kontrolü desteklemiyorlar (ki bu MySQL'in bellek depolama motoruna benzer hissettiriyor),IDENTITY alanları veya DML tetikleyicileri de desteklenmez

Eğitimi kullanın

Veritabanı sürümleri aşağıdaki gibidir:

Microsoft SQL Server 2022 (RTM-CU15-GDR) (KB5046059) - 16.0.4150.1 (X64)
        25 Eylül 2024 17:34:41
        Telif Hakkı (C) 2022 Microsoft Corporation
        Enterprise Edition: Linux üzerinde çekirdek tabanlı lisanslama (64-bit) (Ubuntu 22.04.4 LTS) <X64>

İlk olarak, aşağıdaki komutla bir veritabanı ve dosya grubu oluşturun:

Bellek optimize edilmiş bir grup oluşturmazsanız, bellek optimize edilmiş bir tablo oluşturduğunuzda hata bildirilecektir:Bellek optimize edilmiş tablolar oluşturulamıyor. Bellek optimize edilmiş tablolar oluşturmak için, veritabanının çevrimiçi ve en az bir konteyneri olan bir MEMORY_OPTIMIZED_FILEGROUP olmalıdır.

Test etmek için iki bellek optimize edilmiş tablo oluşturun; biri kalıcı diğeri kalıcı olmayan ve aşağıdaki komutla bu tablo oluşturulur:

Bellek optimizasyon tablosunda iki seçenek vardır (DAYANIKLILIK = SCHEMA_AND_DATA), (DAYANIKLILIK = SCHEMA_ONLY)
Dayanıklılık tablosu: DAYANIKLILIK =SCHEMA_AND_DATA
Kalıcı olmayan tablo: DAYANIKLILIK =SCHEMA_ONLY

Testler, bellek optimizasyon tablosuna ayrı olarak eklenir100.000 makale(aslında 100002 öğe) verisi, komut şöyledir:





Persistence açılması 28 saniye sürer, persistence ise 1 saniye sürer

Referans:

Bağlantı girişi görünür.
Bağlantı girişi görünür.
Bağlantı girişi görünür.
Bağlantı girişi görünür.
Bağlantı girişi görünür.




Önceki:Dizüstü bilgisayar kalite denetim yazılımını geri dönüştürmeyi seviyorum
Önümüzdeki:C# 8.0 sözdizimi index ve aralık kullanır
 Ev sahibi| 2025-5-10 tarihinde yayınlandı 21:36:40 |
Normal bir tablo, 100.000 veri parçası ekler ve çalıştırılması 18 saniye sürer. Aşağıda gösterildiği gibi:



Betik:
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com