當前位置:成語大全網 - 新華字典 - 如何查看sql 執行sql語句

如何查看sql 執行sql語句

SQL 語句摘要可以用在MySQL的各個方面,比如 性能字典裏對語句的分析,查詢重寫插件規則改寫等等。

接下來依次看下語句摘要在這兩方面的使用。

1. 性能字典

mysql> call sys.ps_setup_enable_consumer('statements');

+---------------------+

| summary |

+---------------------+

| Enabled 4 consumers |

+---------------------+

1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

開啟後,執行幾次之前的幾條 SQL。

完後可以很方便的從 sys 庫裏分析這類語句的執行情況,包括執行次數,執行時間,掃描的記錄數,鎖定的時間,是否用到排序等等。

2. 查詢重寫插件

比如要阻止對表 p1 通過字段 r1 的刪除動作,可以用查詢重寫插件在 MySQL 語句分析層直接轉換,這時候就得用到摘要函數 statement_digest_text。

假設:表 p1 字段 id 值全部為正。

delete from p1 where id = 1000;

要改寫為,

delete from p1 where id = -1;

利用函數 statement_digest_text 來定制這條 SQL 的重寫規則。

mysql> INSERT INTO query_rewrite.rewrite_rules (pattern, replacement,pattern_database) -> VALUES( -> statement_digest_text('delete from p1 where id = 1000') , -> statement_digest_text('delete from p1 where id = -1'), -> 'ytt' -> );Query OK, 1 row affected (0.01 sec)

語句被查詢重寫後的效果:

mysql> delete from p1 where id = 20000;Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> show warnings\G*************************** 1. row *************************** Level: Note Code: 1105Message: Query 'delete from p1 where id = 20000' rewritten to 'DELETE FROM `p1` WHERE `id` = - 20000' by a query rewrite plugin1 row in set (0.00 sec)mysql> select count(*) from p1;+----------+| count(*) |+----------+| 9000001 |+----------+1 row in set (1.59 sec)

總結

MySQL 8.0 新增的語句摘要函數可以很方便的分析 SQL 語句執行的各個方面,比以前分析類似的場景要簡單的多。