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. |