sys.query_store_plan (SQL Bertransaksi)

Berlaku untuk:yes SQL Server 2016 (13.x) dan yang lebih baru YesAzure SQL Database YesAzure SQL Managed Instance yesAzure 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: