Gambaran umum Kejadian yang Diperluas

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Arsitektur Extended Events (XEvents) memungkinkan pengguna mengumpulkan data sebanyak atau sekecil yang diperlukan untuk memantau, mengidentifikasi, atau memecahkan masalah performa di SQL Server, Azure SQL Database, dan Azure SQL Managed Instance. Extended Events sangat dapat dikonfigurasi, ringan, dan diskalakan dengan baik. Untuk informasi selengkapnya, lihat Arsitektur Peristiwa yang Diperluas.

Extended Events menggantikan fitur SQL Trace dan SQL Server Profiler yang tidak digunakan lagi.

Untuk mulai menggunakan Acara yang Diperluas, gunakan Mulai Cepat: Acara yang Diperluas.

Catatan

Jika Anda menggunakan Azure SQL, pelajari bagaimana contoh Kode dapat berbeda untuk Azure SQL Database dan SQL Managed Instance dan selengkapnya tentang Peristiwa yang diperluas di Azure SQL Database.

Manfaat Acara yang Diperluas

Extended Events adalah sistem pemantauan performa ringan yang menggunakan sumber daya sistem minimal sekaligus memberikan tampilan mesin database yang terperinci dan mendalam. SQL Server Management Studio menyediakan antarmuka pengguna grafis untuk Extended Events untuk membuat, memodifikasi, dan menghilangkan sesi peristiwa dan untuk menampilkan dan menganalisis data sesi. Untuk mempelajari selengkapnya tentang dukungan Extended Events di Management Studio, lihat:

Konsep Extended Events

Extended Events dibangun berdasarkan konsep yang ada dari Pelacakan Peristiwa untuk Windows, seperti konsumen peristiwa dan peristiwa, dan memperkenalkan konsep baru seperti tindakan dan predikat.

Tabel berikut ini menyediakan referensi dokumentasi untuk memahami konsep dalam Acara yang Diperluas.

Artikel Deskripsi
Paket Acara yang Diperluas Menjelaskan paket Extended Events yang berisi objek. Objek ini digunakan untuk mendapatkan dan memproses data saat sesi Extended Events berjalan.
Target untuk Kejadian yang Diperluas Menjelaskan konsumen peristiwa yang dapat menerima data selama sesi peristiwa.
Mesin Acara yang Diperluas Menjelaskan mesin yang mengimplementasikan dan mengelola sesi Extended Events.
Sesi Acara yang Diperluas Menjelaskan sesi Acara yang Diperluas.

Arsitektur Acara yang Diperluas

Extended Events adalah nama untuk sistem penanganan peristiwa umum untuk sistem server. Infrastruktur Extended Events mendukung korelasi data dari mesin database, dan dalam kondisi tertentu, korelasi data dari sistem operasi dan aplikasi database. Dalam kasus sistem operasi, output Extended Events harus diarahkan ke Pelacakan Peristiwa untuk Windows (ETW). ETW dapat menghubungkan data peristiwa dengan sistem operasi atau data peristiwa aplikasi.

Semua aplikasi memiliki titik eksekusi yang berguna baik di dalam maupun di luar aplikasi. Di dalam aplikasi, pemrosesan asinkron dapat diantrekan menggunakan informasi yang dikumpulkan selama eksekusi awal tugas. Di luar aplikasi, titik eksekusi menyediakan utilitas pemantauan dengan informasi. Informasinya adalah tentang karakteristik perilaku dan performa aplikasi yang dipantau.

Extended Events mendukung penggunaan data peristiwa di luar proses. Data ini biasanya digunakan oleh pengguna baik mengelola atau mendukung produk dengan melakukan pemantauan performa atau oleh pengguna yang mengembangkan aplikasi pada produk untuk tujuan penelusuran kesalahan. Data digunakan atau dianalisis menggunakan alat seperti SQL Server Management Studio, XEvent Profiler dan Performance Monitor, dan alat baris perintah T-SQL atau Windows.

Extended Events memiliki aspek desain utama berikut:

  • Mesin Extended Events adalah agnostik peristiwa. Mesin dapat mengikat peristiwa apa pun ke target apa pun, karena mesin tidak dibatasi oleh konten peristiwa. Untuk informasi selengkapnya tentang mesin Acara yang Diperluas, lihat Mesin Acara yang Diperluas.
  • Peristiwa dipisahkan dari konsumen peristiwa, yang disebut target dalam Acara yang Diperpanjang. Ini berarti bahwa setiap target dapat menerima peristiwa apa pun. Selain itu, setiap peristiwa yang dinaikkan dapat secara otomatis digunakan oleh target, yang dapat mencatat atau memberikan konteks peristiwa tambahan. Untuk informasi selengkapnya, lihat Target untuk Kejadian yang Diperluas.
  • Peristiwa berbeda dari tindakan yang harus diambil saat peristiwa terjadi. Oleh karena itu, tindakan apa pun dapat dikaitkan dengan peristiwa apa pun.
  • Predikat dapat secara dinamis memfilter kapan data peristiwa harus diambil. Pemfilteran dinamis menambah fleksibilitas infrastruktur Extended Events. Untuk informasi selengkapnya, lihat Paket Acara yang Diperluas.

Extended Events dapat secara sinkron menghasilkan data peristiwa (dan secara asinkron memproses data tersebut), yang menyediakan solusi fleksibel untuk penanganan peristiwa. Selain itu, Extended Events menyediakan fitur berikut:

  • Pendekatan terpadu untuk menangani peristiwa di seluruh sistem server, sambil memungkinkan pengguna mengisolasi peristiwa tertentu untuk tujuan pemecahan masalah.
  • Integrasi dengan, dan dukungan untuk alat ETW yang ada.
  • Mekanisme penanganan peristiwa yang dapat dikonfigurasi sepenuhnya yang menggunakan Transact-SQL.
  • Kemampuan untuk memantau proses aktif secara dinamis, sekaligus memiliki efek minimal pada proses tersebut.
  • Sesi kesehatan sistem default yang berjalan tanpa efek performa yang terlihat. Sesi ini mengumpulkan data sistem yang dapat Anda gunakan untuk membantu memecahkan masalah performa. Untuk informasi selengkapnya, lihat Menggunakan sesi system_health.

Tugas Acara yang Diperluas

Menggunakan Management Studio atau Transact-SQL untuk menjalankan pernyataan Transact-SQL Data Definition Language (DDL), menggunakan tampilan dan fungsi manajemen dinamis, atau tampilan katalog, Anda dapat membuat solusi pemecahan masalah Peristiwa Diperluas SQL Server yang sederhana atau kompleks untuk lingkungan SQL Server Anda.

Deskripsi tugas Artikel
Gunakan Object Explorer untuk mengelola sesi peristiwa. Mengelola Sesi Peristiwa di Object Explorer
Menjelaskan cara membuat sesi Extended Events. Sesi Acara yang Diperluas
Menjelaskan cara menampilkan dan menyegarkan data target. Menampilkan data peristiwa di SQL Server Management Studio
Menjelaskan cara menggunakan alat Extended Events untuk membuat dan mengelola sesi Extended Events Anda. Alat Kejadian yang Diperluas
Menjelaskan cara mengubah sesi Extended Events. Mengubah Sesi Kejadian yang Diperluas
Menjelaskan cara mendapatkan informasi tentang bidang yang terkait dengan peristiwa. Mendapatkan Bidang untuk Semua Peristiwa
Menjelaskan cara mengetahui peristiwa apa yang tersedia dalam paket terdaftar. SELECT dan JOIN Dari Tampilan Sistem untuk Peristiwa yang Diperluas di SQL Server
Menjelaskan cara menentukan target Extended Events apa yang tersedia dalam paket terdaftar. Target untuk Kejadian yang Diperluas
Menjelaskan cara melihat peristiwa dan tindakan Extended Events yang setara dengan setiap peristiwa SQL Trace dan kolom terkait. Melihat Acara yang Diperluas Setara dengan Kelas Peristiwa Pelacakan SQL
Menjelaskan cara menemukan parameter yang dapat Anda atur saat menggunakan ADD TARGET klausa dalam CREATE EVENT SESSION atau ALTER EVENT SESSION pernyataan. Target untuk Kejadian yang Diperluas
Menjelaskan cara mengonversi skrip SQL Trace yang ada ke sesi Extended Events. Mengonversi Skrip Pelacakan SQL yang Ada ke Sesi Kejadian yang Diperluas
Menjelaskan cara menentukan kueri mana yang menahan kunci, rencana kueri, dan tumpukan Transact-SQL pada saat kunci diambil. Tentukan Kueri Mana yang Menahan Kunci
Menjelaskan cara mengidentifikasi sumber kunci. Temukan Objek yang Memiliki Kunci Terbanyak Yang Diambil di Atasnya
Menjelaskan cara menggunakan Extended Events dengan Pelacakan Peristiwa untuk Windows untuk memantau aktivitas sistem. Memantau Aktivitas Sistem Menggunakan Kejadian yang Diperluas
Menggunakan Tampilan Katalog dan Tampilan Manajemen Dinamis (DMV) untuk Peristiwa yang Diperluas SELECT dan JOIN Dari Tampilan Sistem untuk Peristiwa yang Diperluas di SQL Server

Gunakan kueri T-SQL berikut untuk mengembalikan semua kemungkinan peristiwa dan deskripsinya:

SELECT obj1.name AS [XEvent-name],
    col2.name AS [XEvent-column],
    obj1.description AS [Descr-name],
    col2.description AS [Descr-column]
FROM sys.dm_xe_objects AS obj1
INNER JOIN sys.dm_xe_object_columns AS col2
    ON col2.object_name = obj1.name
ORDER BY obj1.name,
    col2.name

Contoh kode dapat berbeda untuk Azure SQL Database dan SQL Managed Instance

Beberapa contoh kode Transact-SQL yang ditulis untuk SQL Server memerlukan perubahan kecil untuk dijalankan di Azure. Satu kategori contoh kode tersebut melibatkan tampilan katalog yang awalan namanya berbeda tergantung pada jenis mesin database:

  • server_ - awalan untuk SQL Server dan Azure SQL Managed Instance
  • database_ - awalan untuk Azure SQL Database dan SQL Managed Instance

Azure SQL Database hanya mendukung sesi peristiwa cakupan database. SQL Server Management Studio (SSMS) sepenuhnya mendukung sesi peristiwa cakupan database untuk Azure SQL Database: node Extended Events yang berisi sesi cakupan database muncul di bawah setiap database di Object Explorer.

Azure SQL Managed Instance mendukung sesi cakupan database dan sesi cakupan server. SSMS sepenuhnya mendukung sesi cakupan server untuk SQL Managed Instance: node Extended Events yang berisi semua sesi cakupan server muncul di bawah folder Manajemen untuk setiap instans terkelola di Object Explorer.

Catatan

Sesi cakupan server direkomendasikan untuk instans terkelola. Sesi cakupan database tidak ditampilkan di Object Explorer di SSMS untuk Azure SQL Managed Instance. Sesi cakupan database hanya dapat dikueri dan dikelola dengan Transact-SQL saat menggunakan instans terkelola.

Untuk ilustrasi, tabel berikut mencantumkan dan membandingkan dua subset tampilan katalog. Untuk brevity, subset dibatasi untuk melihat nama yang juga berisi string _event. Subset memiliki awalan nama yang berbeda karena mendukung jenis mesin database yang berbeda.

Nama di SQL Server dan Azure SQL Managed Instance Nama di Azure SQL Database dan Azure SQL Managed Instance
server_event_notifications
server_event_session_actions
server_event_session_events
server_event_session_fields
server_event_session_targets
server_event_sessions
server_events
server_trigger_events
database_event_session_actions
database_event_session_events
database_event_session_fields
database_event_session_targets
database_event_sessions

Dua daftar dalam tabel sebelumnya akurat per Maret 2022. Untuk daftar terbaru, jalankan pernyataan Transact-SQL SELECT berikut:

SELECT name
    FROM sys.all_objects
    WHERE
        (name LIKE 'database[_]%' OR
         name LIKE 'server[_]%' )
        AND name LIKE '%[_]event%'
        AND type = 'V'
        AND SCHEMA_NAME(schema_id) = 'sys'
    ORDER BY name;