mysql innodb 性能_Mysql Innodb 性能优化

本文介绍了MySQL InnoDB存储引擎的关键参数,包括innodb_buffer_pool_size、innodb_additional_mem_pool、innodb_file_per_table等,详细解释了这些参数的作用及合理设置的方法。
摘要由CSDN通过智能技术生成

innodb_buffer_pool_size

innodb_buffer_pool_size 参数指的是内存中缓存 innodb 表的索引、数据的插入时缓冲,这是 innodb 参数优化的首要参数

innodb_buffer_pool_size 默认值是 8M,如果 mysql 所用的是专用的 DB 服务器,那么可以把这个数字设置为实际物理内存的 70% 到 80%,这个参数不能动态改变,所以配置时需要考虑:如果分配过大,那么会导致 mysql 占用内存过大,使机器 swap 增多,导致查询变慢

如果分配过小,又会由于缓存无法被充分利用而致使磁盘io增多,降低性能

通过 show engine innodb status 命令可以查看该参数

innodb_additional_mem_pool

innodb 内部目录存放空间大小

这个参数通常不需要配置太大,16M 即可,可以在运行时进行调整,如果数据库中表较多,可以适当增大该参数

通过 show engine innodb status 命令查看运行中的 DB 状态,Total memory allocated 与 in additional pool allocated 两项数值进行比较,可以根据实际情况适当调整

执行 innodb_additional_mem_pool=16M 可以设置该参数

innodb_file_per_table

是否为每个表使用独立的文件存储,参数为 0 或 1,1 是开启,0 是关闭

通常来说还是建议将这一项开启的

innodb_flush_logs_at_trx_commix

事务提交方式,有三种取值:0、1、2,默认为 1,推荐为了保证数据的可靠性,主库设置为 1,如果设置为 0 或 2 可以提高效率,但是会丢失 1 秒的事务0 -- log buffer 数据每隔 1 秒写入到日志文件中,并将文件刷新到磁盘,而事务提交不会触发写磁盘操作

1 -- 事务提交时立刻写入日志文件并刷新磁盘

2 -- 每次事务提交时,立即将数据写入文件,但每隔 1 秒刷新一次磁盘

autocommit

是否自动提交,1 表示启用,0 表示禁用,可以在运行时通过 SET  AUTOCOMMIT = 1 或 0 来改变这一参数

当 AUTOCOMMIT = 0 时,所有查询都在一个事务中,直到显式 COMMIT 提交或 ROLLBACK 回滚,事务才结束,而该事务结束的同时又会开始一个新的事务

long_query_time

mysql 的日志功能非常强大,通常我们都会打开 binlog,而另一个重要的 log 就是慢查询日志

通过 set global log_low_queries=on 可以开启慢查询日志

通过 set global long_query_time 可以设置慢查询日志捕获慢查询的阈值(秒数),可以通过把这个值设为 0 让 mysql 捕获所有查询

但是,全部符合下列条件的查询才会被计入慢查询日志:查询必询不是管理语句,或者开启了log_slow_admin_statements

查询的时间至少是long_query_time的秒数,或者查询没有使用索引并且开启了log_queries_not_using_indexes

查询至少检索了min_examined_row_limit 的行数

查询必要不会根据log_throttle_queries_not_using_indexes  的设置而被抑制

所以如果设置没有生效,需要检查上述其他配置项是否影响了慢查询日志的记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值