Contoh Ruang Disk Indeks

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Setiap kali indeks dibuat, dibangun kembali, atau dihilangkan, ruang disk untuk struktur (sumber) lama dan baru (target) diperlukan dalam file dan grup file yang sesuai. Struktur lama tidak dibatalkan alokasinya hingga transaksi pembuatan indeks diterapkan. Ruang disk sementara tambahan untuk operasi pengurutan mungkin juga diperlukan. Untuk informasi selengkapnya, lihat Persyaratan Ruang Disk untuk Operasi DDL Indeks.

Dalam contoh ini, persyaratan ruang disk untuk membuat indeks berkluster ditentukan.

Asumsikan kondisi berikut benar sebelum membuat indeks berkluster:

  • Tabel (timbunan) yang ada berisi 1 juta baris. Setiap baris memiliki panjang 200 byte.

  • Indeks nonclustered A berisi 1 juta baris. Setiap baris memiliki panjang 50 byte.

  • Indeks nonclustered B berisi 1 juta baris. Setiap baris memiliki panjang 80 byte.

  • Opsi memori pembuatan indeks diatur ke 2 MB.

  • Nilai faktor pengisian 80 digunakan untuk semua indeks yang ada dan baru. Ini berarti halamannya 80 persen penuh.

    Catatan

    Sebagai hasil dari pembuatan indeks berkluster, dua indeks non-kluster harus dibangun kembali untuk mengganti indikator baris dengan kunci indeks berkluster baru.

Perhitungan Ruang Disk untuk Operasi Indeks Offline

Dalam langkah-langkah berikut, ruang disk sementara yang akan digunakan selama operasi indeks dan ruang disk permanen untuk menyimpan indeks baru dihitung. Perhitungan yang ditampilkan adalah perkiraan; hasil dibulatkan ke atas dan hanya mempertimbangkan ukuran tingkat daun indeks. Tilde (~) digunakan untuk menunjukkan perkiraan perhitungan.

  1. Tentukan ukuran struktur sumber.

    Timbunan: 1 juta * 200 byte ~ 200 MB

    Indeks non-kluster A: 1 juta * 50 byte / 80% ~ 63 MB

    Indeks non-kluster B: 1 juta * 80 byte / 80% ~ 100 MB

    Ukuran total struktur yang ada: 363 MB

  2. Tentukan ukuran struktur indeks target. Asumsikan bahwa kunci berkluster baru panjangnya 24 byte termasuk pengidentifikasi unik. Indikator baris (panjang 8 byte) dalam kedua indeks non-kluster akan digantikan oleh kunci berkluster ini.

    Indeks berkluster: 1 juta * 200 byte / 80% ~ 250 MB

    Indeks non-kluster A: 1 juta * (50 - 8 + 24) byte / 80% ~ 83 MB

    Indeks non-kluster B: 1 juta * (80 - 8 + 24) byte / 80% ~ 120 MB

    Ukuran total struktur baru: 453 MB

    Total ruang disk yang diperlukan untuk mendukung struktur sumber dan target selama durasi operasi indeks adalah 816 MB (363 + 453). Ruang yang saat ini dialokasikan untuk struktur sumber akan dibatalkan alokasinya setelah operasi indeks dilakukan.

  3. Tentukan ruang disk sementara tambahan untuk pengurutan.

    Persyaratan ruang ditampilkan untuk pengurutan dalam tempdb (dengan SORT_IN_TEMPDB diatur ke AKTIF) dan pengurutan di lokasi target (dengan SORT_IN_TEMPDB diatur ke NONAKTIF).

    1. Ketika SORT_IN_TEMPDB diatur ke AKTIF, tempdb harus memiliki ruang disk yang memadai untuk menahan indeks terbesar (1 juta * 200 byte ~ 200 MB). Faktor pengisian tidak dipertimbangkan dalam operasi pengurutan.

      Ruang disk tambahan (di lokasi tempdb ) sama dengan nilai Konfigurasi Konfigurasi Server buat indeks = 2 MB.

      Ukuran total ruang disk sementara dengan SORT_IN_TEMPDB diatur ke AKTIF ~ 202 MB.

    2. Ketika SORT_IN_TEMPDB diatur ke NONAKTIF (default), ruang disk 250 MB yang sudah dipertimbangkan untuk indeks baru di langkah 2 digunakan untuk pengurutan.

      Ruang disk tambahan (di lokasi target) sama dengan nilai Konfigurasi Konfigurasi Server buat indeks = 2 MB.

      Ukuran total ruang disk sementara dengan SORT_IN_TEMPDB diatur ke NONAKTIF = 2 MB.

Dengan menggunakan tempdb, total 1018 MB (816 + 202) akan diperlukan untuk membuat indeks berkluster dan non-kluster. Meskipun menggunakan tempdb meningkatkan jumlah ruang disk sementara yang digunakan untuk membuat indeks, ini dapat mengurangi waktu yang diperlukan untuk membuat indeks ketika tempdb berada pada kumpulan disk yang berbeda dari database pengguna. Untuk informasi selengkapnya tentang menggunakan tempdb, lihat Opsi SORT_IN_TEMPDB Untuk Indeks.

Tanpa menggunakan tempdb, total 818 MB (816+ 2) akan diperlukan untuk membuat indeks berkluster dan non-kluster.

Perhitungan Ruang Disk untuk Operasi Indeks Berkluster Online

Saat Anda membuat, menghilangkan, atau membangun kembali indeks berkluster secara online, ruang disk tambahan diperlukan untuk membangun dan memelihara indeks pemetaan sementara. Indeks pemetaan sementara ini berisi satu rekaman untuk setiap baris dalam tabel, dan isinya adalah gabungan kolom bookmark lama dan baru.

Untuk menghitung ruang disk yang diperlukan untuk operasi indeks berkluster online, ikuti langkah-langkah yang ditunjukkan untuk operasi indeks offline dan tambahkan hasil tersebut ke hasil langkah berikut.

  • Tentukan ruang untuk indeks pemetaan sementara.

    Dalam contoh ini, bookmark lama adalah ID baris (RID) dari tumpukan (8 byte) dan marka buku baru adalah kunci pengklusteran (24 byte termasuk pengidentifikasi unik). Tidak ada kolom yang tumpang tindih antara marka buku lama dan baru.

    Ukuran indeks pemetaan sementara = 1 juta * (8 byte + 24 byte) / 80% ~ 40 MB.

    Ruang disk ini harus ditambahkan ke ruang disk yang diperlukan di lokasi target jika SORT_IN_TEMPDB diatur ke NONAKTIF, atau ke tempdb jika SORT_IN_TEMPDB diatur ke AKTIF.

Untuk informasi selengkapnya tentang indeks pemetaan sementara, lihat Persyaratan Ruang Disk untuk Operasi DDL Indeks.

Ringkasan Ruang Disk

Tabel berikut ini meringkas hasil perhitungan ruang disk.

Operasi indeks Persyaratan ruang disk untuk lokasi struktur berikut
Operasi indeks offline dengan SORT_IN_TEMPDB = AKTIF Total ruang selama operasi: 1018 MB

-Tabel dan indeks yang ada: 363 MB*

-
tempdb: 202 MB*

-Indeks baru: 453 MB

Total ruang yang diperlukan setelah operasi: 453 MB
Operasi indeks offline dengan SORT_IN_TEMPDB = NONAKTIF Total ruang selama operasi: 816 MB

-Tabel dan indeks yang ada: 363 MB*

-Indeks baru: 453 MB

Total ruang yang diperlukan setelah operasi: 453 MB
Operasi indeks online dengan SORT_IN_TEMPDB = AKTIF Total ruang selama operasi: 1058 MB

-Tabel dan indeks yang ada: 363 MB*

-
tempdb (termasuk indeks pemetaan): 242 MB*

-Indeks baru: 453 MB

Total ruang yang diperlukan setelah operasi: 453 MB
Operasi indeks online dengan SORT_IN_TEMPDB = NONAKTIF Total ruang selama operasi: 856 MB

-Tabel dan indeks yang ada: 363 MB*

-Indeks pemetaan sementara: 40 MB*

-Indeks baru: 453 MB

Total ruang yang diperlukan setelah operasi: 453 MB

*Ruang ini dibatalkan alokasinya setelah operasi indeks dilakukan.

Contoh ini tidak mempertimbangkan ruang disk sementara tambahan yang diperlukan dalam tempdb untuk rekaman versi yang dibuat oleh operasi pembaruan dan penghapusan pengguna bersamaan.

Persyaratan Ruang Disk untuk Operasi DDL Indeks

Ruang Disk Log Transaksi untuk Operasi Indeks