全部产品
Search
文档中心

PolarDB:dbms_sql.add_trace

更新时间:Jul 03, 2025

Jika parameter loose_sql_trace_type diatur ke DEMAND, Anda dapat menggunakan prosedur tersimpan dbms_sql.add_trace untuk menentukan pernyataan SQL yang perlu dilacak oleh fitur Jejak SQL.

Sintaksis

dbms_sql.add_trace('<schema>', '<query>')
Catatan

Setelah prosedur tersimpan dijalankan, konstanta dalam pernyataan SQL yang sedang dieksekusi secara otomatis dibuat menjadi templat dan membentuk sebuah templat. Pernyataan SQL yang sesuai dengan templat tersebut dilacak oleh fitur Jejak SQL.

Parameter

Parameter

Deskripsi

schema

Nama dari skema.

query

Pernyataan SQL yang sedang dieksekusi.

Perhatian

  • Ketika prosedur tersimpan dijalankan pada node utama, eksekusi prosedur tersimpan disimpan secara permanen pada node utama, dan catatan eksekusi terkait dalam tabel mysql.sql_sharing dihapus serta disinkronkan ke node hanya-baca.

  • Ketika prosedur tersimpan dijalankan pada node hanya-baca, eksekusi prosedur tersimpan tidak disimpan secara permanen pada node tersebut. Prosedur tersimpan hanya dapat dijalankan pada node tersebut. Saat Anda menggunakan titik akhir kluster untuk mengakses database, pernyataan SQL yang telah dibuat templat secara otomatis diarahkan ke node utama.

Contoh

Anda dapat menjalankan pernyataan berikut untuk menentukan pernyataan SQL yang perlu dilacak oleh fitur Jejak SQL:

call dbms_sql.add_trace('test', 'select * from t where c1 > 1 and c1 < 10');

Anda dapat menjalankan pernyataan berikut untuk menanyakan catatan eksekusi dari pernyataan SQL yang dilacak dalam tabel sistem mysql.sql_sharing:

select * from mysql.sql_sharing\G

Keluaran berikut akan dikembalikan:

*************************** 1. baris ***************************
         Id: (nomor id)
     Sql_id: 82t4dswtqjg02
Schema_name: test
       Type: SQL_TRACE
Digest_text: SELECT * FROM `t` WHERE `c1` > ? AND `c1` < ?
    Plan_id: NULL
       Plan: NULL
    Version: 0
Create_time: 2022-11-07 19:05:27.980605
Update_time: 2022-11-07 19:05:27.980605
 Extra_info: NULL

Keluaran di atas menunjukkan bahwa konstanta dalam pernyataan SQL yang dilacak secara otomatis dibuat templat dan membentuk sebuah templat.

Anda dapat menjalankan pernyataan SQL berikut yang sesuai dengan templat:

select * from  t where c1 > 1 and c1 < 10;
select * from  t where c1 > 1 and c1 < 100;

Anda dapat menjalankan pernyataan berikut untuk menanyakan informasi jejak dari pernyataan SQL yang dilacak dan statistik rencana eksekusi dari pernyataan SQL dalam tabel sistem information_schema.sql_sharing:

select * from information_schema.sql_sharing\G

Keluaran berikut akan dikembalikan:

*************************** 1. baris ***************************
              TYPE: SQL
            SQL_ID: 82t4dswtqjg02
       SCHEMA_NAME: test
       DIGEST_TEXT: SELECT * FROM `t` WHERE `c1` > ? AND `c1` < ?
           PLAN_ID: NULL
              PLAN: NULL
        PLAN_EXTRA: NULL
        ERROR_CODE: NULL
            REF_BY: SQL_TRACE(DEMAND)
   FIRST_LOAD_TIME: 2022-11-07 19:05:28
     LAST_HIT_TIME: 2022-11-07 19:17:24
        EXECUTIONS: 2
     SUM_WAIT_TIME: 363
     MIN_WAIT_TIME: 179
     MAX_WAIT_TIME: 184
     SUM_EXEC_TIME: 925
     MIN_EXEC_TIME: 438
     MAX_EXEC_TIME: 487
     SUM_ROWS_SENT: 106
     MIN_ROWS_SENT: 8
     MAX_ROWS_SENT: 98
 SUM_ROWS_EXAMINED: 108
 MIN_ROWS_EXAMINED: 8
 MAX_ROWS_EXAMINED: 100
 SUM_ROWS_AFFECTED: 0
 MIN_ROWS_AFFECTED: 0
 MAX_ROWS_AFFECTED: 0
  SUM_LOGICAL_READ: 122
  MIN_LOGICAL_READ: 19
  MAX_LOGICAL_READ: 103
 SUM_PHY_SYNC_READ: 0
 MIN_PHY_SYNC_READ: 0
 MAX_PHY_SYNC_READ: 0
SUM_PHY_ASYNC_READ: 0
MIN_PHY_ASYNC_READ: 0
MAX_PHY_ASYNC_READ: 0
             EXTRA: {TRACE_ROW_ID:10}
*************************** 2. baris ***************************
              TYPE: PLAN
            SQL_ID: 82t4dswtqjg02
       SCHEMA_NAME: test
       DIGEST_TEXT: NULL
           PLAN_ID: 5a4cvp4gjqgfj
              PLAN: /*+ NO_INDEX(`t`@`select#1`) */
        PLAN_EXTRA: {`t`@`select#1`:ALL}
        ERROR_CODE: 0
            REF_BY: SQL_TRACE(DEMAND)
   FIRST_LOAD_TIME: 2022-11-07 19:17:24
     LAST_HIT_TIME: 2022-11-07 19:17:24
        EXECUTIONS: 1
     SUM_WAIT_TIME: 184
     MIN_WAIT_TIME: 184
     MAX_WAIT_TIME: 184
     SUM_EXEC_TIME: 487
     MIN_EXEC_TIME: 487
     MAX_EXEC_TIME: 487
     SUM_ROWS_SENT: 98
     MIN_ROWS_SENT: 98
     MAX_ROWS_SENT: 98
 SUM_ROWS_EXAMINED: 100
 MIN_ROWS_EXAMINED: 100
 MAX_ROWS_EXAMINED: 100
 SUM_ROWS_AFFECTED: 0
 MIN_ROWS_AFFECTED: 0
 MAX_ROWS_AFFECTED: 0
  SUM_LOGICAL_READ: 103
  MIN_LOGICAL_READ: 103
  MAX_LOGICAL_READ: 103
 SUM_PHY_SYNC_READ: 0
 MIN_PHY_SYNC_READ: 0
 MAX_PHY_SYNC_READ: 0
SUM_PHY_ASYNC_READ: 0
MIN_PHY_ASYNC_READ: 0
MAX_PHY_ASYNC_READ: 0
             EXTRA: NULL
*************************** 3. baris ***************************
              TYPE: PLAN
            SQL_ID: 82t4dswtqjg02
       SCHEMA_NAME: test
       DIGEST_TEXT: NULL
           PLAN_ID: 463zszw4mbv3w
              PLAN: /*+ INDEX(`t`@`select#1` `i_c1`) */
        PLAN_EXTRA: {`t`@`select#1`:range}
        ERROR_CODE: 0
            REF_BY: SQL_TRACE(DEMAND)
   FIRST_LOAD_TIME: 2022-11-07 19:17:21
     LAST_HIT_TIME: 2022-11-07 19:17:21
        EXECUTIONS: 1
     SUM_WAIT_TIME: 179
     MIN_WAIT_TIME: 179
     MAX_WAIT_TIME: 179
     SUM_EXEC_TIME: 438
     MIN_EXEC_TIME: 438
     MAX_EXEC_TIME: 438
     SUM_ROWS_SENT: 8
     MIN_ROWS_SENT: 8
     MAX_ROWS_SENT: 8
 SUM_ROWS_EXAMINED: 8
 MIN_ROWS_EXAMINED: 8
 MAX_ROWS_EXAMINED: 8
 SUM_ROWS_AFFECTED: 0
 MIN_ROWS_AFFECTED: 0
 MAX_ROWS_AFFECTED: 0
  SUM_LOGICAL_READ: 19
  MIN_LOGICAL_READ: 19
  MAX_LOGICAL_READ: 19
 SUM_PHY_SYNC_READ: 0
 MIN_PHY_SYNC_READ: 0
 MAX_PHY_SYNC_READ: 0
SUM_PHY_ASYNC_READ: 0
MIN_PHY_ASYNC_READ: 0
MAX_PHY_ASYNC_READ: 0
             EXTRA: NULL

Kesimpulan

Keluaran di atas menunjukkan bahwa pernyataan SQL di atas yang sesuai dengan templat berkorespondensi dengan rencana eksekusi berikut: pemindaian rentang indeks i_c1 dan pemindaian tabel penuh.