Topik ini menjelaskan skema tabel dan bidang terkait dari tabel mysql.sql_sharing dan information_schema.sql_sharing yang digunakan oleh fitur SQL Trace.
mysql.sql_sharing
Tabel sql_sharing adalah tabel sistem InnoDB dalam database PolarDB untuk MySQL. Tabel ini digunakan untuk menyimpan pernyataan SQL tertentu yang perlu dilacak. Contoh berikut menunjukkan skema tabel sql_sharing.
Tabel sql_sharing dibuat secara otomatis oleh sistem saat startup.
CREATE TABLE `sql_sharing` (
`Id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`Sql_id` varchar(64) COLLATE utf8_bin DEFAULT NULL,
`Schema_name` varchar(64) COLLATE utf8_bin DEFAULT NULL,
`Type` varchar(64) COLLATE utf8_bin DEFAULT NULL,
`Digest_text` longtext COLLATE utf8_bin,
`Plan_id` varchar(64) COLLATE utf8_bin DEFAULT NULL,
`Plan` text COLLATE utf8_bin,
`Version` int(11) unsigned DEFAULT NULL,
`Create_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
`Update_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
`Extra_info` longtext COLLATE utf8_bin,
PRIMARY KEY (`Id`),
UNIQUE KEY `sqlid_schema_type` (`Sql_id`,`Schema_name`,`Type`)
) /*!50100 TABLESPACE `mysql` */ ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;Tabel berikut menjelaskan bidang-bidang dalam skema tabel tersebut.
Bidang | Deskripsi |
Id | ID auto-increment dari baris data di tabel |
Sql_id | ID dari pernyataan SQL yang telah di-template. |
Schema_name | Nama skema tempat pernyataan SQL dieksekusi. |
Type | Fitur yang menggunakan rekaman tersebut. |
Digest_text | Isi dari pernyataan SQL yang telah di-template. |
Plan_id | ID dari rencana eksekusi. |
Plan | Nama dari rencana eksekusi. |
Version | Nomor versi rekaman dalam sistem. |
Create_time | Waktu ketika rekaman dimasukkan. |
Update_time | Waktu ketika rekaman diperbarui. |
Extra_info | Informasi tambahan yang direkam oleh sistem. |
information_schema.sql_sharing
Tabel memori sql_sharing dalam database information_schema digunakan untuk mencatat rencana eksekusi dari pernyataan SQL yang dilacak oleh fitur SQL Trace serta mengumpulkan statistik tentang eksekusi pernyataan SQL tersebut. Tabel ini memiliki skema berikut.
Tabel sql_sharing dibuat secara otomatis oleh sistem saat startup.
CREATE TEMPORARY TABLE `SQL_SHARING` (
`TYPE` varchar(16) DEFAULT NULL,
`SQL_ID` varchar(64) DEFAULT NULL,
`SCHEMA_NAME` varchar(64) DEFAULT NULL,
`DIGEST_TEXT` varchar(2048) DEFAULT NULL,
`PLAN_ID` varchar(64) DEFAULT NULL,
`PLAN` varchar(1024) DEFAULT NULL,
`PLAN_EXTRA` varchar(1024) DEFAULT NULL,
`ERROR_CODE` bigint(21) DEFAULT NULL,
`REF_BY` varchar(512) DEFAULT NULL,
`FIRST_LOAD_TIME` datetime DEFAULT NULL,
`LAST_HIT_TIME` datetime DEFAULT NULL,
`EXECUTIONS` bigint(21) unsigned NOT NULL DEFAULT '0',
`SUM_WAIT_TIME` bigint(21) unsigned NOT NULL DEFAULT '0',
`MIN_WAIT_TIME` bigint(21) unsigned NOT NULL DEFAULT '0',
`MAX_WAIT_TIME` bigint(21) unsigned NOT NULL DEFAULT '0',
`SUM_EXEC_TIME` bigint(21) unsigned NOT NULL DEFAULT '0',
`MIN_EXEC_TIME` bigint(21) unsigned NOT NULL DEFAULT '0',
`MAX_EXEC_TIME` bigint(21) unsigned NOT NULL DEFAULT '0',
`SUM_ROWS_SENT` bigint(21) unsigned NOT NULL DEFAULT '0',
`MIN_ROWS_SENT` bigint(21) unsigned NOT NULL DEFAULT '0',
`MAX_ROWS_SENT` bigint(21) unsigned NOT NULL DEFAULT '0',
`SUM_ROWS_EXAMINED` bigint(21) unsigned NOT NULL DEFAULT '0',
`MIN_ROWS_EXAMINED` bigint(21) unsigned NOT NULL DEFAULT '0',
`MAX_ROWS_EXAMINED` bigint(21) unsigned NOT NULL DEFAULT '0',
`SUM_ROWS_AFFECTED` bigint(21) unsigned NOT NULL DEFAULT '0',
`MIN_ROWS_AFFECTED` bigint(21) unsigned NOT NULL DEFAULT '0',
`MAX_ROWS_AFFECTED` bigint(21) unsigned NOT NULL DEFAULT '0',
`SUM_LOGICAL_READ` bigint(21) unsigned NOT NULL DEFAULT '0',
`MIN_LOGICAL_READ` bigint(21) unsigned NOT NULL DEFAULT '0',
`MAX_LOGICAL_READ` bigint(21) unsigned NOT NULL DEFAULT '0',
`SUM_PHY_SYNC_READ` bigint(21) unsigned NOT NULL DEFAULT '0',
`MIN_PHY_SYNC_READ` bigint(21) unsigned NOT NULL DEFAULT '0',
`MAX_PHY_SYNC_READ` bigint(21) unsigned NOT NULL DEFAULT '0',
`SUM_PHY_ASYNC_READ` bigint(21) unsigned NOT NULL DEFAULT '0',
`MIN_PHY_ASYNC_READ` bigint(21) unsigned NOT NULL DEFAULT '0',
`MAX_PHY_ASYNC_READ` bigint(21) unsigned NOT NULL DEFAULT '0',
`EXTRA` varchar(1024) DEFAULT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8;Tabel berikut menjelaskan bidang-bidang dalam skema tabel tersebut.
Bidang | Deskripsi |
TYPE | Jenis rekaman. Nilai valid:
|
SQL_ID | ID dari pernyataan SQL yang telah di-template. |
SCHEMA_NAME | Nama skema tempat pernyataan SQL dieksekusi. |
DIGEST_TEXT | Isi dari pernyataan SQL yang telah di-template. |
PLAN_ID | ID dari rencana eksekusi. |
PLAN | Nama dari rencana eksekusi. |
PLAN_EXTRA | Informasi tambahan, seperti metode apa yang digunakan untuk mengakses tabel dan apakah menggunakan protokol pernyataan yang disiapkan untuk mengeksekusi pernyataan SQL yang telah di-template pada tabel. Anda dapat memindai seluruh tabel, memilih rentang indeks, dan menggunakan indeks yang sama untuk mengakses tabel. |
ERROR_CODE | Kode kesalahan. |
REF_BY | Fitur yang menggunakan pernyataan SQL atau rencana eksekusi. Nilai valid:
|
FIRST_LOAD_TIME | Waktu ketika pernyataan SQL dan rencana eksekusi pertama kali dicatat di memori. |
LAST_HIT_TIME | Waktu ketika pernyataan SQL dan rencana eksekusi terakhir dieksekusi. |
EXECUTIONS | Total eksekusi dari pernyataan SQL yang telah di-template. |
SUM_WAIT_TIME | Waktu tunggu yang diperlukan untuk mengeksekusi pernyataan SQL. (Satuan: mikrodetik) |
MIN_WAIT_TIME | Waktu tunggu minimum. (Satuan: mikrodetik) |
MAX_WAIT_TIME | Waktu tunggu maksimum. (Satuan: mikrodetik) |
SUM_EXEC_TIME | Total waktu yang diperlukan untuk mengeksekusi pernyataan SQL. (Satuan: mikrodetik) |
MIN_EXEC_TIME | Waktu eksekusi minimum. (Satuan: mikrodetik) |
MAX_EXEC_TIME | Waktu eksekusi maksimum. (Satuan: mikrodetik) |
SUM_ROWS_SENT | Total jumlah baris yang dikembalikan. |
MIN_ROWS_SENT | Jumlah minimum baris yang dikembalikan. |
MAX_ROWS_SENT | Jumlah maksimum baris yang dikembalikan. |
SUM_ROWS_EXAMINED | Total jumlah baris yang dipindai. |
MIN_ROWS_EXAMINED | Jumlah minimum baris yang dipindai. |
MAX_ROWS_EXAMINED | Jumlah maksimum baris yang dipindai. |
SUM_ROWS_AFFECTED | Total jumlah baris yang terpengaruh. |
MIN_ROWS_AFFECTED | Jumlah minimum baris yang terpengaruh. |
MAX_ROWS_AFFECTED | Jumlah maksimum baris yang terpengaruh. |
SUM_LOGICAL_READ | Total jumlah pembacaan logis. |
MIN_LOGICAL_READ | Jumlah minimum pembacaan logis. |
MAX_LOGICAL_READ | Jumlah maksimum pembacaan logis. |
SUM_PHY_SYNC_READ | Total jumlah pembacaan sinkron fisik. |
MIN_PHY_SYNC_READ | Jumlah minimum pembacaan sinkron fisik. |
MAX_PHY_SYNC_READ | Jumlah maksimum pembacaan sinkron fisik. |
SUM_PHY_ASYNC_READ | Total jumlah pembacaan asinkron fisik. |
MIN_PHY_ASYNC_READ | Jumlah minimum pembacaan asinkron fisik. |
MAX_PHY_ASYNC_READ | Jumlah maksimum pembacaan asinkron fisik. |
EXTRA | Informasi tambahan. |
Contoh
Fitur SQL Trace digunakan untuk melacak catatan kueri dan menampilkan catatan tersebut menggunakan tabel information_schema.sql_sharing. Sebagai contoh, ketika parameter loose_sql_trace_type diatur ke ALL, Anda dapat mengeksekusi pernyataan SQL berikut di database untuk melihat hasil jejak.
Eksekusi pernyataan berikut:
CREATE TABLE t AS WITH RECURSIVE t(c1, c2, c3) AS (SELECT 1, 1, 1 UNION ALL SELECT c1+1, c2 + 1, c3 + 1 FROM t WHERE c1 < 100) SELECT c1, c2, c3 FROM t;
CREATE index i_c1 ON t(c1);
SELECT COUNT(*) FROM t;Hasil sampel:
+----------+
| count(*) |
+----------+
| 100 |
+----------+Anda dapat mengeksekusi pernyataan berikut untuk menanyakan informasi jejak dari pernyataan SQL yang dilacak dan statistik rencana eksekusi pernyataan SQL dalam tabel sistem information_schema.sql_sharing:
SELECT * FROM information_schema.sql_sharing;Hasil sampel:
*************************** 1. row ***************************
TYPE: SQL
SQL_ID: 83qmtgr8d6rwn
SCHEMA_NAME: test
DIGEST_TEXT: SELECT * FROM `t` WHERE `c2` < ?
PLAN_ID: NULL
PLAN: NULL
PLAN_EXTRA: NULL
ERROR_CODE: NULL
REF_BY: SQL_TRACE
FIRST_LOAD_TIME: 2022-11-07 19:04:30
LAST_HIT_TIME: 2022-11-07 19:04:30
EXECUTIONS: 1
SUM_WAIT_TIME: 184
MIN_WAIT_TIME: 184
MAX_WAIT_TIME: 184
SUM_EXEC_TIME: 417
MIN_EXEC_TIME: 417
MAX_EXEC_TIME: 417
SUM_ROWS_SENT: 2
MIN_ROWS_SENT: 2
MAX_ROWS_SENT: 2
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: 101
MIN_LOGICAL_READ: 101
MAX_LOGICAL_READ: 101
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
*************************** 2. row ***************************
TYPE: PLAN
SQL_ID: 83qmtgr8d6rwn
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
FIRST_LOAD_TIME: 2022-11-07 19:04:30
LAST_HIT_TIME: 2022-11-07 19:04:30
EXECUTIONS: 1
SUM_WAIT_TIME: 184
MIN_WAIT_TIME: 184
MAX_WAIT_TIME: 184
SUM_EXEC_TIME: 417
MIN_EXEC_TIME: 417
MAX_EXEC_TIME: 417
SUM_ROWS_SENT: 2
MIN_ROWS_SENT: 2
MAX_ROWS_SENT: 2
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: 101
MIN_LOGICAL_READ: 101
MAX_LOGICAL_READ: 101
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. row ***************************
TYPE: SQL
SQL_ID: cvdqw6ncsmwgh
SCHEMA_NAME: test
DIGEST_TEXT: CREATE TABLE `t` AS WITH RECURSIVE `t` ( `c1` , `c2` , `c3` ) AS ( SELECT ?, ... UNION ALL SELECT `c1` + ? , `c2` + ? , `c3` + ? FROM `t` WHERE `c1` < ? ) SELECT `c1` , `c2` , `c3` FROM `t`
PLAN_ID: NULL
PLAN: NULL
PLAN_EXTRA: NULL
ERROR_CODE: NULL
REF_BY: SQL_TRACE
FIRST_LOAD_TIME: 2022-11-07 19:04:15
LAST_HIT_TIME: 2022-11-07 19:04:15
EXECUTIONS: 1
SUM_WAIT_TIME: 376
MIN_WAIT_TIME: 376
MAX_WAIT_TIME: 376
SUM_EXEC_TIME: 10679
MIN_EXEC_TIME: 10679
MAX_EXEC_TIME: 10679
SUM_ROWS_SENT: 0
MIN_ROWS_SENT: 0
MAX_ROWS_SENT: 0
SUM_ROWS_EXAMINED: 200
MIN_ROWS_EXAMINED: 200
MAX_ROWS_EXAMINED: 200
SUM_ROWS_AFFECTED: 100
MIN_ROWS_AFFECTED: 100
MAX_ROWS_AFFECTED: 100
SUM_LOGICAL_READ: 1089
MIN_LOGICAL_READ: 1089
MAX_LOGICAL_READ: 1089
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
*************************** 4. row ***************************
TYPE: SQL
SQL_ID: btcj0kh12wx26
SCHEMA_NAME: test
DIGEST_TEXT: CREATE INDEX `i_c1` ON `t` ( `c1` )
PLAN_ID: NULL
PLAN: NULL
PLAN_EXTRA: NULL
ERROR_CODE: NULL
REF_BY: SQL_TRACE
FIRST_LOAD_TIME: 2022-11-07 19:04:21
LAST_HIT_TIME: 2022-11-07 19:04:21
EXECUTIONS: 1
SUM_WAIT_TIME: 295
MIN_WAIT_TIME: 295
MAX_WAIT_TIME: 295
SUM_EXEC_TIME: 8620
MIN_EXEC_TIME: 8620
MAX_EXEC_TIME: 8620
SUM_ROWS_SENT: 0
MIN_ROWS_SENT: 0
MAX_ROWS_SENT: 0
SUM_ROWS_EXAMINED: 0
MIN_ROWS_EXAMINED: 0
MAX_ROWS_EXAMINED: 0
SUM_ROWS_AFFECTED: 0
MIN_ROWS_AFFECTED: 0
MAX_ROWS_AFFECTED: 0
SUM_LOGICAL_READ: 761
MIN_LOGICAL_READ: 761
MAX_LOGICAL_READ: 761
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