Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Artikel ini menjelaskan apa itu faktor pengisian dan cara menentukan nilai faktor pengisian untuk indeks menggunakan SQL Server Management Studio atau Transact-SQL.
Opsi faktor pengisian disediakan untuk menyempurnakan penyimpanan dan performa data indeks. Saat indeks dibuat atau dibangun kembali, nilai faktor pengisian menentukan persentase ruang pada setiap halaman tingkat daun untuk diisi dengan data, mempertahankan sisanya di setiap halaman sebagai ruang kosong untuk pertumbuhan di masa mendatang. Misalnya, menentukan nilai faktor pengisian 80 berarti bahwa 20 persen dari setiap halaman tingkat daun akan dibiarkan kosong, memberikan ruang untuk pertumbuhan data. Ruang kosong dicadangkan pada setiap halaman indeks daripada di akhir indeks.
Nilai faktor pengisian adalah persentase dari 1 hingga 100, dan default di seluruh server adalah 0 yang berarti bahwa halaman tingkat daun diisi ke kapasitas.
Note
Nilai faktor pengisian 0 dan 100 sama dalam semua hal.
Dalam Topik Ini
Sebelum Anda mulai:
Untuk menentukan faktor pengisian dalam indeks, menggunakan:
Sebelum Anda mulai
Pertimbangan Performa
Pemisahan halaman
Saat baris baru ditambahkan ke halaman indeks lengkap, Mesin Database memindahkan sekitar setengah baris ke halaman baru untuk memberi ruang bagi baris baru. Reorganisasi ini dikenal sebagai pemisahan halaman. Pemisahan halaman memberi ruang bagi baris baru, tetapi jika terjadi di tengah indeks, perlu waktu untuk melakukan dan merupakan operasi intensif sumber daya. Selain itu, ini dapat menyebabkan fragmentasi yang mengurangi efektivitas pembacaan-maju halaman selama pemindaian indeks besar.
Nilai faktor pengisian yang dipilih dengan baik dapat mengurangi pemisahan halaman dengan menyediakan ruang yang cukup untuk ekspansi indeks saat data ditambahkan di tengah indeks. Jika pemisahan halaman memengaruhi performa, indeks dapat dibangun kembali dengan menggunakan nilai faktor pengisian baru atau yang sudah ada dalam rentang 70-95 persen. Namun, jangan mengurangi faktor pengisian secara tidak perlu atau mengaturnya terlalu rendah. Untuk informasi selengkapnya, lihat Mengoptimalkan pemeliharaan indeks untuk meningkatkan performa kueri dan mengurangi konsumsi sumber daya.
Sebagian besar beban kerja berkinerja optimal dengan faktor pengisian default (100 persen). Dengan faktor pengisian yang berkurang, indeks membutuhkan lebih banyak ruang penyimpanan, memori, dan I/O disk, yang dapat mengurangi performa. Bahkan untuk beban kerja yang intensif dalam penulisan, pembacaan database biasanya lebih banyak daripada penulisan database dalam perbandingan lima hingga sepuluh kali. Oleh karena itu, menentukan faktor pengisian selain default dapat meningkatkan pemanfaatan sumber daya dengan jumlah yang berbanding terbalik dengan pengaturan faktor pengisian.
Misalnya, nilai faktor pengisian 50 menggandakan I/O disk dan memori yang diperlukan untuk membaca dan menyimpan jumlah data yang sama.
Data ditambahkan ke akhir tabel
Faktor pengisian yang lebih rendah dapat mengurangi pemisahan halaman dan meningkatkan performa jika data baru didistribusikan secara merata di seluruh indeks. Namun, jika data baru ditambahkan ke akhir indeks, ruang kosong di halaman indeks mungkin tidak diisi. Misalnya, jika kolom kunci indeks adalah IDENTITY kolom, kunci untuk baris baru selalu meningkat dan baris indeks ditambahkan secara logis ke akhir indeks.
Keamanan
Permissions
Memerlukan izin ALTER pada tabel atau tampilan. Pengguna harus menjadi anggota sysadmin peran server tetap atau db_ddladmin dan db_owner peran database tetap.
Menggunakan SQL Server Management Studio
Untuk menentukan faktor pengisian dengan menggunakan Table Designer
Di Object Explorer, klik tanda plus untuk memperluas database yang berisi tabel tempat Anda ingin menentukan faktor pengisian indeks.
Klik tanda plus untuk memperluas folder Tabel .
Klik kanan tabel tempat Anda ingin menentukan faktor pengisian indeks dan pilih Desain.
Pada menu Desainer Tabel, klik Indeks/Kunci.
Pilih indeks dengan faktor isian yang ingin Anda tentukan.
Perluas Spesifikasi Isian, pilih baris Faktor Isian dan masukkan faktor isian yang Anda inginkan di baris tersebut.
Klik Tutup.
Pada menu File , pilih Simpantable_name.
Untuk menentukan faktor pengisian dalam indeks dengan menggunakan Object Explorer
Di Object Explorer, klik tanda plus untuk memperluas database yang berisi tabel tempat Anda ingin menentukan faktor pengisian indeks.
Klik tanda plus untuk memperluas folder Tabel .
Klik tanda plus untuk memperluas tabel tempat Anda ingin menentukan faktor pengisian indeks.
Klik tanda plus untuk memperluas folder Indeks .
Klik kanan indeks dengan faktor isian yang ingin Anda tentukan dan pilih Properti.
Di bawah Pilih halaman, pilih Opsi.
Di baris Faktor isian, masukkan faktor isian yang Anda inginkan.
Klik OK.
Menggunakan T-SQL
Untuk menentukan faktor pengisian dalam indeks yang ada
Di Object Explorer, sambungkan ke instans Mesin Database.
Pada bilah Standar, klik Kueri Baru.
Salin dan tempel contoh berikut ke dalam jendela kueri dan klik Jalankan. Contoh membangun kembali indeks yang ada dan menerapkan faktor pengisian yang ditentukan selama operasi pembangunan ulang.
USE AdventureWorks2022; GO -- Rebuilds the IX_Employee_OrganizationLevel_OrganizationNode index -- with a fill factor of 80 on the HumanResources.Employee table. ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee REBUILD WITH (FILLFACTOR = 80); GO
Cara lain untuk menentukan faktor pengisian dalam indeks
Di Object Explorer, sambungkan ke instans Mesin Database.
Pada bilah Standar, klik Kueri Baru.
Salin dan tempel contoh berikut ke dalam jendela kueri dan klik Jalankan.
USE AdventureWorks2022; GO -- Drops and re-creates the IX_Employee_OrganizationLevel_OrganizationNode index -- on the HumanResources.Employee table with a fill factor of 80. CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee (OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON, FILLFACTOR = 80); GO
Untuk informasi selengkapnya, lihat ALTER INDEX (T-SQL).