plsql tables 没有表_InnoDB 层锁、事务、统计信息字典表 | 全方位认识 information_schema...
在上一篇《InnoDB 層系統字典表|全方位認識 information_schema》中,我們詳細介紹了InnoDB層的系統字典表,本期我們將為大家帶來系列第六篇《InnoDB 層鎖、事務、統計信息字典表|全方位認識 information_schema》
|?INNODB_LOCKS
該表提供查詢innodb引擎事務中正在請求的且并未獲得的且同時阻塞了其他事務的鎖信息(即沒有發生不同事務之間的鎖等待的鎖信息,在這里是查看不到的,例如,只有一個事務時,該事務所加的鎖信息無法查看到)
該表中的內容可以用于診斷高并發下的鎖爭用信息
該表為memory引擎臨時表,訪問該表需要擁有具有process權限
下面是該表中存儲的信息內容(即將廢棄,8.0中使用performance_schema.data_locks視圖代替)
root@localhost?:?information_schema?12:33:45>?select?*?from?innodb_locks\G;***************************?1.?row?***************************
lock_id:?2476293:115:5:2
lock_trx_id:?2476293
??lock_mode:?X
??lock_type:?RECORD
lock_table:?`luoxiaobo`.`t_luoxiaobo`
lock_index:?PRIMARY
lock_space:?115
??lock_page:?5
??lock_rec:?2
??lock_data:?5
***************************?2.?row?***************************
lock_id:?2476292:115:5:2
lock_trx_id:?2476292
??lock_mode:?X
??lock_type:?RECORD
lock_table:?`luoxiaobo`.`t_luoxiaobo`
lock_index:?PRIMARY
lock_space:?115
??lock_page:?5
??lock_rec:?2
??lock_data:?5
2?rows?in?set,?1?warning?(0.00?sec)
字段含義如下:
LOCK_ID:InnoDB內部的唯一鎖ID號。盡管LOCK_ID列值包含事務ID(由事務ID和鎖ID組成),但LOCK_ID中的數據格式隨時可能會發生變化(所以請不要編寫應用程序來解析LOCK_ID列值)
LOCK_TRX_ID:持有該鎖的事務ID。可以使用該字段和INNODB_TRX表中的TRX_ID關聯來在INNODB_TRX表中查詢更多的事務信息
LOCK_MODE:鎖模式(如何請求鎖)。允許的值有:S [,GAP]、X [,GAP]、IS [,GAP]、IX [,GAP]、AUTO_INC、UNKNOWN。除AUTO_INC和UNKNOWN以外,其他鎖模式都表示為間隙鎖(如果存在)
LOCK_TYPE:鎖類型。允許的值有,行級鎖時該字段值顯示為RECORD,表級鎖時該字段值顯示為TABLE
LOCK_TABLE:鎖定記錄相關的表名稱
LOCK_INDEX:如果LOCK_TYPE是RECORD,則該字段顯示鎖定記錄相關的索引名稱,否則該字段值為NULL
LOCK_SPACE:如果LOCK_TYPE是RECORD,則該字段顯示鎖定記錄相關的表空間ID,否則該字段值為NULL
LOCK_PAGE:如果LOCK_TYPE是RECORD,則該字段值顯示鎖定記錄相關的page number,否則該字段值為NULL
LOCK_REC:如果LOCK_TYPE為RECORD,則該字段值顯示鎖定記錄在頁內的堆號,否則該字段值為NULL
LOCK_DATA:該字段值顯示與鎖定記錄相關的數據(如果存在鎖定數據記錄的話)。如果LOCK_TYPE為RECORD,則該列值顯示的值為鎖定記錄的主鍵值,否則為NULL。如果沒有主鍵,則LOCK_DATA是具有唯一性的InnoDB內部行ID號值。如果對索引中鎖定的鍵值比最大值還大,或者鍵值是一個間隙鎖定,則LOCK_DATA列值將顯示偽記錄(supremum pseudo-record)。當包含已鎖定記錄的頁面不在緩沖池中時(在鎖定期間已將其分頁到磁盤的情況下),InnoDB為避免不必要的磁盤操作不會從磁盤獲取頁面。此時,LOCK_DATA列值顯示為NULL
|?INNODB_TRX
該表提供查詢當前在InnoDB引擎中執行的每個事務(不包括只讀事務)的信息,包括事務是否正在等待鎖、事務什么時間點開始、以及事務正在執行的SQL語句文本信息等(如果有SQL的話)
該表為memory引擎臨時表,查詢該表的用戶需要有process權限
下面是該表中存儲的信息內容
admin@localhost?:?information_schema?06:26:08>?select?*?from?INNODB_TRX?limit?1\G;***************************?1.?row?***************************
????????????????trx_id:?8075544
????????????trx_state:?RUNNING
??????????trx_started:?2017-09-25?18:24:20
trx_requested_lock_id:?NULL
??????trx_wait_started:?NULL
????????????trx_weight:?4
??trx_mysql_thread_id:?9
????????????trx_query:?NULL
??trx_operation_state:?NULL
????trx_tables_in_use:?0
????trx_tables_locked:?2
??????trx_lock_structs:?4
trx_lock_memory_bytes:?1136
??????trx_rows_locked:?2
????trx_rows_modified:?0
??trx_concurrency_tickets:?0
??trx_isolation_level:?READ?COMMITTED
????trx_unique_checks:?1
trx_foreign_key_checks:?1
trx_last_foreign_key_error:?NULL
trx_adaptive_hash_latched:?0
trx_adaptive_hash_timeout:?0
??????trx_is_read_only:?0
trx_autocommit_non_locking:?0
1?row?in?set?(0.00?sec)
字段含義如下:
TRX_ID:InnoDB引擎內部的唯一事務ID號。只讀和非鎖定事務不記錄
TRX_WEIGHT:事務的權重,該數值反映了事務修改的記錄行數和事務鎖定的記錄行數改變的行數(但不一定是確切的計數)。為了解決死鎖問題,InnoDB選擇權重最小的事務作為“受害者”進行回滾。另外,無論修改和鎖定行的數量如何,對非事務引擎表的事務都被認為比其他事務引擎的修改權重更大(因為非事務引擎表的修改無法回滾,只能回滾支持事務的引擎)
TRX_STATE:事務執行狀態。有效值為:RUNNING、LOCK WAIT、ROLLING BACK、COMMITTING
TRX_STARTED:事務開始時間
TRX_REQUESTED_LOCK_ID:如果TRX_STATE列值為LOCK WAIT,則該列值展示事務當前等待的鎖的ID;否則該列值為NULL。可以使用該列與INNODB_LOCKS表的LOCK_ID列進行關聯以查詢INNODB_LOCKS表中更多的鎖信息
TRX_WAIT_STARTED:如果TRX_STATE列值為LOCK WAIT,則該列值顯示事務開始等待鎖的時間,否則該列值為NULL
TRX_MYSQL_THREAD_ID:MySQL線程ID。可以將此列與INFORMATION_SCHEMA PROCESSLIST表的ID列進行關聯以查詢更多的線程信息
TRX_QUERY:事務正在執行的SQL語句文本
TRX_OPERATION_STATE:事務的當前操作(如果事務在當前有執行操作的話,否則列值為NULL)
TRX_TABLES_IN_USE:處理此事務的當前SQL語句時使用到的InnoDB表的數量
TRX_TABLES_LOCKED:當前SQL語句持有行鎖涉及到的InnoDB表的數量 (因為是行鎖,不是表鎖,所以盡管有些行被鎖定,但通常其他事務仍然可以進行讀寫操作)
TRX_LOCK_STRUCTS:事務持有的鎖數量
TRX_LOCK_MEMORY_BYTES:此事務的鎖結構在內存中占用的空間總大小
TRX_ROWS_LOCKED:被此事務鎖定的記錄近似行數。該值可能包含被標記為刪除但未實際刪除的行
TRX_ROWS_MODIFIED:此事務中修改和插入行的數量
TRX_CONCURRENCY_TICKETS:該列值表示當前事務在被換出之前可以執行多少工作,該數量由innodb_concurrency_tickets系統變量設置
TRX_ISOLATION_LEVEL:當前事務的隔離級別
TRX_UNIQUE_CHECKS:當前事務是否啟用或禁用了唯一性檢查。例如:唯一性檢查可能在批量導入數據之前關閉
TRX_FOREIGN_KEY_CHECKS:當前事務是否打開或關閉了外鍵檢查。例如:外鍵檢查可能在批量導入數據之前關閉
TRX_LAST_FOREIGN_KEY_ERROR:最后一個外鍵錯誤的詳細信息,如果無錯誤則該列值為NULL
TRX_ADAPTIVE_HASH_LATCHED:自適應散列索引是否被當前事務鎖定。當自適應散列索引搜索系統被分區時,單個事務不會鎖定整個自適應散列索引。自適應散列索引分區數量由innodb_adaptive_hash_index_parts系統變量設置,默認情況下參數值為8
TRX_ADAPTIVE_HASH_TIMEOUT:是否立即釋放自適應哈希索引的搜索鎖,或者保留來自MySQL的請求。當沒有自適應哈希索引爭用時,該值保持為零,并且語句會保留閂鎖直到事務完成。當存在爭用時,在爭用期間,該列值會減為零,并且在每次查找行后語句立即釋放閂鎖。當自適應散列索引搜索系統被分區(由innodb_adaptive_hash_index_parts設置分區數量)時,該列值始終為0
TRX_IS_READ_ONLY:事務是否是只讀事務,1表是只讀
TRX_AUTOCOMMIT_NON_LOCKING:值為1表示該事務中的SQL是一個沒有使用FOR UPDATE或LOCK IN SHARED MODE子句的SELECT語句,并且是自動提交的只包含一條語句的事務。當該列值和TRX_IS_READ_ONLY列值都是1時,InnoDB執行事務優化以減少事務相關的開銷
|?INNODB_LOCK_WAITS
該表提供查詢關于每個被阻塞的InnoDB事務的鎖等待記錄,包括發生鎖等帶事務所請求的鎖和阻止該鎖請求被授予的鎖
該表為memory引擎表,訪問該表用戶需要有process權限
下面是該表中存儲的信息內容
root@localhost?:?information_schema?12:38:55>?select?*?from?innodb_lock_waits\G;***************************?1.?row?***************************
requesting_trx_id:?2476294
requested_lock_id:?2476294:115:5:2
??blocking_trx_id:?2476292
blocking_lock_id:?2476292:115:5:2
1?row?in?set,?1?warning?(0.00?sec)
字段含義如下:
REQUESTING_TRX_ID:正在請求鎖(發生鎖等待的)的事務ID
REQUESTED_LOCK_ID:正在請求的鎖ID。 可通過該字段與INNODB_LOCKS表的LOCK_ID列做join,從INNODB_LOCKS表中查詢更多的鎖信息
BLOCKING_TRX_ID:正在阻塞另外一個事務獲得鎖(持有鎖的)的事務ID
BLOCKING_LOCK_ID:正在阻塞另外一個事務獲得鎖的鎖ID。可通過該字段與INNODB_LOCKS表的LOCK_ID列做join,從INNODB_LOCKS表中查詢更多的鎖信息
|?INNODB_BUFFER_PAGE
該表提供查詢關于buffer pool中的頁相關的信息
注意:?
* 對該表的查詢操作可能會導致明顯的性能下降(此表主要用于專家級性能監視、或者為MySQL開發性能相關的擴展使用),所以,除非必須,否則不要在生產環境中對該表進行查詢,如果確有需要查詢該表,可以使用tcpdump生產環境的網絡流量到一個測試實例中,并在測試實例中查詢該表?
* 當刪除表、表中的數據行、分區表的某個分區、或表的索引時,相關聯的頁將仍然保留在緩沖池中,直到其他數據需要更多的緩沖池空間時才會從緩沖池中驅逐這些頁,當這些頁被驅逐時才會更新INNODB_BUFFER_PAGE表中的記錄信息查詢該表需要用戶具有PROCESS權限,該表為Memory引擎臨時表
下面是該表中存儲的信息內容
root@localhost?:?information_schema?11:50:15>?select?*?from?INNODB_BUFFER_PAGE?limit?1\G;***************************?1.?row?***************************
????????POOL_ID:?0
??????BLOCK_ID:?0
??????????SPACE:?0
????PAGE_NUMBER:?7
??????PAGE_TYPE:?SYSTEM
????FLUSH_TYPE:?1
??????FIX_COUNT:?0
??????IS_HASHED:?NO
NEWEST_MODIFICATION:?25646701632
OLDEST_MODIFICATION:?0
????ACCESS_TIME:?1508663684
????TABLE_NAME:?NULL
????INDEX_NAME:?NULL
NUMBER_RECORDS:?0
??????DATA_SIZE:?0
COMPRESSED_SIZE:?0
????PAGE_STATE:?FILE_PAGE
????????IO_FIX:?IO_NONE
????????IS_OLD:?NO
FREE_PAGE_CLOCK:?0
1?row?in?set?(0.07?sec)
字段含義如下:
POOL_ID:buffer pool instance ID。用于區分多個緩沖池實例的標識符ID
BLOCK_ID:緩沖池塊ID
SPACE:表空間ID。與INNODB_SYS_TABLES表中的SPACE列值相同
PAGE_NUMBER:頁編號
PAGE_TYPE:頁類型。有效值為:ALLOCATED(新分配的頁面)、INDEX(BTREE節點頁)、UNDO_LOG(undo日志頁面)、INODE(索引節點頁)、IBUF_FREE_LIST(插入緩沖區空閑列表頁)、IBUF_BITMAP(插入緩沖區位圖頁)、SYSTEM(系統頁)、TRX_SYSTEM(事務系統數據頁)、FILE_SPACE_HEADER(文件空間頭部頁)、EXTENT_DESCRIPTOR(區塊描述符頁)、BLOB(未壓縮的BLOB頁)、COMPRESSED_BLOB(First 壓縮 BLOB 頁)、COMPRESSED_BLOB2(Subsequent 壓縮 BLOB頁)、IBUF_INDEX(插入緩沖索引頁)、RTREE_INDEX(RTREE索引頁)、UNKNOWN(未知頁)
FLUSH_TYPE:刷新類型
FIX_COUNT:在緩沖池中使用該塊的線程數。當該列值為零時,該區塊將被驅逐
IS_HASHED:在此頁上是否構建了hash索引
NEWEST_MODIFICATION:最新發生修改的LSN號
OLDEST_MODIFICATION:最早發生修改的LSN號
ACCESS_TIME:表示頁首次被訪問時間的抽象數字
TABLE_NAME:頁所屬的表名稱,該列僅適用于INDEX類型的頁
INDEX_NAME:頁所屬的索引名稱,索引包括聚集索引或二級索引的名稱。該列僅適用于INDEX類型的頁
NUMBER_RECORDS:頁內包含的記錄數
DATA_SIZE:頁內包含的記錄的總數據字節大小。該列僅適用于INDEX類型的頁
COMPRESSED_SIZE:壓縮頁的頁大小。對于未壓縮的頁該列值為空
PAGE_STATE:頁狀態。有效值為:NULL(表示該頁是干凈的壓縮頁或者是flush列表中的壓縮頁或者是用作緩沖池watch sentinels的頁)、NOT_USED(表示該頁在空閑列表中)、READY_FOR_USE(表示該頁為未分配的空閑頁)、FILE_PAGE(表示該頁為緩沖文件頁)、MEMORY (表該頁包含一個主內存對象)、REMOVE_HASH(表示該頁在被放入空閑列表之前需要刪除散列索引)
IO_FIX:表示該頁是否有I/O操作被掛起:IO_NONE表示沒有的I/O操作被掛起、IO_READ 表示該頁有讀操作被掛起、IO_WRITE 表示該頁有寫入操作被掛起
IS_OLD:表示塊是否位于LRU列表中舊塊的子列表中
FREE_PAGE_CLOCK:表示freed_page_clock計數器的值。 freed_page_clock計數器用于跟蹤從LRU列表的末尾移除的塊的數量
PS:該表中記錄的信息與show engine innodb status語句和show status like '%buffer_pool%';語句的輸出信息中一些頁的統計信息類似,他們是基于相同數據集輸出的,如下
#?show?engine語句root@localhost?:?(none)?11:15:59>?show?engine?innodb?
status\G;
............
----------------------
BUFFER?POOL?AND?MEMORY
----------------------
Total?large?memory?allocated?1099431936
Dictionary?memory?allocated?106991
Buffer?pool?size??65528
Free?buffers??????65165
Database?pages????363
Old?database?pages?0
Modified?db?pages??0
Pending?reads??????0
Pending?writes:?LRU?0,?flush?list?0,?single?page?0
Pages?made?young?0,?not?young?0
0.00?youngs/s,?0.00?non-youngs/s
Pages?read?328,?created?35,?written?39
0.00?reads/s,?0.00?creates/s,?0.00?writes/s
No?buffer?pool?page?gets?since?the?last?printout
Pages?read?ahead?0.00/s,?evicted?without?access?0.00/s,?Random?read?ahead?0.00/s
LRU?len:?363,?unzip_LRU?len:?0
I/O?sum[0]:cur[0],?unzip?sum[0]:cur[0]
............
#?show?status語句
root@localhost?:?(none)?11:18:06>?show?status?like?'%buffer_pool%';
+---------------------------------------+--------------------------------------------------+
|?Variable_name????????????????????????|?Value????????????????????????????????????????????|
+---------------------------------------+--------------------------------------------------+
|?Innodb_buffer_pool_dump_status????????|?Dumping?of?buffer?pool?not?started??????????????|
|?Innodb_buffer_pool_load_status????????|?Buffer?pool(s)?load?completed?at?180204?14:41:11?|
|?Innodb_buffer_pool_resize_status??????|??????????????????????????????????????????????????|
|?Innodb_buffer_pool_pages_data????????|?363??????????????????????????????????????????????|
|?Innodb_buffer_pool_bytes_data????????|?5947392??????????????????????????????????????????|
|?Innodb_buffer_pool_pages_dirty????????|?0????????????????????????????????????????????????|
|?Innodb_buffer_pool_bytes_dirty????????|?0????????????????????????????????????????????????|
|?Innodb_buffer_pool_pages_flushed??????|?39??????????????????????????????????????????????|
|?Innodb_buffer_pool_pages_free????????|?65165????????????????????????????????????????????|
|?Innodb_buffer_pool_pages_misc????????|?0????????????????????????????????????????????????|
|?Innodb_buffer_pool_pages_total????????|?65528????????????????????????????????????????????|
|?Innodb_buffer_pool_read_ahead_rnd????|?0????????????????????????????????????????????????|
|?Innodb_buffer_pool_read_ahead????????|?0????????????????????????????????????????????????|
|?Innodb_buffer_pool_read_ahead_evicted?|?0????????????????????????????????????????????????|
|?Innodb_buffer_pool_read_requests??????|?1718????????????????????????????????????????????|
|?Innodb_buffer_pool_reads??????????????|?329??????????????????????????????????????????????|
|?Innodb_buffer_pool_wait_free??????????|?0????????????????????????????????????????????????|
|?Innodb_buffer_pool_write_requests????|?515??????????????????????????????????????????????|
+---------------------------------------+--------------------------------------------------+
18?rows?in?set?(0.01?sec)
|?INNODB_BUFFER_PAGE_LRU
該表提供查詢緩沖池中的頁面信息,與INNODB_BUFFER_PAGE表不同,INNODB_BUFFER_PAGE_LRU表保存有關innodb buffer pool中的頁如何進入LRU鏈表以及在buffer pool不夠用時確定需要從緩沖池中逐出哪些頁
與INNODB_BUFFER_PAGE表一樣,不要在生產系統上查詢,查詢該表可能需要MySQL分配一大塊連續的內存,且分配用于查詢該表的內存時可能會導致內存不足錯誤,特別是buffer pool分配大小超過數GB的數據庫實例中。另外,查詢此表時MySQL需要遍歷LRU鏈表,遍歷時會鎖定緩沖池的數據結構,這會降低數據庫實例的并發性能,特別是buffer pool分配大小超過數GB的數據庫實例中
該表為Memory引擎臨時表
下面是該表中存儲的信息內容
admin@localhost?:?information_schema?06:35:36>?select?*?from?INNODB_BUFFER_PAGE_LRU?where?TABLE_NAME='`sbtest`.`sbtest1`'?limit?1\G;***************************?1.?row?***************************
????????POOL_ID:?0
??LRU_POSITION:?192
??????????SPACE:?32
????PAGE_NUMBER:?108304
??????PAGE_TYPE:?INDEX
????FLUSH_TYPE:?0
??????FIX_COUNT:?0
??????IS_HASHED:?NO
NEWEST_MODIFICATION:?0
OLDEST_MODIFICATION:?0
????ACCESS_TIME:?0
????TABLE_NAME:?`sbtest`.`sbtest1`
????INDEX_NAME:?i_c
NUMBER_RECORDS:?124
??????DATA_SIZE:?16120
COMPRESSED_SIZE:?0
????COMPRESSED:?NO
????????IO_FIX:?IO_NONE
????????IS_OLD:?NO
FREE_PAGE_CLOCK:?0
1?row?in?set?(0.00?sec)
字段含義如下:
INNODB_BUFFER_PAGE_LRU表與INNODB_BUFFER_PAGE表具有相同的列,這里不再贅述,但要注意:INNODB_BUFFER_PAGE_LRU表多了一個LRU_POSITION列,少了一個BLOCK_ID列。LRU_POSITION列表示頁在LRU鏈表中的位置
|?INNODB_TEMP_TABLE_INFO
該表提供查詢有關在InnoDB實例中當前處于活動狀態的用戶(已建立連接的用戶,斷開的用戶連接對應的臨時表會被自動刪除)創建的InnoDB臨時表的信息。 它不提供查詢優化器使用的內部InnoDB臨時表的信息查詢。INNODB_TEMP_TABLE_INFO表在首次查詢時創建,且數據僅存在于內存中。 不會持久化到磁盤
該表為memory引擎臨時表,查詢該表的用戶需要有process權限
下面是該表中存儲的信息內容
admin@localhost?:?information_schema?06:37:36>?select?*?from?INNODB_TEMP_TABLE_INFO;+----------+-------------+--------+-------+----------------------+---------------+
|?TABLE_ID?|?NAME????????|?N_COLS?|?SPACE?|?PER_TABLE_TABLESPACE?|?IS_COMPRESSED?|
+----------+-------------+--------+-------+----------------------+---------------+
|??????130?|?#sqldd5_b_0?|??????4?|??165?|?FALSE????????????????|?FALSE????????|
+----------+-------------+--------+-------+----------------------+---------------+
1?row?in?set?(0.00?sec)
字段含義如下:
TABLE_ID:活躍臨時表ID
NAME:活躍臨時表的表名稱
N_COLS:臨時表中的列數量。該數字中總是包含由InnoDB創建的三個隱藏列(DB_ROW_ID,DB_TRX_ID和DB_ROLL_PTR)
SPACE:臨時表所在表空間的表空間ID(數值)。在5.7中,未壓縮的InnoDB臨時表都保存在共享臨時表空間文件中。共享臨時表空間的數據文件定義由innodb_temp_data_file_path系統參數配置。默認情況下,位于數據目錄中的名為ibtmp1文件,壓縮的臨時表保存在由tmpdir系統參數定義的路徑下,每個表獨立一個臨時表空間文件。臨時表空間的SPACE ID始終為非零值,且在服務器重新啟動時動態隨機生成一個值
PER_TABLE_SPACE:是否是獨立臨時表空間,TRUE表示臨時表保存在獨立表空間文件中。FALSE表示臨時表保存在共享臨時表空間文件中
IS_COMPRESSED:值為TRUE表示臨時表啟用了壓縮
|?INNODB_BUFFER_POOL_STATS
該表提供查詢一些Innodb buffer pool中的狀態信息,該表中記錄的信息與SHOW ENGINE INNODB STATUS輸出的信息類似相同,另外,innodb buffer pool的一些狀態變量也提供了部分相同的值
將緩沖池中的頁設置為“young”或“not young”的概念指的是將緩沖池中的頁在緩沖池數據結構中首尾相連構成一個鏈表(LRU list),劃分一個中點(按照innodb_old_blocks_pct系統變量值劃分,默認值為37%),把鏈表分為兩個子鏈表(前半部分叫young sublist,也就是熱點數據頁、后半部分叫old sublist,也就是剛剛讀入buffer pool中的數據頁),把數據頁在這兩個子鏈表之間進行傳送。 在old sublist鏈表中的頁在innodb_old_blocks_time定義的時間內連續兩次被訪問,則會被移動到LRU list首部,即,young sublist鏈表中成為熱點數據頁。而處于young sublist鏈表中的“young”頁達到一定時間就會從緩沖池中老化,成為old sublist鏈表中的“not young”頁,“not young”頁更接近驅逐點(當緩沖池中沒有足夠的空閑頁時,這些接近驅逐點位置的頁就會被驅逐)
查看該表需要有process權限,該表為Memory引擎臨時表
下面是該表中存儲的信息內容
admin@localhost?:?information_schema?06:50:38>?select?*?from?INNODB_BUFFER_POOL_STATS?limit?1\G;***************************?1.?row?***************************
????????????????????POOL_ID:?0
??????????????????POOL_SIZE:?32764
????????????????FREE_BUFFERS:?32074
??????????????DATABASE_PAGES:?690
??????????OLD_DATABASE_PAGES:?235
????MODIFIED_DATABASE_PAGES:?0
??????????PENDING_DECOMPRESS:?0
??????????????PENDING_READS:?0
??????????PENDING_FLUSH_LRU:?0
??????????PENDING_FLUSH_LIST:?0
????????????PAGES_MADE_YOUNG:?0
????????PAGES_NOT_MADE_YOUNG:?0
??????PAGES_MADE_YOUNG_RATE:?0
??PAGES_MADE_NOT_YOUNG_RATE:?0
??????????NUMBER_PAGES_READ:?294
????????NUMBER_PAGES_CREATED:?396
????????NUMBER_PAGES_WRITTEN:?1785
????????????PAGES_READ_RATE:?0
??????????PAGES_CREATE_RATE:?0
??????????PAGES_WRITTEN_RATE:?0
????????????NUMBER_PAGES_GET:?10822
????????????????????HIT_RATE:?0
YOUNG_MAKE_PER_THOUSAND_GETS:?0
NOT_YOUNG_MAKE_PER_THOUSAND_GETS:?0
????NUMBER_PAGES_READ_AHEAD:?0
??NUMBER_READ_AHEAD_EVICTED:?0
????????????READ_AHEAD_RATE:?0
????READ_AHEAD_EVICTED_RATE:?0
????????????????LRU_IO_TOTAL:?0
??????????????LRU_IO_CURRENT:?0
????????????UNCOMPRESS_TOTAL:?0
??????????UNCOMPRESS_CURRENT:?0
1?row?in?set?(0.00?sec)
字段含義如下:
POOL_ID:緩沖池ID。用于多個buffer pool instance時區分多個緩沖池實例的唯一標識符
POOL_SIZE:每個buffer pool instance中的頁數量
FREE_BUFFERS:每個buffer pool instance中的空閑頁數
DATABASE_PAGES:每個每個buffer pool instance中包含的數據頁數。這個數量包括臟頁和即將被清理的頁
OLD_DATABASE_PAGES:每個buffer pool instance中old sublist鏈表中的頁數
MODIFIED_DATABASE_PAGES:每個buffer pool instance中被修改(臟)的數據頁的數量
PENDING_DECOMPRESS:每個buffer pool instance中的解壓縮的頁數
PENDING_READS:每個buffer pool instance中被掛起讀取的頁數量
PENDING_FLUSH_LRU:每個buffer pool instance中在LRU鏈表中被掛起刷新的頁數
PENDING_FLUSH_LIST:每個buffer pool instance中在刷新列表中被掛起刷新的頁數
PAGES_MADE_YOUNG:每個buffer pool instance中被移動到young sublist鏈表中的頁數
PAGES_NOT_MADE_YOUNG:每個buffer pool instance中未被移動到young sublist鏈表中的頁數
PAGES_MADE_YOUNG_RATE:每個buffer pool instance中每秒被移動到young sublist鏈表中的頁數(自上次打印輸出/時間以來被移動到young sublist的頁數)
PAGES_MADE_NOT_YOUNG_RATE:每個buffer pool instance中每秒未被移動到young sublist鏈表中的頁數(自上次打印輸出/時間以來,未被移動到young sublist的頁面)
NUMBER_PAGES_READ:每個buffer pool instance中被讀取的頁數
NUMBER_PAGES_CREATED:每個buffer pool instance中被創建的頁數
NUMBER_PAGES_WRITTEN:每個buffer pool instance中被寫入的頁數
PAGES_READ_RATE:每個buffer pool instance中每秒被讀取的頁數(自上次打印輸出/經過的時間以來讀取的頁數)
PAGES_CREATE_RATE:每個buffer pool instance中每秒被創建的頁數(自上次打印輸出/經過的時間以來被創建的頁數)
PAGES_WRITTEN_RATE:每個buffer pool instance中每秒被寫入的頁數(從上次打印輸出/時間以來被寫入的頁數)
NUMBER_PAGES_GET:每個buffer pool instance中邏輯讀取請求的頁數量
HIT_RATE:每個buffer pool instance中的緩沖池命中率
YOUNG_MAKE_PER_THOUSAND_GETS:每個buffer pool instance中The number of pages made young per thousand gets
NOT_YOUNG_MAKE_PER_THOUSAND_GETS:每個buffer pool instance中The number of pages not made young per thousand gets
NUMBER_PAGES_READ_AHEAD:每個buffer pool instance中的預讀的頁數
NUMBER_READ_AHEAD_EVICTED:每個buffer pool instance中后臺線程預讀入到InnoDB緩沖池的頁數,且這些頁是還沒來得及訪問就被驅逐的頁
READ_AHEAD_RATE:每個buffer pool instance中每秒預讀的頁數(自上次打印輸出/經過的時間以來的頁數)
READ_AHEAD_EVICTED_RATE:每個buffer pool instance中每秒預讀的且還沒來得及被訪問就被驅逐的頁數
LRU_IO_TOTAL:每個buffer pool instance中的LRU IO總數
LRU_IO_CURRENT:每個buffer pool instance中當前的LRU IO數量
UNCOMPRESS_TOTAL:每個buffer pool instance中解壓縮的總頁數
UNCOMPRESS_CURRENT:每個buffer pool instance中當前解壓縮的頁數
|?INNODB_METRICS
該表提供查詢InnoDB更為詳細細致的性能信息,是對InnoDB的PERFORMANCE_SCHEMA的補充。通過對該表的查詢,可用于檢查innodb的整體健康狀況。也可用于診斷性能瓶頸、資源短缺和應用程序的問題等。
該表中的每一行記錄代表innodb源代碼中的一個instruments點,對應源代碼中的一個計數器。每個計數器都可以單獨啟動、停止和重置值。也可以使用通用模塊名稱為一組計數器執行起停與重置值操作(同屬于一個模塊下的一組instrument,使用模塊名稱即可快速起停、重置一組instruments)
默認情況下,只開啟了極少數的計數器。 如果要啟動、停止和重置計數器,可以使用計數器的名稱、或者模塊的名稱、或者通配符匹配名稱來設置innodb_monitor_enable、innodb_monitor_disable、innodb_monitor_reset、innodb_monitor_reset_all系統變量來起停、重置計數器。如果設置這4個變量來操作這些計數器
該表為memory引擎臨時表,查詢該表的用戶需要有process權限
下面是該表中存儲的信息內容
admin@localhost?:?information_schema?06:48:59>?select?*?from?INNODB_METRICS?where?COUNT_RESET?>?0?limit?1\G;***************************?1.?row?***************************
??????NAME:?lock_timeouts
??SUBSYSTEM:?lock
??????COUNT:?2
??MAX_COUNT:?2
??MIN_COUNT:?NULL
??AVG_COUNT:?0.00005471806516921562
COUNT_RESET:?2
MAX_COUNT_RESET:?2
MIN_COUNT_RESET:?NULL
AVG_COUNT_RESET:?NULL
??TIME_ENABLED:?2017-09-25?08:40:07
??TIME_DISABLED:?NULL
??TIME_ELAPSED:?36551
TIME_RESET:?NULL
????STATUS:?enabled
??????TYPE:?counter
????COMMENT:?Number?of?lock?timeouts
1?row?in?set?(0.00?sec)
字段含義如下:
NAME:計數器的唯一名稱
SUBSYSTEM:計數器對應的模塊名稱,使用SET GLOBAL語法+innodb_monitor_enable、innodb_monitor_disable、innodb_monitor_reset、innodb_monitor_reset_all幾個系統變量與一起使用來起停、重置計數器時,需要在模塊名前面加“module ”字樣,例如:子系統為dml,則開啟該模塊下的所有計數器的SQL語句為 SET GLOBAL innodb_monitor_enable = module_dml;
COUNT:自計數器啟用后的統計值
MAX_COUNT:自計數器啟用以來的最大統計值
MIN_COUNT:自計數器啟用后的最小統計值
AVG_COUNT:自計數器啟用以來的平均統計值
COUNT_RESET:自上次重置計數器值以來的計數器值
MAX_COUNT_RESET:自上次重置計數器以來的最大計數器值
MIN_COUNT_RESET:自上次重置計數器以來的最小計數器值
AVG_COUNT_RESET:自上次重置計數器以來的平均計數器值
TIME_ENABLED:最近一次啟動計數器的時間
TIME_DISABLED:最近一次關閉計數器的時間
TIME_ELAPSED:自計數器啟動以來的經過時間,以秒為單位
TIME_RESET:最近一次重置計數器的時間
STATUS:計數器的當前狀態,有效值為:enabled和disabled
TYPE:計數器是累計值類型,還是測量某個資源的當前值類型
COMMENT:計數器注釋
本期內容就介紹到這里,本期內容參考鏈接如下:
https://dev.mysql.com/doc/refman/5.7/en/innodb-locks-table.html
https://dev.mysql.com/doc/refman/5.7/en/innodb-trx-table.html
https://dev.mysql.com/doc/refman/5.7/en/innodb-lock-waits-table.html
https://dev.mysql.com/doc/refman/5.7/en/innodb-buffer-page-lru-table.html
https://dev.mysql.com/doc/refman/5.7/en/innodb-temp-table-info-table.html
https://dev.mysql.com/doc/refman/5.7/en/innodb-buffer-page-table.html
https://dev.mysql.com/doc/refman/5.7/en/innodb-buffer-pool-stats-table.html
https://dev.mysql.com/doc/refman/5.7/en/innodb-metrics-table.html
羅小波·數據庫技術專家
《千金良方——MySQL性能優化金字塔法則》、《數據生態:MySQL復制技術與生產實踐》作者之一。熟悉MySQL體系結構,擅長數據庫的整體調優,喜好專研開源技術,并熱衷于開源技術的推廣,在線上線下做過多次公開的數據庫專題分享,發表過近100篇數據庫相關的研究文章。
全文完。
Enjoy MySQL?:)
葉老師的「MySQL核心優化」大課已升級到MySQL 8.0,掃碼開啟MySQL 8.0修行之旅吧
總結
以上是生活随笔為你收集整理的plsql tables 没有表_InnoDB 层锁、事务、统计信息字典表 | 全方位认识 information_schema...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python能print中文吗_win1
- 下一篇: mybatis plugins_[MyB