没有合适的资源?快使用搜索试试~ 我知道了~
首页MySQL8.0内存相关参数总结
MySQL理论上使用的内存 = 全局共享内存 + max_connections×线程独享内存。 也就是:innodb_buffer_pool_size + innodb_log_buffer_size + thread_cache_size +table_open_cache + table_definition_cache +key_buffer_size + max_connections *( thread_stack+ sort_buffer_size+join_buffer_size + read_buffer_size+read_rnd_buffer_size+ binlog_c
资源详情
资源评论
资源推荐

MySQL8.0内存相关参数总结内存相关参数总结
MySQL理论上使用的内存 = 全局共享内存 + max_connections×线程独享内存。
也就是:innodb_buffer_pool_size + innodb_log_buffer_size + thread_cache_size +table_open_cache +
table_definition_cache +key_buffer_size + max_connections *( thread_stack+ sort_buffer_size+join_buffer_size +
read_buffer_size+read_rnd_buffer_size+ binlog_cache_size+tmp_table_size)
下面我们按照全局内存参数与线程独享参数分类,简单介绍下相关参数的作用。
全局共享内存全局共享内存
innodb_buffer_pool_size
innodb_buffer_pool_size这个参数是对Mysql数据库最重要的参数之一,它对 InnoDB 存储引擎的作用类似于 Key Buffer
Cache 对 MyISAM 存储引擎的影响,主要区别是 InnoDB Buffer Pool 不仅仅缓存索引数据,会缓存表的数据,而且完全按照
数据文件中的数据快结构信息来缓存,这一点和 Oracle SGA 中的 database buffer cache 类似,因此在SHOW ENGINE
innodb status中查到的Buffer pool size要乘以16K。
可以通过 (Innodb_buffer_pool_read_requests – Innodb_buffer_pool_reads) / Innodb_buffer_pool_read_requests * 100% 计
算得到 InnoDB Buffer Pool 的命中率。
innodb_change_buffering
change buffering是MySQL5.5加入的新特性,change buffering是insert buffer的加强,insert buffer只针对insert有效,change
buffering对insert、delete、update(delete+insert)、purge都有效。当修改一个索引块(secondary index)时的数据时,索引块在
buffter pool中不存在,修改信息就会被cache在change buffer中,当通过索引扫描把需要的索引块读取到buffer pool时,会和
change buffer中修改信息合并,再择机写回disk。
目的还是为了减少随机IO带来性能损耗,说明白了:把随机IO尽量变成顺序IO。现在SSD盛行,在SSD上随机访问和顺序访
问性能几乎差不多的情况下,change buffering特性不会带来多大的性能提升,但对于廉价的机械硬盘,这个参数还是能帮助
提高性能的。
change buffering由参数innodb_change_buffering控制:
all: buffer inserts, delete-marking operations, and purges.
none: Do not buffer any operations.
inserts: Buffer insert operations.
deletes: Buffer delete-marking operations.
changes: Buffer both inserts and delete-marking.
purges: Buffer the physical deletion operations that happen in the background.
注意这个内存是在Innodb的buffer pool中分配的,计算总内存的时候不用算它。
innodb_change_buffer_max_size
表示change buffer在buffer pool中的最大占比,默认25%,最大50%。如果系统中有严重的insert、update并且还有活跃的
delete时,就增大max_size;针对不更改数据的纯报表系统,可以减小该参数值。
innodb_log_buffer_size
这是 InnoDB 存储引擎的事务日志所使用的缓冲区。为了提高性能,也是先将信息写入 Innofb Log Buffer 中,当满足
innodb_flush_log_trx_commit 参数所设置的相应条件(或者日志缓冲区写满)之后,才会将日志写到文件(或者同步到磁
盘)中。innodb_flush_log_trx_commit 参数可以设置为0,1,2,解释如下:
0:log buffer中的数据将以每秒一次的频率写入到logfile中,且同时会进行文件系统到磁盘的同步操作,但是每个事务的
commit并不会触发任何log buffer 到log file的刷新或者文件系统到磁盘的刷新操作,该模式速度最快,但不太安全,mysqld进
程的崩溃会导致上一秒钟所有事务数据的丢失;
1:在每次事务提交的时候将log buffer 中的数据都会写入到logfile,同时也会触发文件系统到磁盘的同步,该模式是最安全
的,但也是最慢的一种方式;
2:事务提交会触发log buffer 到logfile的刷新,但并不会触发磁盘文件系统到磁盘的同步,该模式速度较快,也比0安全,只
有在操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失。
thread_cache_size
线程池缓存大小,当客户端断开连接后将当前线程缓存起来,当在接到新的连接请求时快速响应无需创建新的线程 。这尤其
对那些使用短连接的应用程序来说可以极大的提高创建连接的效率。可以通过(Connections – Threads_created) /
Connections * 100% 计算出连接线程缓存的命中率。也可以通过如下几个MySQL状态值来适当调整线程池的大小:
mysql> show global status like 'Thread%';


















weixin_38637272
- 粉丝: 4
- 资源: 938
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

评论0