1. 程式人生 > 其它 >資料庫Mysql_學習筆記(三)

資料庫Mysql_學習筆記(三)

技術標籤:資料庫學習筆記

第三章Mysql資料庫效能

3.1 Mysql資料庫的效能監控

3.1.1mysql連線數

連線數指使用者已經建立了多少個連線數,mysql通過執行SHOW PROCESSLIST命令輸出資料庫中執行著的執行緒個數詳情,SHOW PROCESSLIST預設只顯示100條,如果需要顯示超過100條記錄,需要執行SHOWFULLPROCESSLIST

資料庫支援的最大連線數:SHOW VARIABLES like 'max_connections'

當前已使用的最大連線數:SHOW GLOBAL STATUS like 'Max_used_connections'

3.1.2mysql資料庫當前執行的事務與鎖

事務是對資料庫執行的一種帶有原子性、一致性、隔離性、永續性的資料操作。

在Mysql中如果需要事務,那麼資料庫儲存時必須選用Mysql的innodb引擎,使用Innodb引擎後,在mysql系統資料庫中information_schmea的innodb_trx表中記錄了資料庫正在執行的事務。

欄位

說明

trx_id事務ID
trx_state事務的狀態 :Running,LockWait,RollingBack和Commiting等
trx_started事務開始執行時間
trx_requested_lock_id

事務需要等待的、但是已經被別的程式鎖定的資源id,一般可以和innodb_locks表關聯在一起,獲取更多的被鎖定的資源的詳細資訊

trx_wait_started事務開始等待時間
trx_weight事務的權重
trx_mysql_thread_id事務對應的mysql執行緒id
trx_query事務正在執行的sql語句
trx_operation_state事務操作的狀態
trx_tables_in_use

事務使用到的資料庫表的數量

trx_tables_locked事務鎖定的資料庫表的數量
trx_lock_structs
trx_lock_memory_bytes事務鎖住的記憶體大小
trx_rows_locked事務鎖定的資料記錄行數
trx_rows_modified事務更改的資料記錄行數
trx_concurrency_tickets
事務併發票數
trx_isolation_level事務的隔離級別:一般分為ReadUncommited(未提交讀取),ReadCommited (已提交讀取) ,RepeatedRead(可重複讀取),Serializable(序列化)四種不同級別
trx_unique_checks事務是否開啟唯一性檢查標識
trx_foreign_key_checks事務是否開啟外來鍵檢查標識
trx_last_foreign_key_error事務最後一次外來鍵檢查的錯誤
trx_adaptive_hash_latched
trx_adaptive_hash_timeout
trx_is_read_only
trx_autocommit_non_locking

Mysql系統資料庫information_schmea的innodb_locks表中記錄innodb資料庫引擎當前產生的鎖的情況。

Mysql 8.0鎖的觀測https://blog.csdn.net/n88Lpo/article/details/108211411

欄位說明
lock_id鎖的ID
lock_trx_id擁有鎖的事務ID,可以與Innodb_trx連結串列查詢,獲取事務詳細資訊
lock_mode

鎖的模式:

行級鎖:包括S(共享鎖),X(排他鎖),IS(意向共享鎖),IX (意向排他鎖)

表級鎖:包括S_GAP(共享間隙鎖),X_GAP(排他間隙鎖),IS_GAP(意向共享間隙鎖),IX_GAP(意向排他間隙鎖),AUTO_INC(自動遞增鎖)

頁級鎖 :介於行級鎖和表級鎖之間的一種鎖

lock_type鎖的型別,包括RECORD(行級鎖),TABLE(表級鎖),PAGE(頁級鎖),innodb引擎中主要採用行級鎖;
lock_table當前被鎖定的或者包含鎖定記錄的表的名稱
lock_index當lock_type為RECORD時,表示鎖定的索引的名稱,否則直接返回NULL
lock_space當lock_type為RECORD時,表示鎖定的表空間ID,否則直接返回NULL
lock_page當lock_type為RECORD時,表示鎖定的記錄行的頁數,否則直接返回NULL
lock_rec當lock_type為RECORD時,表示鎖定的資料行的數量
lock_data當lock_type為RECORD時,表示鎖定的記錄行的主鍵

Mysql系統資料庫information_schmea的innodb_lock_waits表中記錄innodb資料庫引擎當前執行的資料庫事務等待鎖的情況。

欄位說明
requesting_trx_id請求事務的id
requested_lock_id事務所等待的鎖的id,可以和innodb_locks表關聯查詢
blocking_trx_id阻塞事務的ID
blocking_lock_id阻塞了另一事務的、正在執行的事務的鎖的ID

資料庫中出現死鎖時,經常需要通過查詢innodb_trx,innodb_locks和innodb_lock_waits來找出在執行什麼事務操作時導致了死鎖,例如執行如下SQL語句可以列出資料中所有事務的等待和鎖定記錄

--這裡有sql語句

3.1.3Mysql資料庫表的監控