mysql 开发进阶篇系列 18 MySQL Server(innodb_buffer_pool_size)
2018-08-09 17:41
931 查看
从这篇开始,讲innodb存储引擎中,对于几个重要的服务器参数配置。这些参数以innodb_xx 开头。
1. innodb_buffer_pool_size的设置
这个参数定义了innodb存储引擎的表数据和索引数据的最大内存缓冲区大小,和myisam不同,myisam的key_buffer_size只缓存索引键,而innodb_buffer_pool_size是同时为数据块和索引块做缓存的。这个特性与oracle是一样的,这个值设得越高,访问表中数据需要的磁盘i/o就越少(物理I/O)。在一个专用的数据库服务器上,可以设置这个参数达机器物理内存大小的50--80%。考虑点:在单独给 MySQL 使用的主机里,内存分配还包括系统使用,线程独享,myisam缓存等。还有允许的并发连接数。还有建议不要把它设置得太大,因为对物理内存的竞争可能在操作系统上导致内存调度。
SELECT 268435456/1024.0/2014.0=130M。
上面内存约等于2031912/1024.0=1984M。
2. buffer_pool 运行参数
Buffer Pool使用率:14328.0/16382.0 *100=87.46%
缓存读命中率: (529670886-941147)/529670886.0 *100 =99.82%
实际占用空间是:16382 *16(页单位)*1024=268402688 字节。 上面给buffer_pool_size分配的是268435456字节。
3. 设置buffer_pool参数
由于SHOW VARIABLES下的参数都是静态值。当mysql重启时,上面的缓存设置将失效。
重启后还是134217728.如下图
要永久改变,需要在操作系统里使用vim my.cnf 来修改. 如下图所示, 去掉#重新定义值。
1. innodb_buffer_pool_size的设置
这个参数定义了innodb存储引擎的表数据和索引数据的最大内存缓冲区大小,和myisam不同,myisam的key_buffer_size只缓存索引键,而innodb_buffer_pool_size是同时为数据块和索引块做缓存的。这个特性与oracle是一样的,这个值设得越高,访问表中数据需要的磁盘i/o就越少(物理I/O)。在一个专用的数据库服务器上,可以设置这个参数达机器物理内存大小的50--80%。考虑点:在单独给 MySQL 使用的主机里,内存分配还包括系统使用,线程独享,myisam缓存等。还有允许的并发连接数。还有建议不要把它设置得太大,因为对物理内存的竞争可能在操作系统上导致内存调度。
-- innodb缓存区大小(kb) SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SELECT 268435456/1024.0/2014.0=130M。
查看内存大小: [root@xuegod64 ~]# cat /proc/meminfo
上面内存约等于2031912/1024.0=1984M。
2. buffer_pool 运行参数
-- 下面是buffer_pool 运行相关参数 SHOW STATUS LIKE 'Innodb_buffer_pool_%';
Innodb_buffer_pool_pages_total | 缓存池页总数目。 共占用了16382 页 。单位page |
Innodb_buffer_pool_pages_free | 缓存池剩余的页数目。 在16382 页中有2000页没有使用。 单位page |
Innodb_buffer_pool_pages_data | 缓存池中包含数据的页的数目,包括脏页。 14273个页含有数据。单位page |
Innodb_buffer_pool_read_requests | innodb进行逻辑读的数量。 529670886次请求读。单位次数 |
Innodb_buffer_pool_reads | 进行逻辑读取时无法从缓冲池中获取而执行单页读取的次数。 941147次是物理I/0读取。单位次数 |
Innodb_buffer_pool_write_requests | 写入 InnoDB 缓冲池的次数。 48606702次请求写入。单位次数 |
Innodb_buffer_pool_read_ahead_rnd | 记录进行随机读的时候产生的预读次数。 0次 |
Innodb_buffer_pool_read_ahead | 预读到innodb buffer pool里次数。 1465370次。 单位page |
Innodb_buffer_pool_read_ahead_evicted | 预读的页数,但是没有被读取就从缓冲池中被替换的页的数量,一般用来判断预读的效率。 0次 |
Innodb_buffer_pool_wait_free | 数据要写入buffer pool的时候,需要等待空闲页的次数。是指缓存池里没有干净页的时候读取或创建页,要先等待页被刷新。 2927次。 单位次数。 |
Innodb_buffer_pool_pages_dirty | buffer pool缓存池中脏页的数目。 0次。单位是page |
Innodb_buffer_pool_pages_flushed | buffer pool缓存池中刷新页请求的数目。 15437744次。单位page |
Innodb_buffer_pool_pages_misc | buffer pool缓存池中当前页已经被用作管理用途或hash index而不能用作为普通数据页的数目。 109次。单位page |
Innodb_buffer_pool_pages_old | 在旧区域存放着多少个页。 5249次。单位page |
Innodb_buffer_pool_pages_made_young | 移动到新区域的有多少个页。 353059次。单位page |
Innodb_buffer_pool_pages_made_not_young | 没有移动到新区域的有多少个页。 31725809次。单位page |
缓存读命中率: (529670886-941147)/529670886.0 *100 =99.82%
实际占用空间是:16382 *16(页单位)*1024=268402688 字节。 上面给buffer_pool_size分配的是268435456字节。
3. 设置buffer_pool参数
-- 从134217728设置成268435456 (另一台mysql) SET GLOBAL innodb_buffer_pool_size= 268435456
由于SHOW VARIABLES下的参数都是静态值。当mysql重启时,上面的缓存设置将失效。
[root@xuegod64 ~]# systemctl stop mysqld.service [root@xuegod64 ~]# systemctl start mysqld.service
重启后还是134217728.如下图
要永久改变,需要在操作系统里使用vim my.cnf 来修改. 如下图所示, 去掉#重新定义值。
相关文章推荐
- mysql 开发进阶篇系列 19 MySQL Server(innodb_flush_log_at_trx_commit与sync_binlog)
- mysql 开发进阶篇系列 16 MySQL Server(myisam key_buffer)
- mysql 开发进阶篇系列 17 MySQL Server(key_buffer与table_cache)
- MYSQL 之SET GLOBAL innodb_buffer_pool_size =n
- mysql - 为magento性能测试修改innodb的innodb_buffer_pool_size而引发的问题
- Mysql Innodb 引擎优化 参数(innodb_buffer_pool_size)
- mysql 开发进阶篇系列 7 锁问题(innodb锁争用情况及锁模式)
- mysql 开发进阶篇系列 9 锁问题 (Innodb 行锁实现方式)
- MySQL调优之innodb_buffer_pool_size大小设置
- MySQL 效能優化之參數配置修改(innodb_buffer_pool_size)
- MySQL5.7 在线调整Innodb_Buffer_Pool_size不用重启mysql进程
- 提升mysql性能的关键参数之innodb_buffer_pool_size、innodb_buffer_pool_instances
- MySQL5.7 在线调整Innodb_Buffer_Pool_size不用重启mysql进程
- 提升mysql性能的关键参数之innodb_buffer_pool_size、innodb_buffer_pool_instances
- mysql参数之innodb_buffer_pool_size大小设置
- linux下查找字符串&mysql-为magento性能测试修改innodb的innodb_buffer_pool_size而引发的问题
- MySQL innodb_buffer_pool_size参数
- Mysql Innodb 引擎优化 参数(innodb_buffer_pool_size)
- MySQL 效能優化之參數配置修改(innodb_buffer_pool_size)
- MySql配置优化-innodb_buffer_pool_size