Bagikan melalui


Persyaratan ruang disk untuk operasi DDL indeks

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceDatabase SQL di Microsoft Fabric

Ruang disk adalah pertimbangan penting saat Anda membuat, membangun kembali, atau menghilangkan indeks. Ruang disk yang tidak memadai dapat menurunkan performa atau bahkan menyebabkan operasi indeks gagal. Artikel ini menyediakan informasi umum yang dapat membantu Anda menentukan jumlah ruang disk yang diperlukan untuk operasi bahasa definisi data indeks (DDL).

Operasi indeks yang tidak memerlukan ruang disk tambahan

Operasi indeks berikut tidak memerlukan ruang disk tambahan:

  • ALTER INDEX REORGANIZE; namun, ruang log diperlukan.

  • DROP INDEX saat Anda menghapus indeks nonclustered.

  • DROP INDEX saat Anda menjatuhkan indeks terkluster secara offline tanpa menentukan klausul MOVE TO dan indeks non-berkumpulan tidak ada.

  • CREATE TABLE (PRIMARY KEY atau UNIQUE batasan)

Operasi indeks yang memerlukan ruang disk tambahan

Semua operasi DDL indeks lainnya memerlukan ruang disk sementara tambahan untuk digunakan selama operasi, dan ruang disk permanen untuk menyimpan struktur atau struktur indeks baru.

Jika struktur indeks baru dibuat, ruang disk untuk struktur lama (sumber) dan baru (target) diperlukan dalam file dan grup file yang sesuai. Struktur lama tidak di-dealokasikan sampai transaksi penciptaan indeks dikomitmenkan.

Operasi DDL indeks berikut membuat struktur indeks baru dan memerlukan ruang disk tambahan:

  • CREATE INDEX
  • CREATE INDEX WITH DROP_EXISTING
  • ALTER INDEX REBUILD
  • ALTER TABLE ADD CONSTRAINT (PRIMARY KEY atau UNIQUE)
  • ALTER TABLE DROP CONSTRAINT (PRIMARY KEY atau UNIQUE) ketika batasan didasarkan pada indeks berkluster
  • DROP INDEX MOVE TO (Hanya berlaku untuk indeks berkluster.)

Ruang disk sementara untuk pengurutan

Selain ruang disk yang diperlukan untuk struktur sumber dan target, ruang disk sementara diperlukan untuk pengurutan, kecuali pengoptimal kueri menemukan rencana eksekusi yang tidak memerlukan pengurutan.

Jika pengurutan diperlukan, pengurutan terjadi satu indeks baru pada satu waktu. Misalnya, saat Anda membangun kembali indeks berkluster dan indeks noncluster terkait dalam satu pernyataan, indeks diurutkan satu demi satu. Oleh karena itu, ruang disk sementara tambahan yang diperlukan untuk pengurutan hanya harus sebesar indeks terbesar dalam operasi. Ini hampir selalu indeks berkluster.

Jika opsi SORT_IN_TEMPDB disetel ke ON, indeks terbesar harus sesuai dengan tempdb. Meskipun opsi ini meningkatkan jumlah ruang disk sementara yang digunakan untuk membuat indeks, opsi ini dapat mengurangi waktu yang diperlukan untuk membuat indeks ketika tempdb berada di sekumpulan disk yang berbeda dari database pengguna.

Jika SORT_IN_TEMPDB diatur ke OFF (default) setiap indeks, termasuk indeks yang dipartisi, diurutkan di ruang disk tujuannya; dan hanya ruang disk untuk struktur indeks baru yang diperlukan.

Untuk contoh menghitung ruang disk, lihat Contoh ruang disk indeks.

Ruang disk sementara untuk operasi indeks online

Saat Anda melakukan operasi indeks secara online, ruang disk sementara tambahan diperlukan.

Jika indeks berkluster dibuat, dibangun kembali, atau dihilangkan secara online, indeks non-kluster sementara dibuat untuk memetakan marka buku lama ke marka buku baru. Jika opsi SORT_IN_TEMPDB diatur ke ON, indeks sementara ini dibuat di tempdb. Jika SORT_IN_TEMPDB diatur ke OFF, grup file atau skema partisi yang sama dengan indeks target digunakan. Indeks pemetaan sementara berisi satu rekaman untuk setiap baris dalam tabel, dan kontennya adalah gabungan kolom bookmark lama dan baru, termasuk pengidentifikasi unik dan pengidentifikasi rekaman dan hanya menyertakan satu salinan kolom apa pun yang digunakan di kedua marka buku. Untuk informasi selengkapnya tentang operasi indeks online, lihat Melakukan operasi indeks secara online.

Catatan

Opsi SORT_IN_TEMPDB tidak dapat diatur untuk DROP INDEX pernyataan. Indeks pemetaan sementara selalu dibuat dalam grup file atau skema partisi yang sama dengan indeks target.

Operasi indeks online menggunakan penerapan versi baris untuk mengisolasi operasi indeks dari efek modifikasi yang dilakukan oleh transaksi lain. Ini menghindari kebutuhan untuk meminta kunci berbagi pada baris yang telah dibaca. Operasi pembaruan dan penghapusan pengguna bersamaan selama operasi indeks online memerlukan ruang untuk rekaman versi di tempdb. Untuk informasi selengkapnya, lihat Melakukan operasi indeks secara online .