Saya ingin membuat kondisi indeks buruk secara sengaja pada database uji SQL Server 2017 yang saya miliki, hanya untuk lebih memahami skrip pemeliharaan ini? Indeks SQL Server dan Pemeliharaan Statistik
Apakah ada cara cepat / otomatis untuk kompromi integritas indeks atau meningkatkan fragmentasi indeks? Apakah Anda tahu sumber daya bermanfaat yang dapat saya lihat untuk mencapai ini?
sql-server
index
clustered-index
mororo
sumber
sumber
DBCC SHRINKDATABASE ([yourNONProdDB])
Jawaban:
Salah satu cara cepat yang dapat saya bayangkan adalah membuat tabel dengan
UNIQUEIDENTIFIER
sebagai kunci utama dan memasukkan banyak nilai acak. Ini dapat dicapai dengan menggunakan skrip ini:Ini akan menghasilkan jutaan baris.
Mengetahui hal
NEWID()
itu tidak menjamin pemesanan apa pun, SQL Server harus menyisipkan titik acak dalam tabel - itu akan memecah-mecah kunci utama.sumber
INSERT dbo.Tests (Id) SELECT NEWID(); GO 1000000;
- ini jelas akan membutuhkan lebih banyak waktu. Lihat pastebin.com/SVLtiRnP untuk contoh yang saya ajukan bersama untuk pertanyaan lain. Menggunakan baris panjang variabel dan memperbaruinya secara acak mungkin lebih efisien menghasilkan fragmentasi?Saya ingin membuat beberapa indeks "Jelek", jadi saya melakukan yang berikut. Itu bekerja dengan baik
sumber
Biasanya, indeks fragmentasi terjadi ketika ada
Update
atauInsert
operasi terjadi di atas meja.Jika Anda ingin dengan cepat menghasilkan masalah (Indeks fragmentasi), buat
Index
di dalam tabel pengujian Anda dengan lebih sedikitfill factor
dan lakukan yang beratUpdate
atauInsert
operasi pada tabel itu. Anda dapat bekerja dengan skrip ini ..sumber
Anda juga dapat menggunakan
CRYPT_GEN_RANDOM
seperti yang saya lakukan dalam jawaban ini: Filter Schema In Index Optimize Script .Anda dapat memasukkan data dalam kolom angka yang memiliki indeks untuk memecahnya seperti ini:
Anda juga dapat memperbarui data atau mengonversi ke string alih-alih nomor jika itu yang Anda butuhkan.
sumber