Aracılığıyla paylaş


Çevrimiçi dizin işlemleri nasıl çalışır?

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Bu makale, çevrimiçi dizin işlemi sırasında var olan yapıları tanımlar ve bu yapılarla ilişkili etkinlikleri gösterir.

Çevrimiçi dizin yapıları

Dizin veri tanımı dili (DDL) işlemi sırasında eşzamanlı kullanıcı etkinliğine izin vermek için, çevrimiçi dizin işlemi sırasında aşağıdaki yapılar kullanılır: kaynak ve önceden var olan dizinler, hedef ve yığın yeniden oluşturmak veya kümelenmiş dizini çevrimiçi bırakmak için geçici eşleme dizini.

  • Kaynak ve önceden var olan dizinler

    Kaynak, özgün tablo veya kümelenmiş dizin verileridir. Önceden var olan dizinler, kaynak yapıyla ilişkilendirilmiş, kümelenmemiş dizinlerdir. Örneğin, çevrimiçi dizin işlemi dört ilişkili kümelenmemiş dizini olan kümelenmiş dizini yeniden derlediyse, kaynak mevcut kümelenmiş dizindir ve önceden var olan dizinler de kümelenmemiş dizinlerdir.

    Önceden var olan dizinler seçme, ekleme, güncelleştirme ve silme işlemleri için eşzamanlı kullanıcılar tarafından kullanılabilir. Buna toplu eklemeler (çevrimiçi dizin işlemi sırasında desteklenir ancak önerilmez) ve tetikleyiciler ve bilgi tutarlılığı kısıtlamalarına göre örtük güncelleştirmeler dahildir. Önceden var olan tüm dizinler sorgular için kullanılabilir. Bu, sorgu iyileştiricisi tarafından seçilebileceği ve gerekirse dizin ipuçlarında belirtilebileceği anlamına gelir.

  • Target

    Hedef veya hedefler, yeni dizin (veya yığın) ya da oluşturulan veya yeniden oluşturulan yeni dizin kümesidir. Kaynağa kullanıcı ekleme, güncelleştirme ve silme işlemleri, dizin işlemi sırasında Veritabanı Altyapısı tarafından hedefe uygulanır. Örneğin, çevrimiçi dizin işlemi kümelenmiş bir dizini yeniden derlediyse, hedef yeniden oluşturulmuş kümelenmiş dizindir; Kümelenmiş dizin yeniden oluşturulduğunda Veritabanı Altyapısı kümelenmemiş dizinleri yeniden oluşturmaz.

    Hedef dizin, dizin işlemi işlenene kadar kullanılmaz. Dahili olarak, dizin yalnızca yazılabilir olarak işaretlenir.

  • Geçici eşleme dizini

    Kümelenmiş dizini oluşturan, bırakan veya yeniden oluşturan çevrimiçi dizin işlemleri için geçici bir eşleme dizini de gerekir. Bu geçici dizin, kaynak tablodaki satırlar güncelleştirildiğinde veya silindiğinde oluşturulan yeni dizinlerde hangi kayıtların silineceğini belirlemek için eşzamanlı işlemler tarafından kullanılır. Bu kümelenmemiş dizin, yeni kümelenmiş dizin (veya yığın) ile aynı adımda oluşturulur ve ayrı bir sıralama işlemi gerektirmez. Eşzamanlı işlemler tüm ekleme, güncelleştirme ve silme işlemlerinde geçici eşleme dizinini korur.

Çevrimiçi dizin etkinlikleri

Çevrimiçi dizin işlemi sırasında, dizinlenmemiş bir tabloda (yığın) kümelenmiş dizin oluşturma gibi, kaynak ve hedef üç aşamadan geçer: hazırlık, inşa ve tamamlama.

Çevrimiçi dizin işleminin progress_report_online_index_operation ilerleme durumunu izlemek için genişletilmiş olayı kullanabilirsiniz.

Aşağıdaki çizimde, çevrimiçi olarak ilk kümelenmiş dizin oluşturma işlemi gösterilmektedir. Kaynak nesne (yığın) başka indekse sahip değil. Her aşama için kaynak ve hedef yapı etkinlikleri gösterilir; eşzamanlı kullanıcı SELECT, INSERT, UPDATEve DELETE işlemleri de gösterilir. Hazırlık, derleme ve son aşamalar, her aşamada kullanılan kilit modlarıyla birlikte belirtilir.

Çevrimiçi dizin işlemi sırasında gerçekleştirilen etkinlikleri gösteren diyagram.

Kaynak yapısı etkinlikleri

Aşağıdaki tabloda, dizin işleminin her aşamasında kaynak yapıları içeren etkinlikler ve buna karşılık gelen kilitleme stratejisi listelenir.

Phase Kaynak etkinliği Kaynak kilitleri
Preparation

Kısa faz
Yeni boş dizin yapısını oluşturmak için sistem meta verileri hazırlığı.

Tablonun anlık görüntüsü tanımlanır. Yani, işlem seviyesinde okuma tutarlılığı sağlamak için satır sürümlendirme kullanılır.

Kaynakta eş zamanlı kullanıcı yazma işlemleri kısa bir süre için engellenir.

Birden çok kümelenmemiş dizin oluşturma dışında eşzamanlı DDL işlemlerine izin verilmez.
S paylaşılan ()

Amaç paylaşıldı (IS)

Kaynak alt türü Sch-MINDEX_OPERATION ile şema değişikliği () nesne kilidi
Build

Ana aşama
Veriler taranır, sıralanır, birleştirilir ve toplu yükleme işlemleri kullanılarak hedefe eklenir.

Eşzamanlı kullanıcı INSERT, UPDATE, DELETEve MERGE işlemleri hem önceden var olan dizinlere hem de oluşturulan tüm yeni dizinlere uygulanır.
Amaç paylaşıldı (IS)

Sch-Mkaynak alt türü INDEX_OPERATION2 olan nesne kilidi
Final

Kısa faz
Bu aşama başlamadan önce tüm onaylanmamış yazma işlemlerinin tamamlanması gerekir. Alınan kilide bağlı olarak, bu aşama tamamlanana kadar tüm yeni kullanıcı okuma veya yazma işlemleri kısa bir süre için engellenir.

Sistem meta verileri, kaynağı hedefle değiştirecek şekilde güncelleştirilir.

Gerekirse, örneğin kümelenmiş dizini yeniden derledikten veya bıraktıktan sonra kaynak bırakılır.
Sch-Mkaynak alt türü INDEX_OPERATION2 olan nesne kilidi

Kümelenmemiş dizin oluşturuyorsanız tabloda paylaşılan (S).1

Sch-M herhangi bir kaynak yapısı (dizin veya tablo) kaldırılırsa. 1

1 Dizin işlemi, tablodaki S kilidi veya Sch-M kilidini almadan önce, kaydedilmemiş yazma işlemlerinin tamamlanmasını bekler. Uzun süre çalışan bir sorgu gerçekleşirse, çevrimiçi dizin işlemi sorgu tamamlanana kadar bekler. Düşük öncelikli kilitler kullanılmadığı sürece, bu bir engelleme zinciri oluşturabilir.

2Sch-M Kaynak alt türüne INDEX_OPERATION sahip bir nesne kilidi, dizin işlemi devam ederken kaynakta ve önceden var olan yapılarda eşzamanlı veri tanımı dili (DDL) işlemlerinin yürütülmesini engeller. Örneğin, bu kilit aynı tablodaki iki dizinin eşzamanlı olarak yeniden oluşturulmasını engeller. Bu bir Sch-M kilit olsa da, veri işleme deyimlerini engellemez.

Önceki tabloda, çevrimiçi bir dizin işleminin derleme aşamasında alınan, tek bir dizini kapsayan bir paylaşımlı (S) kilit gösterilmektedir. Kümelenmiş ve kümelenmemiş dizinler tek bir çevrimiçi dizin işleminde (örneğin, bir veya daha fazla kümelenmemiş dizin içeren bir tabloda ilk kümelenmiş dizin oluşturma sırasında) derlendiğinde, derleme aşamasında iki kısa vadeli S kilit ve ardından uzun vadeli amaç paylaşılan (IS) kilitleri alınır. Kümelenmiş dizin oluşturma için önce bir S kilit alınır. Kümelenmiş dizin oluşturulduğunda, kümelenmemiş dizinleri oluşturmak için ikinci bir kısa vadeli S kilit alınır. Kümelenmemiş dizinler oluşturulduktan sonra, S kilidi, çevrimiçi dizin işleminin son aşamasına kadar IS kilidine indirilir.

Kilitlerin nasıl kullanıldığı ve bunları nasıl yönetebileceğiniz hakkında daha fazla bilgi için, çevrimiçi dizin işlemleriyle ilgili WAIT_AT_LOW_PRIORITY bölümüne bakın.

Hedef yapı etkinlikleri

Aşağıdaki tabloda, dizin işleminin her aşamasında hedef yapıyı içeren etkinlikler ve buna karşılık gelen kilitleme stratejisi listelenir.

Phase Hedef etkinlik Hedef kilitler
Preparation Yeni dizin oluşturulur ve salt yazma olarak ayarlanır. Amaç paylaşıldı (IS)
Build Veriler kaynaktan eklenir.

Kaynağa uygulanan kullanıcı değişiklikleri (eklemeler, güncelleştirmeler, silmeler) hedefe de uygulanır.

Bu etkinlik kullanıcıya göre saydamdır.
Amaç paylaşıldı (IS)
Final Dizin meta verileri güncelleştirilir.

Dizin, okuma/yazma durumuna ayarlanır.
Paylaşılan (S) veya şema değişikliği (Sch-M)

Dizin işlemi tamamlanana kadar kullanıcı sorguları hedefe erişemez.

Hazırlık veya son aşama tamamlandıktan sonra, plan önbelleğinde depolanan sorgu planları geçersiz kılınabilir.

Çevrimiçi dizin işlemine dahil olan bir tabloda bildirilen imlecin ömrü, çevrimiçi dizin aşamalarıyla sınırlıdır. Güncelleştirme imleçleri her aşamada geçersiz kılındı. Salt okunur imleçler yalnızca son aşamadan sonra geçersiz kılınıyor.