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:✅ Microsoft Fabric'te SQL analiz uç noktası ve Ambarı
SQL Server'daki davranışlarına benzer şekilde, işlemler okuma ve yazma sorgularının işlenmesini veya geri alınmasını denetlemenize olanak sağlar.
Fabric Veri Ambarı ACID uyumlu işlemleri destekler. Her işlem atomik, tutarlı, yalıtılmış ve kalıcıdır (ACID). Tek bir işlem içindeki tüm işlemler atomik olarak değerlendirilir, tümü başarılı veya başarısız olur. İşlemdeki herhangi bir komut başarısız olursa, tüm işlem geri alınır.
Açık işlemler
Değişiklikleri birlikte gruplandırmak için açık işlemleri kullanarak Bir Ambardaki tablolarda depolanan verileri değiştirebilirsiniz.
Örneğin, katlar tablosuna eklemeler işleyebilir veya hata oluştuğunda tabloların hiçbirini işlemeyebilirsiniz. Üç tabloyu etkileyen bir satın alma siparişinin ayrıntılarını değiştiriyorsanız, bu değişiklikleri tek bir işlem halinde gruplandırabilirsiniz. Başka bir deyişle, bu tablolar sorgulandığında tüm değişikliklere sahip olur veya hiçbirinin yoktur. İşlemler, verilerinizin birden çok tabloda tutarlı olduğundan emin olmanız gereken durumlarda yaygın bir uygulamadır.
Açık işlemler için standart T-SQL (BEGIN TRAN, COMMIT TRANve ROLLBACK TRAN) söz dizimi denetim mekanizmalarını kullanabilirsiniz. Daha fazla bilgi için bkz. - BEGIN TRANSACTION
- COMMIT TRANSACTION
- ROLLBACK TRANSACTION
Veritabanları arası sorgu işlemi desteği
Microsoft Fabric'teki ambar, Lakehouse'un SQL analiz uç noktasından okuma da dahil olmak üzere aynı çalışma alanı içindeki ambarlara yayılan işlemleri destekler. Örnek için bkz. Veritabanları arası SQL Sorgusu yazma.
Fabric Veri Ambarı'nda kilitleme ve engellemeyi anlama
Fabric Veri Ambarı, sorgu bir satıra veya birçok satıra dokunsa da tablo düzeyinde kilitleme kullanır. Aşağıdaki tabloda, farklı T-SQL işlemleri için hangi kilitlerin kullanıldığına ilişkin bir liste sağlanmaktadır.
| Deyim türü | Kilit alındı |
|---|---|
| DML | |
| SELECT | Schema-Stability (Sch-S) |
| INSERT | Amaç Özel Kullanım (IX) |
| DELETE | Amaç Özel Kullanım (IX) |
| UPDATE | Amaç Özel Kullanım (IX) |
| MERGE | Amaç Özel Kullanım (IX) |
| KOPYALA | Amaç Özel Kullanım (IX) |
| DDL | |
| TABLO OLUŞTUR | Şema Değişiklikleri (Sch-M) |
| ALTER TABLE | Şema Değişikliği (Sch-M) |
| DROP TABLE | Şema-Değişikliği (Sch-M) |
| TABLOYU KISALT | Şema Değişikliği (Sch-M) |
Şema-Değiştirme (Sch-M) |
|
| KOPYA OLARAK TABLO OLUŞTURMA | Şema Değişikliği (Sch-M) |
Şu anda tutulan kilitleri dinamik yönetim görünümü (DMV) sys.dm_tran_locks sorgulayabilirsiniz.
Kilitler, kilit yükseltme ve kilit uyumluluğu hakkında daha fazla bilgi için bkz. İşlem kilitleme ve satır sürüm oluşturma kılavuzu.
Anlık görüntü yalıtımı
Fabric Veri Ambarı tüm işlemlerde snapshot izolasyonu uygular. Anlık görüntü yalıtımı, veriler için işlem düzeyi tutarlılığı sağlayan ve güncelleştirilecek satırları seçmek için içinde tempdb depolanan satır sürümlerini kullanan satır tabanlı bir yalıtım düzeyidir. İşlem, işlem başladığında var olan veri satırı sürümlerini kullanır. Bu, her işlemin işlemin başlangıcında mevcut olan verilerin tutarlı bir anlık görüntüsünde çalıştırılmasını sağlar.
Anlık görüntü yalıtımı altında, bir işlemdeki sorgular, işlem başladığında veritabanının durumuna bağlı olarak aynı sürümü veya anlık görüntüyü görür. Anlık görüntü yalıtımında, verileri değiştiren işlemler verileri okuyan işlemleri engellemez ve verileri okuyan işlemler de veri yazan işlemleri engellemez. Bu iyimser ve engelleyici olmayan davranış, karmaşık işlemler için kilitlenme olasılığını da önemli ölçüde azaltır.
Yalıtım düzeyinizi değiştirmek için T-SQL kullanırsanız, değişiklik sorgu yürütme zamanında yoksayılır ve anlık görüntü yalıtımı uygulanır.
Anlık görüntü yalıtımı ile yazma-yazma veya güncelleştirme çakışmaları mümkündür. Daha fazla bilgi için bkz. Doku Veri Ambarı'nda yazma-yazma çakışmalarını anlama.
Şema kilitleri
Şema kilitleri, bir işlemde satırlar güncelleştirilirken tablonun şemasının değiştirilmesi gibi DDL deyimlerinde çakışmaları önler. Şema değişiklikleri ve geçişler gibi DDL işlemlerinin, etkin okuma iş yüklerini engelleyebileceğini veya bu iş yükleri tarafından engellenebileceğini unutmayın.
- Veri tanımı dili (DDL) işlemleri sırasında Veritabanı Altyapısı şema değişikliği (
Sch-M) kilitlerini kullanır. Kilit, tutıldığı süre boyunca,Sch-Mkilit serbest bırakılana kadar tabloya tüm eşzamanlı erişimi engeller. - Veri işleme dili (DML) işlemleri sırasında Veritabanı Altyapısı şema kararlılığı (
Sch-S) kilitlerini kullanır.Sch-Mkilitlerini alan işlemlerSch-Skilitler tarafından engellenir. Sorgu derlenirken diğer işlemler çalışmaya devam eder, ancak DDL işlemleri şemaya özel erişim elde edene kadar engellenir. - DDL işlemleri, işlem süresi boyunca, hedef tabloyla ilişkili
Xvesys.tablesgibi sistem görünümlerindeki satırlarda özel (sys.objects) kilit de alır. Bu,sys.tablesvesys.objectsüzerinde eşzamanlıSELECTdeyimlerlerini engeller.
Engellemeyi önlemek için en iyi yöntemler
- Uzun süreli işlemlerden kaçının veya eşzamanlı faaliyetin azaldığı ya da hiç olmadığı dönemlerde zamanlayın.
- Engellemeyi en aza indirmek için DDL işlemlerini yalnızca bakım pencereleri sırasında zamanlayın.
- DDL deyimlerini açık kullanıcı işlemlerine (
BEGIN TRAN) yerleştirmekten kaçının. Tabloları değiştiren uzun süreli işlemler, kullanıcı tablolarında ve sistem kataloğu görünümleri gibiSELECTüzerindeki diğer DML işlemleri vesys.tablessorguları için engelleme sorunlarına neden olabilir. Olası kilit çakışmalarını izlemek ve gidermek için kullanınsys.dm_tran_locks. - Ambardaki kilitleri ve çakışmaları izleyin.
- Geçerli kilitleri incelemek için sys.dm_tran_locks kullanın.
- Fabric Veri Ambarı, kullanıcı tanımlı işlemler içinde bazı DDL ifadelerini destekler, ancak uzun süreli işlemlerde önerilmez. İşlemler sırasında, DDL ifadeleri eşzamanlı işlemleri engelleyebilir veya yazma-yazma çakışmalarına neden olabilir.
Yapı Veri Ambarı'nda yazma-yazma çakışmalarını anlama
İki işlem, UPDATE, DELETE, MERGE veya TRUNCATE aynı tablo üzerinde işlem yapmaya çalıştığında yazma-yazma çakışmaları oluşabilir.
Fabric Veri Ambarı tablo düzeyinde kilitleme kullandığından, yazma-yazma çakışmaları veya güncelleştirme çakışmaları gerçekleşebilir. İki işlem aynı tablodaki farklı satırları değiştirmeyi denerse, yine de çakışabilir.
Yazma-yazma çakışmaları çoğunlukla iki senaryodan kaynaklanır.
- Kullanıcı tarafından oluşturulan iş yükü çakışmaları
- Birden çok kullanıcı veya işlem aynı tabloyu eşzamanlı olarak değiştirir.
- ETL işlem hatlarında, toplu güncelleştirmelerde veya çakışan işlemlerde oluşabilir.
- Sistem tarafından oluşturulan çakışmalar
- Otomatik veri sıkıştırma gibi arka plan sistemi görevleri, dosyaları düşük kalitede yeniden yazar.
- Bunlar kullanıcı işlemleriyle çakışabilir, ancak Veri sıkıştırma önalımı bu türdeki yazma-yazma çakışmalarını etkin bir şekilde engeller.
Yazma-yazma çakışması oluşursa aşağıdaki gibi hata iletileri görebilirsiniz:
- Hata 24556: Güncelleştirme çakışması nedeniyle anlık görüntü yalıtım işlemi durduruldu. '%.*ls' tablosuna '%.*ls' veritabanında doğrudan veya dolaylı olarak erişmek için anlık görüntü yalıtımı kullanılması, tablodaki satırlar başka bir eşzamanlı işlem tarafından silindiyse veya güncelleştirildiyse güncelleştirme çakışmalarına neden olabilir. İşlemi yeniden deneyin.
- Hata 24706: Güncelleştirme çakışması nedeniyle anlık görüntü yalıtım işlemi durduruldu. Anlık görüntü yalıtımını kullanarak '%.*ls' veritabanındaki '%.*ls' tablosuna doğrudan veya dolaylı olarak erişip başka bir işlem tarafından değiştirilen veya silinen satırı güncelleştirmek, silmek veya eklemek mümkün değildir. Lütfen işlemi yeniden deneyin.
Bu hata iletileriyle karşılaşırsanız, bir veya daha fazla işlem başarılı oldu ve bir veya daha fazla çakışan işlem başarısız oldu. Başarısız olan işlemleri yeniden deneyin.
Uyarı
İşlemler yalnızca ekleme değişikliklerine neden olsa MERGE bile, yine de bir yazma-yazma çakışması oluşturur. İşlem diğer eşzamanlı DML işlemlerinden farklı satırları etkilediğinde MERGE , işlenen ilk işlem değilse MERGE bu hatayla karşılaşabilir: 'Güncelleştirme çakışması nedeniyle anlık görüntü yalıtım işlemi durduruldu.'
Yazma-yazma çakışmalarını önlemeye yönelik en iyi yöntemler
Yazım çakışmalarını önlemek için:
- Aynı tabloda eşzamanlı
UPDATE,DELETE,MERGEişlemlerinden kaçının.- Çok adımlı işlemler içindeki
UPDATE,DELETE,MERGEişlemlerine dikkat edin.
- Çok adımlı işlemler içindeki
- Tüm uygulamalarda ve sorgularda Yeniden Deneme Mantığını kullanın.
- Saklı yordamlarda ve ETL işlem hatlarında yeniden deneme mantığı uygulayın.
- Geçici çakışmaları işlemek için işlem hatlarında veya uygulamalarda gecikmeli yeniden deneme mantığı ekleyin.
- Geçici ağ kesintilerini kötüleştiren yeniden deneme fırtınalarından kaçınmak için üstel geri çekilme yöntemini kullanın. Daha fazla bilgi için bkz. Yeniden deneme düzeni.
- Fabric Veri Ambarı arka plan veri sıkıştırma hizmetiyle yazma-yazma çakışmaları mümkündür, ancak genellikle Veri sıkıştırma öncelik tanıma özelliği tarafından engellenir.
Tablo ve parquet dosyasını engelleme
Bir tablodaki bir veya daha fazla satırı güncelleştiren iki veya daha fazla eşzamanlı işlemden kaynaklanan çakışmalar, işlemin sonunda değerlendirilir. İşlemeye yönelik ilk işlem başarıyla tamamlanır ve diğer işlemler döndürülen bir hatayla geri alınır. Bu çakışmalar ayrı ayrı parquet dosya düzeyinde değil tablo düzeyinde değerlendirilir.
INSERT deyimleri her zaman yeni parquet dosyaları oluşturur; bu da Tablonun şeması değişebileceğinden DDL dışındaki diğer işlemlerle daha az çakışma olduğu anlamına gelir.
Sınırlamalar
- Dağıtılmış işlemler desteklenmez, örneğin.
BEGIN DISTRIBUTED TRANSACTION -
ALTER TABLEaçık bir işlemde desteklenmez. - Kaydetme noktaları desteklenmez.
- Adlandırılmış işlemler desteklenmez.
- İşaretli işlemler desteklenmez.
- Şu anda, ambarda sınırlı T-SQL işlevselliği vardır. Şu anda kullanılamayan T-SQL komutlarının listesi için bkz. Doku Veri Ambarı'nda T-SQL yüzey alanı.
- Bir işlem boş bir tabloya veri ekleme işlemine sahipse ve geri dönmeden önce bir SELECT oluşturuyorsa, otomatik olarak oluşturulan istatistikler yine de kaydedilmemiş verileri yansıtarak yanlış istatistiklere neden olabilir. Yanlış istatistikler, iyileştirilmemiş sorgu planlarına ve yürütme sürelerine yol açabilir. Büyük bir INSERT işleminden sonra SELECTs ile bir işlemi geri alırsanız, SELECT'inizde belirtilen sütunların istatistiklerini güncelleştirin.