buffer相关参数:
show GLOBAL VARIABLES LIKE 'innodb_buffer_pool_instances'; show GLOBAL VARIABLES LIKE 'innodb_buffer_pool_size'; show GLOBAL VARIABLES LIKE 'innodb_buffer%'; show GLOBAL VARIABLES LIKE 'innodb_read_ahead_threshold';
DML缓存(inserts、deletes、purges、changes、all、none)
show GLOBAL VARIABLES LIKE 'innodb_change_buffering';
DML缓存占innodb缓存比例
show GLOBAL VARIABLES LIKE 'innodb_change_buffer_max_size';
show GLOBAL VARIABLES LIKE 'innodb_max_dirty_pages_pct';
show GLOBAL VARIABLES LIKE 'innodb_io_capacity';
SHOW VARIABLES LIKE 'innodb_buffer_pool_size'
+-------------------------+------------+
| Variable_name | Value |
+-------------------------+------------+
| innodb_buffer_pool_size | 6442450944 |
+-------------------------+------------+
1 row in set (0.00 sec)
# 6442450944/1024/1024/1024 = 6G # 拆分缓冲池成多个部分,这样可以在高并发的情况下减少竞争
# 查看Buffer内free_buffer和总页数
SELECT POOL_ID,POOL_SIZE,FREE_BUFFERS,DATABASE_PAGES FROM INNODB_BUFFER_POOL_STATS;
# --pages_made_young : Old端移动到New端的数据页数;
# --pages_not_made_young : 在innodb_old_blocks_time从Old移动到New端的数据页数)
show GLOBAL VARIABLES LIKE 'innodb_old_blocks_time';
SELECT POOL_ID,HIT_RATE,PAGES_MADE_YOUNG,PAGES_NOT_MADE_YOUNG FROM INNODB_BUFFER_POOL_STATS;
#查看脏数据页(table_name为NULL表示属于系统表空间)
SELECT table_name,space,page_number,page_type FROM INNODB_BUFFER_PAGE_LRU WHERE OLDEST_MODIFICATION > 0;
innodb buffer pool预读
预读就是IO异步读取多个页数据读入buffer pool的一个过程,并且这些页被认为是很快就会被 读取到的
线性预读:能够预测将有那些数据很快能被读到的一种技术,因为buffer pool中的页数据是顺序访问的。innodb_read_ahead_threshold的值可以设置为0-64的任何一个值。默认值是56,值设置的越高就会造成检索更加严格。当设置为8的时候,只有小于8个页数据被读进buffer pool中才会被检索。
随机预读:随机预读能够将在内存当中的将被读取到的页信息很快的组织到一个区中,而且这些页面的读取顺序不用分顺序,INNODB能够很快调度buffer pool当中相似的很多页的信息,并且发出请求。这些页可能并不是连续的,要想使用这个功能就要设置innodb_random_read_ahead 这个参数为ON。
参考: