Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri
Azure SQL Yönetilen Örnek
bellek için iyileştirilmiş tablolar için sistem sürümü oluşturulmuş zamana bağlı tablolar In-Memory OLTP iş yükleriyle toplanan verilerin üzerine veri denetimi ve zaman noktası analizi gerekli olduğu senaryolar için uygun maliyetli bir çözüm sağlar.
Not
Bellek optimize edilmiş zamana duyarlı tablolar yalnızca SQL Server ve Azure SQL Yönetilen Örnek'te kullanılabilir. Bellek için iyileştirilmiş tablolar ve zamana bağlı tablolar Azure SQL Veritabanı'nda bağımsız olarak kullanılabilir.
Genel bakış
Sistem sürümüyle zaman damgalı tablolar, veri değişikliklerinin tam geçmişini otomatik olarak tutar ve belirli bir zaman diliminde analiz için pratik Transact-SQL uzantılarını kullanıma sunar. Tipik bir senaryoda, düzenli olarak sorgulanmasa bile veri geçmişi uzun bir süre (birden çok ay, hatta yıllar) boyunca tutulur.
Veri denetimi ve zamana dayalı analiz, özellikle çok fazla sayıda isteği işleyen ve In-Memory OLTP teknolojisinin kullanıldığı OLTP sistemlerinde farklı ortamlarda talep edilebilir. Ancak, zamansal senaryolarda bellek için iyileştirilmiş tabloların kullanılması zordur çünkü oluşturulan çok fazla geçmiş verisi genellikle kullanılabilir RAM sınırını aşıyor. Aynı zamanda, eskidikçe daha az sıklıkta erişilen salt okunur geçmiş verileri depolamak için RAM kullanmak en uygun çözüm değildir.
Bellek için iyileştirilmiş tablolar için sistem sürümüne sahip sürekli tablolar, yüksek işlem aktarım hızı ve kilit içermeyen eşzamanlılık sağlar. Bunlar, geçerli verileri depolamak için bellek içi tabloları (geçici tablo) ve geçmiş verileri için disk tabanlı tabloları kullanarak büyük miktarda geçmiş verilerini depolamanıza olanak verir. DML işlemleri üzerindeki etkisi, yakın geçmişi depolayan ve yerel olarak derlenmiş koddan DML'lerin yürütülmesine olanak tanıyan dahili, otomatik olarak oluşturulan bellek için optimize edilmiş bir hazırlama tablosu kullanılarak azaltılır.
Aşağıdaki diyagramda bu mimari gösterilmektedir.
Uygulama ayrıntıları
Sistem tarafından sürümlenmiş bellek için iyileştirilmiş bir tablo oluşturduğunuzda, aşağıdaki önemli noktalara dikkat edin. Söz dizimi seçenekleri ve bir örnek için bkz. CREATE TABLE.
Yalnızca dayanıklı bellek için iyileştirilmiş tablolar sistem sürümüne dönüştürülebilir (
DURABILITY = SCHEMA_AND_DATA).Bellek için optimize edilmiş sistem sürümlü bir tabloya ait geçmiş veritabanı tablosu, ister son kullanıcı ister sistem tarafından oluşturulmuş olsun, disk tabanlı olmalıdır.
Yalnızca geçerli bellek içi tabloyu etkileyen sorgular, yerel olarak derlenmişT-SQL modüllerinde kullanılabilir.
FOR SYSTEM TIMEyan tümcesini kullanan zamana bağlı sorgular yerel olarak derlenmiş modüllerde desteklenmez.FOR SYSTEM TIMEyan tümcesi geçici sorgularda ve yerel olmayan modüllerde bellek için iyileştirilmiş tablolarla desteklenir.SYSTEM_VERSIONING = ONile, geçerli bellek için optimize edilmiş bir tablodaki güncelleme ve silme işlemlerinin sonuçları olan en son sistem sürümü değişikliklerini kabul etmek için dahili bellek için optimize edilmiş bir hazırlık tablosu otomatik olarak oluşturulur.İç bellek için optimize edilmiş hazırlık tablosundaki veriler, asenkron veri temizleme görevi tarafından düzenli olarak disk tabanlı geçmiş tablosuna taşınır. Bu veri temizleme mekanizması, iç bellek arabelleklerini üst nesnelerinin bellek tüketiminin yüzde 10'undan azında tutar. sys.dm_db_xtp_memory_consumerssorgulayarak, bellek için iyileştirilmiş sistem sürümlü zamansal tablonun toplam bellek tüketimini ve iç bellek için iyileştirilmiş hazırlık tablosu ile geçerli zamansal tablo için verileri özetleyerek izleyebilirsiniz.
sp_xtp_flush_temporal_historyçalıştırarak el ile veri temizleme işlemi yürütebilirsiniz.
SYSTEM_VERSIONING = OFFile veya sistem versiyona sahip bir tablonun şeması sütun ekleme, silme veya değiştirme yoluyla değiştirildiğinde, iç hazırlık arabellek içeriğinin tamamı disk tabanlı geçmiş tablosuna taşınır.Geçmiş verilerin sorgulanması etkin bir şekilde anlık görüntü yalıtım düzeyi altındadır ve her zaman bellek içi hazırlama arabelleği ile yinelenenleri olmayan disk tabanlı tablo arasında bir birleşim döndürür.
tablo şemasını dahili olarak değiştiren
ALTER TABLEişlemleri, işlemin süresini uzatabilecek bir veri temizleme işlemi gerçekleştirmelidir.
İç bellekle optimize edilmiş hazırlama tablosu
Sistem, DML işlemlerini optimize etmek için bellek optimize edilmiş bir iç hazırlama tablosu oluşturur.
Tablo adı şu biçimde oluşturulur:
Memory_Optimized_History_Table_<object_id>, burada<object_id>geçerli zamansal tablonun tanımlayıcısıdır.Tablo, geçerli zamansal tablonun şemasını ve bir bigint sütununu çoğaltır. Bu ek sütun, iç geçmiş arabelleğine taşınan satırların benzersizliğini garanti eder.
Ek sütun şu ad biçimine sahiptir:
Change_ID[<suffix>], tablonun zaten bir<suffix>sütunu olması durumunda isteğe bağlı olarakChange_IDeklenir.Hazırlama tablosundaki fazla bigint sütunu nedeniyle sistem sürümlü bellek iyileştirilmiş bir tablonun en büyük satır boyutu 8 bayt azaltılır. Yeni maksimum değer artık 8.052 bayttır.
İç bellek için iyileştirilmiş hazırlama tablosu, SQL Server Management Studio Nesne Gezgini'nde temsil edilmemektedir.
Bu tablo ve geçerli zamana bağlı tabloyla bağlantısı hakkındaki meta veriler sys.internal_tablesbulunabilir.
Veri temizleme görevi
Veri temizleme, bellek için iyileştirilmiş herhangi bir tablonun veri taşıma için bellek boyutu tabanlı bir koşulu karşılayıp karşılamadığını denetleen düzenli olarak etkinleştirilmiş bir görevdir. Veri taşıma, dahili hazırlık tablosunun bellek tüketimi, mevcut geçici tablonun bellek tüketiminin yüzde sekizine ulaştığında başlar.
Veri temizleme görevi, mevcut iş yüküne bağlı olarak değişen bir zamanlamayla düzenli olarak etkinleştirilir. Yoğun bir iş yüküyle görev 5 saniyede bir kadar sık çalışır. Hafif bir iş yüküyle sıklık dakikada bir artar. İç bellekle optimize edilmiş, temizleme gerektiren her hazırlama tablosu için bir iş parçacığı oluşturulur.
Veri silme, bu kayıtları disk tabanlı geçmiş tablosuna taşımak için, bellek içi arabellekten halihazırda çalışan en eski işlemden daha eski olan tüm kayıtları siler.
sp_xtp_flush_temporal_history çalıştırıp şema ve tablo adını belirterek veri temizleme işlemi yürütebilirsiniz:
EXEC sys.sp_xtp_flush_temporal_history <schema_name>, <object_name>;
Sistem iç zamanlamaya göre veri temizleme görevini yürüttüğünde olduğu gibi aynı veri taşıma işlemi çağrılır.
İlgili içerik
- Zamansal tablolar
- Sistem sürümüne sahip zamana bağlı tabloları kullanmaya başlama
- Zamansal tablo kullanım senaryoları
- Zamansal tablo sistemi tutarlılık denetimleri
- Zamansal tablolarla bölümlendirme
- Zaman tablosuyla ilgili önemli noktalar ve sınırlamalar
- Zamansal tablo güvenliği
- Sistem sürümündeki zamana bağlı tablolarda geçmiş verileri saklamayı yönetme
- Zamansal tablo meta veri görünümleri ve işlevleri