2009-12-16 12 views
9

Sahip olduğum bir görünümde bir dizin oluşturmak istiyorum ancak indeks oluştururken verilerin hala okunabildiğinden emin olmalıyım.SQL Server 2005 tablosunda kümelenmemiş bir dizin oluşturuluyor seçimleri engelliyor mu?

CREATE UNIQUE CLUSTERED INDEX CLUST_IDX_SQLTIPS 
ON SQLTips (tip) with (ONLINE=ON) 

bunu doğru anlamak muyum: Ben kümelenmemiş bir dizin oluştururken seçenek ON = (aşağıdaki örneğe) ONLINE belirtirseniz veriler hala okunabilir olduğunu ileri sürdü bir article okuyordu? İndeksimi oluştururken okunabilmesi gereken bir görünümde dizin oluşturmadan önce bilmem gereken herhangi bir potansiyel sorun var mı?

cevap

14

Çevrimiçi dizin oluşturma ve yeniden oluşturma yalnızca Enterprise Edition'da kullanılabilir. Bakınız How Online Index Operations Work ve Guidelines for Performing Online Index Operations.

  • kümelenmiş dizin oluşturulması gerekir /herhangi BLOB alanları (resim, ntext metin, varchar (max) içeriyorsa çevrimdışı yeniden inşa nvarchar (max):

    bazı kısıtlamalar, en belirgin olanları vardır , varbinary (max) ve xml). Bir görünümde

  • iç kümelenmiş dizin çevrimdışı oluşturulmalıdır. o anki boyutuna ek tablonun yaklaşık 1,5 katı büyüklüğünde gerektirdiğinden Eğer veritabanı sağlamalıdır

online dizin işlemi gerçekleştirmek için yeterli alana sahip. Çevrimiçi dizin oluşturma sırasında tablo, veritabanında iki kez var, dolayısıyla gerekli ekstra alan.

Durumunuz kategorisine girdiği için (bir görünümde ilk kümelenmiş dizin) çevrimiçi dizinler hakkında endişelenmenize gerek yoktur. Çevrimdışı bir dizin işlemi kullanmalısınız.

BTW Ayrıca, dizin oluşturulmuş görünümlerin yalnızca Enterprise Edition'da en iyileştirici tarafından dikkate alındığını unutmayın. Alt sürümlerde, görünümdeki olası bir dizinden yararlanmak için görünümde NOEXPAND yan tümcesi belirtilmelidir.

+0

Teşekkürler Farkında değildim. Bu görünümde iki indeks oluşturmayı planlıyorum, bahsettiğiniz ilk kümelenmiş ve bundan sonra kümelenmemiş. Kümelenmiş ilk kümeyi oluştururken, görünümümdeki verileri okunabilir durumda tutmak için zaten biliyor musunuz? BTW Kurumsal sürüm çalıştırıyorum. –

+0

Kümelenmiş dizin görünümü, tablodaki satırları kilitler ve böylece kilitli satırların okumalarını engeller (varsayılan seri hale getirme düzeyi altında). Masa ne kadar büyük? Birkaç saniye veya indeks oluşturma süresinin birkaç saati mi konuşuyoruz? Okumakta kullanılan anlık görüntüyü etkinleştirmeyi düşünebilirsiniz, bu SELECT'lerin etkilenmeden devam etmesine izin verecektir. Ancak bu, sistemde, özellikle tempdb üzerinde global bir etkiye sahiptir, bu yüzden önceden kesin olarak test etmelisiniz. –

+0

Tabloda 9 milyondan fazla kayıt var. Dizinler oluşturmak için yaklaşık 15 dakika alacağını düşünüyorum. İnsanlar 15 dakika boyunca okuyamıyorsa, bir sorunum olur. Okumayı kontrol etmenin sistemde yapacağı etki hakkında daha spesifik olabilir misiniz? Elden önce testi nasıl önerirsiniz? –

2

CREATE INDEX ve online index operations ile ilgili çok sayıda bilgi içeren msdn makaleleri hakkında daha fazla bilgi var.

Yalnızca SELECT ve UPDATE'leri kullanıyorsanız, bununla ilgili hiçbir sorun olmamalıdır. Yedekler konusunda çok emin değilim, belki bir test sistemi üzerinde denemek ve görmek için en iyisi?