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
Mengembalikan statistik akses, penguncian, dan kait data tingkat bawah untuk setiap partisi tabel atau indeks dalam database.
Syntax
sys.dm_db_index_operational_stats (
{ database_id | NULL | 0 | DEFAULT }
, { object_id | NULL | 0 | DEFAULT }
, { index_id | 0 | NULL | -1 | DEFAULT }
, { partition_number | NULL | 0 | DEFAULT }
)
Argumen
{ database_id | NOL | 0 | DEFAULT }
ID database.
database_id kecil. Input yang valid adalah nomor ID database, NULL, 0, atau DEFAULT. Defaultnya adalah 0.
NULL, 0, dan DEFAULT merupakan nilai yang setara dalam konteks ini.
Tentukan NULL untuk mengembalikan informasi untuk semua database dalam instans SQL Server. Jika Anda menentukan NULL untuk database_id, Anda juga harus menentukan NULL untuk object_id, index_id, dan partition_number.
Fungsi bawaan DB_ID dapat ditentukan.
{ object_id | NOL | 0 | DEFAULT }
ID objek tabel atau lihat indeks aktif. object_id adalah int.
Input yang valid adalah nomor ID tabel dan tampilan, NULL, 0, atau DEFAULT. Defaultnya adalah 0.
NULL, 0, dan DEFAULT merupakan nilai yang setara dalam konteks ini.
Tentukan NULL untuk mengembalikan informasi untuk semua tabel dan tampilan dalam database yang ditentukan. Jika Anda menentukan NULL untuk object_id, Anda juga harus menentukan NULL untuk index_id dan partition_number.
{ index_id | 0 | NOL | -1 | DEFAULT }
ID indeks.
index_idint. Input yang valid adalah nomor ID indeks, 0 jika object_id adalah tumpukan, NULL, -1, atau DEFAULT. Defaultnya adalah -1.
NULL, -1, dan DEFAULT merupakan nilai yang setara dalam konteks ini.
Tentukan NULL untuk mengembalikan informasi untuk semua indeks untuk tabel atau tampilan dasar. Jika Anda menentukan NULL untuk index_id, Anda juga harus menentukan NULL untuk partition_number.
{ partition_number | NOL | 0 | DEFAULT }
Nomor partisi dalam objek. 0.
NULL, 0, dan DEFAULT merupakan nilai yang setara dalam konteks ini.
Tentukan NULL untuk mengembalikan informasi untuk semua partisi indeks atau tumpukan.
partition_number berbasis 1. Indeks atau tumpukan yang tidak dipartisi telah partition_number diatur ke 1.
Tabel dikembalikan
| Nama kolom | Jenis data | Deskripsi |
|---|---|---|
database_id |
smallint | ID Database. Di Azure SQL Database, nilainya unik dalam satu database atau kumpulan elastis, tetapi tidak dalam server logis. |
object_id |
int | ID tabel atau tampilan. Untuk informasi selengkapnya, lihat sys.objects. |
index_id |
int | ID indeks atau timbunan. Untuk informasi selengkapnya, lihat sys.indexes. |
partition_number |
int | Nomor partisi berbasis 1 dalam indeks atau timbunan. Untuk informasi selengkapnya, lihat sys.partitions. |
hobt_id |
bigint | ID timbunan data atau set baris pohon B yang melacak data internal untuk indeks penyimpan kolom.NULL - Ini bukan kumpulan baris penyimpan kolom internal.Untuk informasi selengkapnya, lihat sys.internal_partitions. |
leaf_insert_count |
bigint | Jumlah kumulatif sisipan tingkat daun. Untuk informasi selengkapnya tentang tingkat indeks, lihat Arsitektur indeks dan panduan desain. |
leaf_delete_count |
bigint | Jumlah kumulatif penghapusan tingkat daun.
leaf_delete_count hanya ditambahkan untuk catatan yang dihapus yang tidak ditandai sebagai hantu terlebih dahulu. Untuk rekaman yang dihapus yang dihantui terlebih dahulu, leaf_ghost_count dinaikkan sebagai gantinya. |
leaf_update_count |
bigint | Jumlah kumulatif pembaruan tingkat daun. |
leaf_ghost_count |
bigint | Jumlah kumulatif baris tingkat daun yang ditandai sebagai dihapus, tetapi belum dihapus. Penghitungan ini tidak termasuk rekaman yang segera dihapus tanpa ditandai sebagai hantu. Utas pembersihan menghapus baris hantu pada interval yang ditetapkan. Nilai ini tidak termasuk baris hantu yang dipertahankan karena transaksi rekam jepret yang belum diselesaikan. |
nonleaf_insert_count |
bigint | Jumlah kumulatif sisipan di atas tingkat daun. Hanya berlaku untuk indeks pohon B. 0 untuk timbunan atau indeks penyimpan kolom. |
nonleaf_delete_count |
bigint | Jumlah penghapusan kumulatif di atas tingkat daun. Hanya berlaku untuk indeks pohon B. 0 untuk timbunan atau indeks penyimpan kolom. |
nonleaf_update_count |
bigint | Jumlah pembaruan kumulatif di atas tingkat daun. Hanya berlaku untuk indeks pohon B. 0 untuk timbunan atau indeks penyimpan kolom. |
leaf_allocation_count |
bigint | Jumlah kumulatif alokasi halaman tingkat daun dalam indeks atau timbunan. Untuk indeks, alokasi halaman sesuai dengan pemisahan halaman. |
nonleaf_allocation_count |
bigint | Jumlah kumulatif alokasi halaman yang disebabkan oleh pemisahan halaman di atas tingkat daun. Hanya berlaku untuk indeks pohon B. 0 untuk timbunan atau indeks penyimpan kolom. |
leaf_page_merge_count |
bigint | Jumlah kumulatif penggabungan halaman pada tingkat daun. Selalu 0 untuk indeks penyimpan kolom. |
nonleaf_page_merge_count |
bigint | Jumlah kumulatif penggabungan halaman di atas tingkat daun. Hanya berlaku untuk indeks pohon B. 0 untuk timbunan atau indeks penyimpan kolom. |
range_scan_count |
bigint | Jumlah kumulatif pemindaian rentang dan tabel dimulai pada indeks atau timbunan. |
singleton_lookup_count |
bigint | Jumlah kumulatif pengambilan baris tunggal dari indeks atau timbunan. |
forwarded_fetch_count |
bigint | Jumlah baris yang diambil melalui rekaman penerusan. Hanya berlaku untuk tumpukan, 0 untuk indeks pohon B. |
lob_fetch_in_pages |
bigint | Jumlah kumulatif halaman objek besar (LOB) yang diambil dari unit alokasi LOB_DATA . Halaman-halaman ini berisi data yang disimpan dalam kolom jenis text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, dan json. Untuk informasi selengkapnya, lihat Jenis data. |
lob_fetch_in_bytes |
bigint | Jumlah kumulatif byte data LOB yang diambil. |
lob_orphan_create_count |
bigint | Jumlah kumulatif nilai LOB yatim piatu yang dibuat untuk operasi massal. Berlaku untuk tumpukan dan indeks berkluster B-tree saja, 0 untuk indeks nonclustered dan columnstore. |
lob_orphan_insert_count |
bigint | Jumlah kumulatif nilai LOB yatim piatu yang dimasukkan selama operasi massal. Berlaku untuk tumpukan dan indeks berkluster B-tree saja, 0 untuk indeks nonclustered dan columnstore. |
row_overflow_fetch_in_pages |
bigint | Jumlah kumulatif halaman data luapan baris yang diambil dari unit alokasi ROW_OVERFLOW_DATA .Halaman ini berisi data yang disimpan dalam kolom jenis varchar(n), , nvarchar(n)varbinary(n), dan sql_variant untuk baris besar. |
row_overflow_fetch_in_bytes |
bigint | Jumlah kumulatif byte data luapan baris yang diambil. |
column_value_push_off_row_count |
bigint | Jumlah kumulatif nilai kolom untuk data LOB dan data luapan baris yang didorong dari baris untuk membuat baris yang disisipkan atau diperbarui pas dalam halaman. |
column_value_pull_in_row_count |
bigint | Jumlah kumulatif nilai kolom untuk data LOB dan data luapan baris yang ditarik berturut-turut. Ini terjadi ketika operasi pembaruan membebaskan ruang dalam rekaman dan memberikan kesempatan untuk menarik satu atau beberapa nilai off-row dari LOB_DATA unit atau ROW_OVERFLOW_DATA alokasi ke IN_ROW_DATA unit alokasi. |
row_lock_count |
bigint | Jumlah kumulatif kunci baris yang diminta. |
row_lock_wait_count |
bigint | Berapa kali Mesin Database menunggu pada kunci baris. |
row_lock_wait_in_ms |
bigint | Jumlah total milidetik Mesin Database menunggu pada kunci baris. |
page_lock_count |
bigint | Jumlah kumulatif kunci halaman yang diminta. |
page_lock_wait_count |
bigint | Berapa kali Mesin Database menunggu pada kunci halaman. |
page_lock_wait_in_ms |
bigint | Jumlah total milidetik Mesin Database yang menunggu pada kunci halaman. |
index_lock_promotion_attempt_count |
bigint | Berapa kali Mesin Database mencoba meningkatkan kunci. |
index_lock_promotion_count |
bigint | Jumlah kumulatif kali Mesin Database meningkatkan kunci. |
page_latch_wait_count |
bigint | Berapa kali Mesin Database menunggu untuk memperoleh kait. |
page_latch_wait_in_ms |
bigint | Jumlah kumulatif milidetik Mesin Database menunggu untuk memperoleh kait. |
page_io_latch_wait_count |
bigint | Frekuensi kumulatif Mesin Database menunggu pada halaman kait I/O. |
page_io_latch_wait_in_ms |
bigint | Jumlah kumulatif milidetik Mesin Database menunggu pada kait I/O halaman. |
tree_page_latch_wait_count |
bigint | Subset yang page_latch_wait_count hanya mencakup halaman pohon B tingkat atas. Selalu 0 untuk indeks timbunan atau penyimpan kolom. |
tree_page_latch_wait_in_ms |
bigint | Subset yang page_latch_wait_in_ms hanya mencakup halaman pohon B tingkat atas. Selalu 0 untuk indeks timbunan atau penyimpan kolom. |
tree_page_io_latch_wait_count |
bigint | Subset yang page_io_latch_wait_count hanya mencakup halaman pohon B tingkat atas. Selalu 0 untuk indeks timbunan atau penyimpan kolom. |
tree_page_io_latch_wait_in_ms |
bigint | Subset yang page_io_latch_wait_in_ms hanya mencakup halaman pohon B tingkat atas. Selalu 0 untuk indeks timbunan atau penyimpan kolom. |
page_compression_attempt_count |
bigint | Jumlah halaman yang dievaluasi untuk PAGE kompresi tingkat untuk partisi tertentu dari tabel, indeks, atau tampilan yang diindeks. Termasuk halaman yang tidak dikompresi karena penghematan yang signifikan tidak dapat dicapai. Selalu 0 untuk indeks penyimpan kolom. |
page_compression_success_count |
bigint | Jumlah halaman data yang dikompresi dengan menggunakan PAGE kompresi untuk partisi tertentu dari tabel, indeks, atau tampilan yang diindeks. Selalu 0 untuk indeks penyimpan kolom. |
version_generated_inrow |
bigint | Jumlah kumulatif versi dalam baris dengan payload yang dihasilkan dalam tumpukan atau pohon B untuk operasi pembaruan, penggabungan, atau insert-over-ghost. Versi dalam baris menyimpan gambar baris lama (atau berbeda) langsung di baris, menghindari perjalanan ke penyimpanan versi. Jumlah ini adalah superset yang mencakup versi yang dihitung oleh insert_over_ghost_version_inrow. Untuk informasi selengkapnya tentang versi dalam baris dan di luar baris, lihat Ruang yang digunakan oleh penyimpanan versi persisten (PVS). |
version_generated_offrow |
bigint | Jumlah kumulatif versi yang didorong ke penyimpanan off-row untuk operasi heap, B-tree, atau LOB delete, update, merge, atau insert-over-ghost. Versi di luar baris dihasilkan ketika gambar baris lama tidak dapat disimpan dalam baris. Jumlah ini adalah superset yang mencakup versi yang dihitung oleh ghost_version_offrow dan insert_over_ghost_version_offrow. |
ghost_version_inrow |
bigint | Jumlah kumulatif kali penghapusan atau pembaruan (dilakukan sebagai penghapusan diikuti dengan sisipan) menandai baris yang ada sebagai hantu dengan informasi penerapan versi dalam baris. Versi dalam baris hanya menyimpan tanda waktu transaksi dan payload panjang nol, sehingga membatalkan penghapusan hanya memerlukan unghosting baris. |
ghost_version_offrow |
bigint | Jumlah kumulatif kali penghapusan atau pembaruan (dilakukan sebagai penghapusan diikuti dengan penyisipan) mendorong data kolom baris atau LOB yang ada ke penyimpanan di luar baris, meninggalkan stub di baris untuk informasi penerapan versi. Penghitung ini dinaikkan bersama-sama selama version_generated_offrow operasi hantu. |
insert_over_ghost_version_inrow |
bigint | Jumlah kumulatif versi dalam baris dengan payload yang dihasilkan untuk operasi insert-over-ghost B-tree. Insert-over-ghost terjadi ketika baris baru dimasukkan ke dalam slot rekaman yang sebelumnya dihantui, baik dari penghapusan eksplisit diikuti oleh sisipan, atau dari pembaruan atau penggabungan yang diimplementasikan sebagai penghapusan diikuti oleh sisipan. Penghitung ini adalah subset dari version_generated_inrow. |
insert_over_ghost_version_offrow |
bigint | Jumlah kumulatif kali baris hantu yang ada didorong ke penyimpanan off-row selama operasi insert-over-ghost B-tree, meninggalkan rintangan di baris yang baru dimasukkan untuk informasi penerapan versi. Penghitung ini adalah subset dari version_generated_offrow. |
compaction_attempt_count |
bigint | Jumlah kumulatif upaya pemadatan otomatis indeks. Untuk informasi selengkapnya, lihat Pemadatan indeks otomatis (pratinjau). |
compaction_complete_count |
bigint | Jumlah kumulatif pemadatan otomatis indeks yang telah selesai. |
compaction_skip_count |
bigint | Jumlah kumulatif pemadatan otomatis indeks yang dilewati. Untuk informasi selengkapnya tentang alasan lewati, lihat Menggunakan peristiwa yang diperpanjang untuk memantau statistik pemadatan. |
compaction_ineligible_count |
bigint | Jumlah kumulatif upaya pemadatan dilewati karena halaman tidak memenuhi syarat untuk pemadatan otomatis. |
compaction_failure_count |
bigint | Jumlah kumulatif upaya pemadatan yang gagal. |
compaction_row_move_count |
bigint | Jumlah kumulatif baris yang dipindahkan dari satu halaman ke halaman lain sebagai bagian dari pemadatan otomatis. |
compaction_page_deallocation_count |
bigint | Jumlah kumulatif halaman yang dibatalkan alokasi setelah memindahkan semua baris ke halaman lain. |
Note
Dokumentasi biasanya menggunakan istilah pohon B ketika merujuk pada indeks. Dalam indeks rowstore, Mesin Database mengimplementasikan pohon B+. Ini tidak berlaku untuk indeks penyimpan kolom atau indeks pada tabel yang dioptimalkan memori. Untuk informasi selengkapnya, lihat panduan arsitektur dan desain indeks SQL Server dan Azure SQL.
Keterangan
Fungsi ini tidak mengembalikan informasi tentang indeks pada tabel yang dioptimalkan memori. Untuk informasi tentang indeks pada tabel yang dioptimalkan memori, lihat sys.dm_db_xtp_index_stats.
Fungsi ini tidak menerima parameter yang berkorelasi dari CROSS APPLY dan OUTER APPLY.
Anda dapat menggunakan sys.dm_db_index_operational_stats untuk melacak statistik operasi baca dan tulis data, dan kunci, latch halaman, dan statistik latch I/O halaman untuk tabel, indeks, atau partisi. Anda dapat mengidentifikasi tabel, indeks, dan partisi yang mengalami aktivitas atau ketidakcocokan yang signifikan.
Statistik disediakan pada tingkat partisi dan bersifat aditif. Ini berarti Anda bisa mendapatkan statistik tingkat indeks atau tingkat tabel dengan menulis kueri agregasi di T-SQL. Untuk informasi selengkapnya, lihat Contoh pemindaian indeks dan pencarian untuk semua tabel .
Untuk menganalisis statistik operasi baca dan tulis untuk tabel, indeks, atau partisi, gunakan kolom ini:
leaf_insert_countleaf_delete_countleaf_update_countleaf_ghost_countrange_scan_countsingleton_lookup_count
Untuk mengidentifikasi ketidakcocokan kait, gunakan kolom ini:
page_latch_wait_countpage_latch_wait_in_ms
Untuk mengidentifikasi pertikaian kunci, gunakan kolom ini:
row_lock_countpage_lock_countrow_lock_wait_in_mspage_lock_wait_in_ms
Untuk menganalisis statistik I/O fisik, gunakan kolom ini:
page_io_latch_wait_countpage_io_latch_wait_in_ms
Keterangan kolom
Nilai dalam kolom lob_fetch_in_pages dan lob_fetch_in_bytes bisa lebih besar dari nol untuk indeks nol yang berisi satu atau beberapa kolom LOB sebagai kolom yang disertakan. Untuk informasi selengkapnya, lihat Membuat indeks dengan kolom yang disertakan. Demikian pula, nilai dalam kolom row_overflow_fetch_in_pages dan row_overflow_fetch_in_bytes dapat lebih besar dari 0 untuk indeks nonclustered jika indeks berisi baris besar.
Cara penghitung dalam cache metadata diatur ulang
Data yang dikembalikan oleh sys.dm_db_index_operational_stats hanya ada selama objek cache metadata yang mewakili tumpukan atau pohon B tersedia. Data ini tidak persisten. Ini berarti Anda tidak dapat menggunakan penghitung ini untuk menentukan secara meyakinkan apakah indeks digunakan atau tidak, atau kapan indeks terakhir digunakan. Sebagai gantinya, gunakan sys.dm_db_index_usage_stats.
Nilai untuk setiap kolom numerik diatur ke nol setiap kali metadata untuk tumpukan atau pohon B dibawa ke dalam cache metadata. Statistik diakumulasikan hingga objek cache dihapus dari cache metadata. Timbunan aktif atau pohon B umumnya memiliki metadatanya di cache, dan jumlah kumulatif mencerminkan aktivitas sejak instans Mesin Database terakhir dimulai. Metadata untuk tumpukan atau B-tree yang kurang aktif mungkin bergerak masuk dan keluar dari cache saat digunakan, terutama jika instans Database Engine berada di bawah tekanan memori. Akibatnya, statistik operasional indeks terkadang tidak tercermin dalam sys.dm_db_index_operational_stats. Hal ini tidak umum.
Statistik dihapus dari cache dan tidak lagi dilaporkan oleh fungsi ini jika tabel atau indeks dihilangkan, atau jika partisi terpotong. Operasi DDL lainnya terhadap indeks dapat menyebabkan nilai statistik diatur ulang ke nol.
Menggunakan fungsi sistem untuk menentukan nilai parameter
Anda dapat menggunakan fungsi Transact-SQL DB_ID dan OBJECT_ID untuk menentukan nilai untuk parameter database_id dan object_id . Namun, meneruskan nilai yang tidak valid ke fungsi ini dapat menyebabkan hasil yang tidak diinginkan. Selalu pastikan bahwa ID yang valid dikembalikan saat Anda menggunakan DB_ID atau OBJECT_ID. Untuk informasi selengkapnya, lihat Mengembalikan informasi untuk tabel tertentu.
Permissions
Memerlukan izin berikut:
CONTROLizin pada objek yang ditentukan dalam databaseVIEW DATABASE STATEatauVIEW DATABASE PERFORMANCE STATEizin untuk mengembalikan informasi tentang semua objek dalam database yang ditentukan, ketika nilai for@object_idtidak ditentukan.VIEW SERVER STATEatauVIEW SERVER PERFORMANCE STATEizin untuk mengembalikan informasi tentang semua database, ketika nilai for@database_idtidak ditentukan.
VIEW DATABASE STATE Memberikan atau VIEW SERVER PERFORMANCE STATE mengizinkan semua objek dalam database dikembalikan, terlepas dari izin apa pun CONTROL yang ditolak pada objek tertentu.
VIEW DATABASE STATE Menolak atau VIEW SERVER PERFORMANCE STATE melarang semua objek dalam database untuk dikembalikan, terlepas dari izin apa pun CONTROL yang diberikan pada objek tertentu.
Untuk informasi selengkapnya, lihat Tampilan dan fungsi manajemen dinamis sistem.
Examples
Mengembalikan informasi untuk tabel tertentu
Contoh berikut mengembalikan informasi untuk semua indeks dan partisi Person.Address tabel dalam database AdventureWorks2025.
Important
Saat Anda menggunakan fungsi DB_ID Transact-SQL dan OBJECT_ID untuk mengembalikan nilai parameter, selalu pastikan bahwa ID yang valid ditampilkan. Jika database atau nama objek tidak dapat ditemukan, seperti saat tidak ada atau salah dieja, kedua fungsi mengembalikan NULL. Fungsi ini sys.dm_db_index_operational_stats menafsirkan NULL sebagai nilai kartubebas yang menentukan semua database atau semua objek. Karena ini bisa menjadi operasi yang tidak disengaja, contoh di bagian ini menunjukkan cara aman untuk menentukan DATABASE dan ID objek.
DECLARE @db_id AS INT = DB_ID(N'AdventureWorks2025');
DECLARE @object_id AS INT = OBJECT_ID(N'AdventureWorks2025.Person.Address');
SELECT *
FROM sys.dm_db_index_operational_stats(@db_id, @object_id, NULL, NULL)
WHERE @db_id IS NOT NULL
AND @object_id IS NOT NULL;
Mengembalikan informasi untuk semua tabel dan indeks
Contoh berikut mengembalikan informasi untuk semua tabel dan indeks pada instans Mesin Database.
SELECT *
FROM sys.dm_db_index_operational_stats(NULL, NULL, NULL, NULL);
Pemindaian indeks dan pencarian untuk semua tabel
Contoh berikut mengagregasi data tingkat partisi untuk mengembalikan pencarian indeks dan memindai statistik untuk semua tabel dalam database saat ini.
SELECT OBJECT_SCHEMA_NAME(object_id) AS schema_name,
OBJECT_NAME(object_id) AS object_name,
COUNT(DISTINCT(index_id)) AS index_count,
COUNT(DISTINCT(partition_number)) AS partition_count,
SUM(range_scan_count) AS index_scan_count,
SUM(singleton_lookup_count) AS index_seek_count
FROM sys.dm_db_index_operational_stats(DB_ID(), DEFAULT, DEFAULT, DEFAULT)
GROUP BY OBJECT_SCHEMA_NAME(object_id),
OBJECT_NAME(object_id)
ORDER BY schema_name, object_name;
Konten terkait
- Tampilan dan fungsi manajemen dinamis sistem
- Tampilan dan Fungsi Manajemen Dinamis Terkait Indeks (Transact-SQL)
- Monitor dan Selaraskan Kinerja
- sys.dm_db_index_physical_stats (T-SQL)
- sys.dm_db_index_usage_stats (T-SQL)
- sys.dm_os_latch_stats (T-SQL)
- sys.dm_db_partition_stats (Transact-SQL)
- sys.allocation_units (T-SQL)
- sys.partitions (Transact-SQL)
- sys.indexes (Transact-SQL)