sys.query_store_plan (SQL Bertransaksi)
Berlaku untuk:
SQL Server 2016 (13.x) dan yang lebih baru
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Berisi informasi tentang setiap rencana eksekusi yang terkait dengan kueri.
| Nama kolom | Jenis data | Deskripsi |
|---|---|---|
| plan_id | bigint | Kunci primer. |
| query_id | bigint | Kunci asing. Bergabung ke sys.query_store_query (Transact-SQL). |
| plan_group_id | bigint | ID grup paket. Kueri kursor biasanya memerlukan beberapa paket (isi dan ambil). Isi dan ambil paket yang dikompilasi bersama-sama berada dalam grup yang sama. 0 berarti rencana tidak berada dalam grup. |
| engine_version | nvarchar(32) | Versi mesin yang digunakan untuk mengkompilasi paket dalam format 'major.minor.build.revision '. |
| compatibility_level | smallint | Tingkat kompatibilitas database database yang dirujuk dalam kueri. |
| query_plan_hash | biner(8) | Hash MD5 dari rencana individu. |
| query_plan | nvarchar(max) | Tampilkan XML untuk rencana kueri. |
| is_online_index_plan | bit | Paket digunakan selama build indeks online. Catatan: Azure Synapse Analytics akan selalu mengembalikan nol (0). |
| is_trivial_plan | bit | Rencana adalah rencana sepele (output di tahap 0 pengoptimal kueri). Catatan: Azure Synapse Analytics akan selalu mengembalikan nol (0). |
| is_parallel_plan | bit | Rencananya paralel. Catatan: Azure Synapse Analytics akan selalu mengembalikan satu (1). |
| is_forced_plan | bit | Paket ditandai sebagai dipaksa saat pengguna menjalankan prosedur tersimpan sys.sp_query_store_force_plan. Mekanisme memaksa tidak menjamin bahwa persis rencana ini akan digunakan untuk kueri yang dirujuk oleh query_id. Pemakaian rencana menyebabkan kueri dikompilasi lagi dan biasanya menghasilkan rencana yang sama atau serupa persis dengan rencana yang dirujuk oleh plan_id. Jika memaksa rencana tidak berhasil, force_failure_count bertahap dan last_force_failure_reason diisi dengan alasan kegagalan. Catatan: Azure Synapse Analytics akan selalu mengembalikan nol (0). |
| is_natively_compiled | bit | Paket mencakup prosedur pengoptimalan memori yang dikompilasi secara asli. (0 = FALSE, 1 = TRUE). Catatan: Azure Synapse Analytics akan selalu mengembalikan nol (0). |
| force_failure_count | bigint | Berapa kali memaksa rencana ini gagal. Ini dapat ditahapkan hanya ketika kueri dikompresi ulang (bukan pada setiap eksekusi). Ini diatur ulang ke 0 setiap kali is_plan_forced diubah dari FALSE ke TRUE. Catatan: Azure Synapse Analytics akan selalu mengembalikan nol (0). |
| last_force_failure_reason | int | Alasan mengapa rencana memaksa gagal. 0: tidak ada kegagalan, jika tidak, jumlah kesalahan yang menyebabkan memaksa gagal 8637: ONLINE_INDEX_BUILD 8675: OPTIMIZATION_REPLAY_FAILED 8683: INVALID_STARJOIN 8684: TIME_OUT 8689: NO_DB 8690: HINT_CONFLICT 8691: SETOPT_CONFLICT 8694: DQ_NO_FORCING_SUPPORTED 8698: NO_PLAN 8712: NO_INDEX 8713: VIEW_COMPILE_FAILED <nilai> lainnya: GENERAL_FAILURE Catatan: Azure Synapse Analytics akan selalu mengembalikan nol (0). |
| last_force_failure_reason_desc | nvarchar(128) | Deskripsi tekstual last_force_failure_reason_desc. ONLINE_INDEX_BUILD: kueri mencoba mengubah data saat tabel target memiliki indeks yang sedang dibangun secara online OPTIMIZATION_REPLAY_FAILED: Skrip pemutaran ulang pengoptimalan gagal dijalankan. INVALID_STARJOIN: paket berisi spesifikasi StarJoin yang tidak valid TIME_OUT: Pengoptimal melebihi jumlah operasi yang diizinkan saat mencari rencana yang ditentukan oleh rencana paksa NO_DB: Database yang ditentukan dalam paket tidak ada HINT_CONFLICT: Kueri tidak dapat dikompilasi karena rencana berkonflik dengan petunjuk kueri DQ_NO_FORCING_SUPPORTED: Tidak dapat menjalankan kueri karena rencana berkonflik dengan penggunaan kueri terdistribusi atau operasi teks lengkap. NO_PLAN: Prosesor kueri tidak dapat menghasilkan rencana kueri karena rencana paksa tidak dapat diverifikasi agar valid untuk kueri NO_INDEX: Indeks yang ditentukan dalam paket tidak ada lagi VIEW_COMPILE_FAILED: Tidak dapat memaksa rencana kueri karena masalah dalam tampilan terindeks yang direferensikan dalam paket GENERAL_FAILURE: kesalahan memaksa umum (tidak tercakup dalam alasan di atas) Catatan: Azure Synapse Analytics akan selalu mengembalikan NONE. |
| count_compiles | bigint | Merencanakan statistik kompilasi. |
| initial_compile_start_time | datetimeoffset | Merencanakan statistik kompilasi. |
| last_compile_start_time | datetimeoffset | Merencanakan statistik kompilasi. |
| last_execution_time | datetimeoffset | Waktu eksekusi terakhir mengacu pada waktu akhir terakhir kueri/rencana. |
| avg_compile_duration | Float | Merencanakan statistik kompilasi. |
| last_compile_duration | bigint | Merencanakan statistik kompilasi. |
| plan_forcing_type | int | Jenis paksa paket. 0: TIDAK ADA 1: MANUAL 2: OTOMATIS |
| plan_forcing_type_desc | nvarchar(60) | Deskripsi teks plan_forcing_type. TIDAK ADA: Tidak ada memaksa paket MANUAL: Rencana dipaksa oleh pengguna AUTO: Merencanakan dipaksa oleh penyetelan otomatis. |
| has_compile_replay_script | bit | BERLAKU UNTUK: SQL Server (Dimulai dengan Pratinjau SQL Server 2022 (16.x) Menunjukkan apakah paket memiliki skrip pemutaran ulang pengoptimalan yang terkait dengannya: 0 = Tidak ada skrip pemutaran ulang pengoptimalan (tidak ada atau bahkan tidak valid). 1 = pengoptimalan skrip pemutaran ulang yang direkam. |
| is_optimized_plan_forcing_disabled | bit | BERLAKU UNTUK: SQL Server (Dimulai dengan Pratinjau SQL Server 2022 (16.x) Menunjukkan apakah memaksa paket yang dioptimalkan dinonaktifkan untuk paket: 0 = dinonaktifkan. 1 = tidak dinonaktifkan. |
Batasan memaksa paket
Penyimpanan Kueri memiliki mekanisme untuk memberlakukan Pengoptimal Kueri untuk menggunakan rencana eksekusi tertentu. Namun, ada beberapa batasan yang dapat mencegah rencana diberlakukan.
Pertama, jika rencana berisi konstruksi berikut:
- Sisipkan pernyataan massal.
- Referensi ke tabel eksternal
- Kueri terdistribusi atau operasi teks lengkap
- Penggunaan kueri Global
- Kursor dinamis atau set kunci
- Spesifikasi gabungan bintang tidak valid
Catatan
Azure SQL Database dan SQL Server 2019 mendukung rencana memaksa kursor statis dan maju cepat.
Kedua, ketika objek yang diandalkan paket, tidak lagi tersedia:
- Database (jika Database, tempat rencana berasal, tidak ada lagi)
- Indeks (tidak lagi ada atau dinonaktifkan)
Akhirnya, masalah dengan rencana itu sendiri:
- Tidak legal untuk kueri
- Pengoptimal Kueri melebihi jumlah operasi yang diizinkan
- XML rencana yang salah dibentuk
Izin
Memerlukan izin TAMPILKAN STATUS DATABASE .
Langkah berikutnya
Pelajari selengkapnya tentang Penyimpanan Kueri dan konsep terkait di artikel berikut ini:
- sys.database_query_store_options (SQL Bertransaksi)
- sys.query_context_settings (SQL Bertransaksi)
- sys.query_store_query (SQL Bertransaksi)
- sys.query_store_query_text (SQL Bertransaksi)
- sys.query_store_runtime_stats (SQL Bertransaksi)
- sys.query_store_wait_stats (SQL Bertransaksi)
- sys.query_store_runtime_stats_interval (SQL Bertransaksi)
- Memantau Performa Dengan Menggunakan Penyimpanan Kueri
- Tampilan Katalog (Transact-SQL)
- Prosedur Tersimpan Penyimpanan Kueri (SQL Transact)