Persyaratan Ruang Disk untuk Operasi DDL Indeks

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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. Topik 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:

  • UBAH REORGANISASI INDEKS; namun, ruang log diperlukan.

  • DROP INDEX saat Anda menjatuhkan indeks nonclustered.

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

  • CREATE TABLE (KUNCI PRIMER atau batasan UNIK)

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 dibatalkan alokasinya hingga transaksi pembuatan indeks diterapkan.

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

  • CREATE INDEX

  • BUAT INDEKS DENGAN DROP_EXISTING

  • UBAH INDEKS MEMBANGUN KEMBALI

  • UBAH BATASAN TAMBAHKAN TABEL (KUNCI PRIMER atau UNIK)

  • ALTER TABLE DROP CONSTRAINT (PRIMARY KEY atau UNIQUE) saat 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 diatur ke AKTIF, 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 pada sekumpulan disk yang berbeda dari database pengguna.

Jika SORT_IN_TEMPDB diatur ke NONAKTIF (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 AKTIF, indeks sementara ini dibuat dalam tempdb. Jika SORT_IN_TEMPDB diatur ke NONAKTIF, 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 Online.

Catatan

Opsi SORT_IN_TEMPDB tidak dapat diatur untuk pernyataan DROP INDEX. 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 dalam tempdb. Untuk informasi selengkapnya, lihat Melakukan Operasi Indeks Online .

Contoh Ruang Disk Indeks

Ruang Disk Log Transaksi untuk Operasi Indeks

Memperkirakan Ukuran Tabel

Memperkirakan Ukuran Indeks Berkluster

Memperkirakan Ukuran Indeks Nonclustered

Memperkirakan Ukuran Timbunan

BUAT INDEKS (Transact-SQL)

ALTER INDEX (Transact-SQL)

DROP INDEX (Transact-SQL)

Tentukan Faktor Isian untuk Indeks

Mengatur ulang dan Membangun Ulang Indeks