mysql版本:5.7.31在根據《mysql效能優化金字塔法則》做的實驗,好書推薦!
performance_schema
中語句時間記錄表中針對每一條語句的執行狀態都記錄了較為詳細的資訊,其中就包含了執行錯誤資訊。
記錄語句資訊的表一般為performance_schema
中的四張表,分別為
mysql> select * from performance_schema.setup_consumers where name like 'events_statements%';
+--------------------------------+---------+
| name | enabled |
+--------------------------------+---------+
| events_statements_current | yes |
| events_statements_history | yes |
| events_statements_history_long | no | -- 未啟用
+--------------------------------+---------+
生產環境中,每個執行緒執行的sql
很多,我們啟用events_statements_history_long
表記錄更多的sql
資訊(可以通過修改performance_schema.threads
針對特定的執行緒進行記錄資訊,降低對效能的影響程度)
啟用events_statements_history_long
表
mysql > update performance_schema.setup_consumers set enabled = 'yes' where name ='events_statements_history_long';
會話1,執行明顯格式錯誤的sql,這裡可以看到錯誤號是1096
mysql> select *;
error 1096 (hy000): no tables used
會話2,可以看到執行的對應內部執行緒號等具體資訊,環境是測試環境,所以剛好查出只有這一條,生產中應該查出來不止一條,會有很多條。
mysql> select * from performance_schema.events_statements_history_long where mysql_errno=1096\g;
*************************** 1. row ***************************
thread_id: 173475 <-- 內部執行緒號
event_id: 38480
end_event_id: 38497
event_name: statement/sql/select
source:
timer_start: 1050983430258683000
timer_end: 1050983430962477000
timer_wait: 703794000
lock_time: 0
sql_text: select *
digest: ed17d00b1d52bf7da4ae01c523c15c5a
digest_text: select *
current_schema: performance_schema
object_type: null
object_schema: null
object_name: null
object_instance_begin: null
mysql_errno: 1096 <-- 錯誤號
returned_sqlstate: hy000
message_text: no tables used
errors: 1
warnings: 0
rows_affected: 0
rows_sent: 0
rows_examined: 0
created_tmp_disk_tables: 0
created_tmp_tables: 0
select_full_join: 0
select_full_range_join: 0
select_range: 0
select_range_check: 0
select_scan: 0
sort_merge_passes: 0
sort_range: 0
sort_rows: 0
sort_scan: 0
no_index_used: 0
no_good_index_used: 0
nesting_event_id: null
nesting_event_type: null
nesting_event_level: 0
1 row in set (0.01 sec)
mysql>select * from performance_schema.events_statements_history_long where errors != 0\g;
*************************** 1. row ***************************
thread_id: 173475
event_id: 38480
end_event_id: 38497
event_name: statement/sql/select
source:
timer_start: 1050983430258683000
timer_end: 1050983430962477000
timer_wait: 703794000
lock_time: 0
sql_text: select *
digest: ed17d00b1d52bf7da4ae01c523c15c5a
digest_text: select *
current_schema: performance_schema
object_type: null
object_schema: null
object_name: null
object_instance_begin: null
mysql_errno: 1096
returned_sqlstate: hy000
message_text: no tables used
errors: 1
warnings: 0
rows_affected: 0
rows_sent: 0
rows_examined: 0
created_tmp_disk_tables: 0
created_tmp_tables: 0
select_full_join: 0
select_full_range_join: 0
select_range: 0
select_range_check: 0
select_scan: 0
sort_merge_passes: 0
sort_range: 0
sort_rows: 0
sort_scan: 0
no_index_used: 0
no_good_index_used: 0
nesting_event_id: null
nesting_event_type: null
nesting_event_level: 0
補充: MySQL案件 mysql登入 S失敗
1.1.1.mysql登入mysql時間,s引數失效 環境的敘述性說明 mysql5.5.14 問題敘述性說明 配置多個例項 例項1例項2 datadir home mysql 3306 home mysql 3307 basedir usr usr socket home mysql 3306 m...
執行mysql指令碼 mysql下如何執行sql指令碼
首要步驟 一般可省略 開啟mysql服務 預設是開機時就自動執行了 控制面板 管理工具 服務,在裡面找到名稱為mysql的項,雙擊就可看它的服務狀態是啟動還是停止,把它設為啟動 連線mysql 在命令列下輸入 mysql h localhost u root p回車,然後輸入密碼即可 或直接執行my...
MYSQL檢視執行計畫
1 概述 執行計畫的檢視是進行資料庫的sql語句調優時依據的乙個重要依據,mysql的執行計畫檢視相對oracle簡便很多,功能也相對簡單很多的sql語句都不能直接檢視。2 執行計畫的生成和檢視 2.1 執行計畫的生成方法 explain select 生成的方法很簡單在相應的select前面加ex...