MySQL Innodb性能优化的建议

1 篇文章 0 订阅
0 篇文章 0 订阅

优化根本原则:
1)一次只修改一个参数,这是判断是否可以从你的修改获益的唯一途径
2)大多数的参数是可以通过 SET GLOBAL进行在线修改的,它可以让你很快恢复任何有问题的修改,最后,你必须在配置文件中进行永久的修改
3)确保你的修改在[mysqld]中进行配置,否则重启之后该配置无法显现
4)当你修改配置文件机器无法重启,请仔细检查你的修改,尤其要注意修改参数的常量单位
5)在配置文件中不要进行重复配置(采用注释手段),如果你想记录历史变更,那么请使用版本控制工具Git,Svn

基本配置:
1)innodb_buffer_pool_size:这是Innodb引擎中最为重要的参数,buffer pool是缓存索引和数据的,如果内存有余的话请尽量多分配该参数,但是最好不要超过总内存的80%,否则会影响系统调度反而导致MySQL性能的下降
2)max_connections:当你经常面对”Too many connections”,那么max_connections设置的比较低了,可以适量调高这个值,这个错误会非常的常见,因为很多应用不会正确的关闭数据库的链接。如果只是简单的改大这个值,它会导致数据库通知执行过个命令而导致变慢,那么这个时候需要在应用层添加connection pool或者使用MySQL的thread pool
3)innodb_file_per_table:这个选项告诉Innodb引擎将数据和索引存储在共享表空间还是独立表空间,使用独立表空间时,你可以通过dropping, truncating 或者 rebuilding 来缩减磁盘的空间。但是从性能来说它没有什么额外的提升。
4)innodb_flush_log_at_trx_commit:默认值1确保了事务的ACID,当你最关心数据的安全性时,1是你的首选。然而由于额外的fsyncs到导致磁盘的额外开销。如果设置为2会有点不靠谱,因为每秒钟才会将已经提交的日志刷新,0的话会更快,但是在crash的时候可能会丢失一些数据,对于SLAVE来说绝对是一个很好的选择
5)innodb_flush_method:这个参数控制数据和日志以何种方式刷到磁盘,当你的服务器的RAID开开启了电源包会和回写功能那么流行的配置是O_DIRECT,其他的场景一般应用fdatasync,sysbench是帮你选择这两个参数的一个很好的工具
6)innodb_log_buffer_size:它是尚未提交事务的缓冲区,默认1M,当你的事务中存在blob/text字段,该缓冲区会很快消耗干净并导致额外的IO负载
7)query_cache_size:MySQL的query cache是存在的一个已知的性能瓶颈,除非应用的特定的场合,还是直接关闭算了
8)log_bin: 如果作为主从复制的Master,开启他是必须的。同时不要忘记给server-id一个唯一的值。对单机想通过时间点恢复开启该参数也是必须的,一但创建binlog,除非通过PURGE BINARY LOGS或者设置expire_logs_days否则该日志文件会一直存在,它会占用大量的磁盘空间
9)skip_name_resolve: 当建立一个新的连接时,会进行服务器域名的解析,当DNS缓慢时,建立连接的速度也会受其影响,因此在启动MySQL之前推荐禁止该参数来禁止域名解析。它唯一的限制实在进行授权时只允许通过IP指定服务器地址,因此在现有的系统修改该参数要慎重,确保没有通过域名授权的IP再去修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值