Saat ini saya sedang menjalankan skrip yang melakukan INDEXDEFRAG DBCC pada setiap tabel dalam database SQL Server 2005, satu tabel pada satu waktu. Menggunakan DBCC DBREINDEX dan bukannya INDEXDEFRAG bukanlah suatu pilihan, karena kendala ruang dan persyaratan waktu aktif.
Saya perhatikan bahwa perlu waktu lama untuk tabel tertentu didefragmentasi. Sebagai contoh jika saya memeriksa tampilan manajemen dinamis "sys.dm_exec_requests", saya dapat melihat bahwa INDEXDEFRAG berikut sedang mengaduk-aduk indeks berkerumun tabel yang memiliki table_id dari 829610394:
DBCC INDEXDEFRAG (0, 829610394, 1)
Saya tahu bahwa itu akan lama sebelum proses defragmentasi selesai. Mengesampingkan fakta bahwa skrip yang saat ini berjalan pada akhirnya akan mendefrag semua tabel, apakah ada salahnya saya secara manual menjalankan DBCC INDEXDEFRAG lain pada indeks berkerumun di tabel lain saat perintah saat ini dijalankan? Apakah kedua tabel sebenarnya akan didefragmentasi pada saat yang sama jika saya melakukan ini?
sumber
Perhatikan bahwa DBCC INDEXDEFRAG & DBREINDEX sudah tidak digunakan lagi dan diganti oleh ALTER INDEX:
Sedangkan untuk menjalankan dua secara bersamaan, itu tergantung pada tata letak file Anda. Jika mereka semua pada disk yang sama, Anda mungkin akan memperlambat masing-masing karena mereka akan bertarung satu sama lain untuk I / O. Anda akan lebih baik jika hanya REORG atau REBUILD jika perlu. Lihatlah skrip Michelle Ufford di sini untuk solusi otomatis: http://sqlfool.com/2010/04/index-defrag-script-v4-0/
sumber