mysql數據庫配置參數理解說明二

--查配置前端

show variables

1>查看數據庫版本號算法

show variables like 'innodb_version'\G;

2>查看innodb存儲引擎處理io的線程配置sql

show variables like 'innodb_%io_threads'\G;
---------------
innodb_read_io_threads
innodb_write_io_threads

3>purgeThread:事務被提交後,其使用的undolog可能不在須要,所以須要purgeThread來回收已經使用並分配的undo頁
從innodb1.1版本後,用戶能夠配置開啓PurgeThread線程,能夠提升CPU的利用率數據庫

innodb_purge_threads=1;

4>Page Cleaner Thead:做用是將以前版本中髒頁的刷新操做放入單獨線程來完成,目的是減輕 主線程(Master Thread)的工做,對於用戶查詢線程阻塞起到優化做用。緩存

5>查看緩衝池大小:併發

show variables like 'innodb_buffer_pool_size'\G;

緩衝池緩存的數據頁類型有:索引頁、數據頁、undo頁、插入緩衝頁(insert buffer)、自適應哈希索引(adaptive hash index)、innodb存儲的鎖信息(lock info)、數據字典信息(data dictionary)高併發

6>緩衝池支持開啓多個緩衝池實例:每各頁根據哈希平均分配到各個緩衝池實例;好處:減小數據庫內部資源競爭,提升併發。優化

查看
show variables like 'innodb_buffer_pool_instances'\G;
設置
set global innodb_buffer_pool_instances=1  (或者大於1)

7>緩衝池的管理
緩衝池是經過  LRU(最近最少使用)算法來進行管理的。使用最頻繁的頁放在LRU列表的最前端,不常使用的放在列表末尾。當緩衝池放不下時,從末尾列表處開始釋放。線程

innodb存儲引擎在LRU列表中加入了 minpoint位置機制!
新讀到的頁,先不放在LRU最前端,而是放在minpoint位置處,minpoint位置默認配置是在LRU列表的5/8處 ,能夠用innodb_old_blocks_pct控制。日誌

參數innodb_old_blocks_time,用來表示讀取到minpoint位置須要等待多久纔會被加入到LRU列表的前端。

LRU管理已經讀取的頁,
Free表示未被用過的頁。

當LRU列表從old部分加入到new部分,稱爲(page made young)  ;因爲 innodb_old_blocks_time設置而沒有從old部分移到new部分,稱爲(page not made young)
page made young:顯示的是移動的次數

--查看INNODB存儲引擎狀態
SHOW ENGINE INNODB STATUS\G;

buffer pool size   :  緩衝池頁數;  (1頁=16k)
free buffers       :當前free列表中頁的數量
Database pages     :LRU列表中頁的數量

說明:
Free buffers +  Database pages  +(插入緩衝 、鎖信息、自適應哈希索引、數據字典信息) = Buffer pool size
Free buffers +  Database pages:這裏邊主要緩存的是 (數據頁和索引頁)

Buffer pool hit:  表示緩衝池的命中率  小於95%表示LRU被慢sql污染了

8>髒頁  (Flush 列表 :即髒頁列表)
LRU列表中的頁被修改後,稱該頁爲髒頁(dirty page)--緩衝池中頁和磁盤中頁數據不一致。

SHOW ENGINE INNODB STATUS\G;
Modified db pages :  髒頁數量

9>重作日誌緩衝
由於每秒都會刷新重作日誌到日誌文件,索引緩存不須要很大,有innodb_log_buffer_size來控制,默認8M。

10>當數據庫關閉是把全部髒頁刷新回磁盤,默認如此,能夠配置:
innodb_fash_shut_shutdown=1

11>LRL列表可用空間不夠,從innodb1.2版本後有專門的線程負責把髒頁刷新回磁盤  (Page Cleaner) innodb_lru_scan_depth 控制LRU列表可用頁數量,(默認1024)。

相關文章
相關標籤/搜索