Aracılığıyla paylaş


Dizin DDL işlemleri için disk alanı gereksinimleri

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

Dizinleri oluştururken, yeniden oluştururken veya bırakırken disk alanı önemli bir noktadır. Yetersiz disk alanı performansı düşürebilir ve hatta dizin işleminin başarısız olmasına neden olabilir. Bu makalede, dizin veri tanımı dili (DDL) işlemleri için gereken disk alanı miktarını belirlemenize yardımcı olabilecek genel bilgiler sağlanır.

Ek disk alanı gerektirmeyen dizin işlemleri

Aşağıdaki dizin işlemleri için ek disk alanı gerekmez:

  • ALTER INDEX REORGANIZE; ancak log boşluğu gereklidir.

  • DROP INDEX kümelenmemiş bir dizini bıraktığınızda.

  • DROP INDEX kümelenmiş dizini, MOVE TO yan tümcesini belirtmeden çevrimdışı duruma getirdiğinizde ve kümelenmemiş dizinler mevcut değilse.

  • CREATE TABLE (PRIMARY KEY veya UNIQUE kısıtlamalar)

Ek disk alanı gerektiren dizin işlemleri

Diğer tüm dizin DDL işlemleri, işlem sırasında kullanmak için ek geçici disk alanı ve yeni dizin yapısını veya yapılarını depolamak için kalıcı disk alanı gerektirir.

Yeni bir dizin yapısı oluşturulduğunda, uygun dosyalarında ve dosya gruplarında hem eski (kaynak) hem de yeni (hedef) yapılar için disk alanı gerekir. Dizin oluşturma işlemi tamamlanana kadar eski yapı serbest bırakılmaz.

Aşağıdaki dizin DDL işlemleri yeni dizin yapıları oluşturur ve ek disk alanı gerektirir:

  • CREATE INDEX
  • CREATE INDEX WITH DROP_EXISTING
  • ALTER INDEX REBUILD
  • ALTER TABLE ADD CONSTRAINT (PRIMARY KEY veya UNIQUE)
  • ALTER TABLE DROP CONSTRAINT (PRIMARY KEY veya UNIQUE) kısıtlama kümelenmiş dizine dayalı olduğunda
  • DROP INDEX MOVE TO (Yalnızca kümelenmiş dizinler için geçerlidir.)

Sıralama için geçici disk alanı

Kaynak ve hedef yapılar için gereken disk alanının yanı sıra, sorgu iyileştiricisi sıralama gerektirmeyen bir yürütme planı bulmadığı sürece sıralama için geçici disk alanı gerekir.

Sıralama gerekiyorsa, sıralama her seferinde yeni bir dizinle gerçekleşir. Örneğin, kümelenmiş dizini ve ilişkili kümelenmemiş dizinleri tek bir deyim içinde yeniden derlediğinizde, dizinler birbiri ardına sıralanır. Bu nedenle, yalnızca sıralama için gereken ek geçici disk alanının işlemdeki en büyük dizin kadar büyük olması gerekir. Bu neredeyse her zaman kümelenmiş dizindir.

SORT_IN_TEMPDB seçeneği olarak ayarlanırsaON, en büyük dizin içine tempdbsığmalıdır. Bu seçenek dizin oluşturmak için kullanılan geçici disk alanı miktarını artırsa da, kullanıcı veritabanından farklı bir disk kümesinde olduğunda tempdb dizin oluşturmak için gereken süreyi azaltabilir.

Bölümlenmiş dizinler de dahil olmak üzere her dizin (varsayılan) olarak ayarlanırsa SORT_IN_TEMPDBOFF , hedef disk alanında sıralanır ve yalnızca yeni dizin yapıları için disk alanı gerekir.

Disk alanını hesaplama örneği için bkz. Dizin disk alanı örneği.

Çevrimiçi dizin işlemleri için geçici disk alanı

Dizin işlemlerini çevrimiçi gerçekleştirdiğinizde, ek geçici disk alanı gerekir.

Kümelenmiş bir dizin çevrimiçi olarak oluşturulursa, yeniden oluşturulursa veya kaldırılırsa, eski yer işaretlerini yeni yer işaretleriyle eşlemek için geçici bir kümelenmemiş dizin oluşturulmaktadır. SORT_IN_TEMPDB seçeneği ON olarak ayarlanırsa, bu geçici dizin tempdb içinde oluşturulur. olarak ayarlanırsa SORT_IN_TEMPDBOFF, hedef dizinle aynı dosya grubu veya bölüm düzeni kullanılır. Geçici eşleme dizini tablodaki her satır için bir kayıt içerir ve içindekiler, benzersizleştiriciler ve kayıt tanımlayıcıları dahil olmak üzere eski ve yeni yer işareti sütunlarının birleşimidir ve her iki yer işaretinde kullanılan herhangi bir sütunun yalnızca tek bir kopyasını içerir. Çevrimiçi dizin işlemleri hakkında daha fazla bilgi için bkz. Dizin işlemlerini çevrimiçi gerçekleştirme.

Uyarı

Bu seçenek SORT_IN_TEMPDB, DROP INDEX deyimler için ayarlanamaz. Geçici eşleme dizini her zaman hedef dizinle aynı dosya grubunda veya bölüm düzeninde oluşturulur.

Çevrimiçi dizin işlemleri, dizin işlemini diğer işlemler tarafından yapılan değişikliklerin etkilerinden yalıtmak için satır sürümü oluşturmayı kullanır. Bu, okunmuş satırlarda paylaşım kilitleri isteme gereksinimini önler. Çevrimiçi dizin işlemleri sırasında eşzamanlı kullanıcı güncelleştirme ve silme işlemleri, tempdb içindeki sürüm kayıtları için alan gerektirir. Daha fazla bilgi için bkz . Dizin işlemlerini çevrimiçi gerçekleştirme .