作用:
- 对于较小的innodb_buffer_pool_size,我们会把它设成和innodb_buffer_pool_size一样 。
- 而当超过4gb的innodb_buffer_pool_size时,我们的建议是把它切的够碎,这是mysql5.7里新带的特性,它的默认在8m,但是对于大量有事务操作的mysql我们推荐在写操作库上设置:16m
- 此参数确定些日志文件所用的内存大小,以M为单位 。缓冲区更大能提高性能,但意外的故障将会丢失数据.官方的方档建议设置为1-8M之间!
默认是8M配置实例:
innodb_log_buffer_size = 1677721641)innodb_purge_threads
推荐设置:
0作用:
这个参数轻易不用的,我推荐它设为:0,为什么呢?这个参数是和innodb_force_recovery关联起来的,只有当数据库崩溃后重启时才会临时去设的 。它的使用场景如下:
mysql断电,重启后无效,起不来 。所以我们根据innodb_force_recovery的参数:
1. (SRV_FORCE_IGNORE_CORRUPT):忽略检查到的corrupt页 。
2. (SRV_FORCE_NO_BACKGROUND):阻止主线程的运行,如主线程需要执行full purge操作,会导致crash 。
3. (SRV_FORCE_NO_TRX_UNDO):不执行事务回滚操作 。
4. (SRV_FORCE_NO_IBUF_MERGE):不执行插入缓冲的合并操作 。
5. (SRV_FORCE_NO_UNDO_LOG_SCAN):不查看重做日志,InnoDB存储引擎会将未提交的事务视为已提交 。
6. (SRV_FORCE_NO_LOG_REDO):不执行前滚的操作 。
我们在my.cnf中如下设置:
innodb_force_recovery = 6记住,一旦当innodb_force_recovery>2时,要把innodb_purge_threads设成0.
innodb_purge_threads = 0
如果不配的后果:
默认不要去设,可以不配,出现了问题在recover需要时再去改 。配置实例:
innodb_purge_threads = 042)innodb_large_prefix
推荐设置:
1作用:
- 如果你的客户端和服务端的字符集设成了utf8mb4,那么我们需要把这个开关开启,为什么呢?mysql在5.6之前一直都是单列索引限制767,起因是256×3-1 。这个3是字符最大占用空间(utf8) 。但是在5.6以后,开始支持4个字节的uutf8 。255×4>767, 于是增加了这个参数 。这个参数默认值是OFF 。当改为ON时,允许列索引最大达到3072.
- 在mysql5.6中这个开关叫on, off 。而在5.7中叫0和1,由于我们前面设置了utf8mb4,因此这边我们必须把这个参数开启 。
不配会有问题,特别是索引会无效、或者不是走最优计划,如果你的字符集是utf8mb4,那么这个值必开启 。配置实例:
innodb_large_prefix = 143)innodb_thread_concurrency
推荐设置:
装mysql的服务器的cpu的核数作用:
如:64核cpu,那么推荐:64(<=cpu核数)
如果一个工作负载中,并发用户线程的数量小于等于64,建议设置innodb_thread_concurrency=0;而事实上我们的系统是处于大并发大事务的情况下的,怎么来算这个值?建议是先设置为128,然后我们不断的降这个值,直到发现能够提供最佳性能的线程数 。为了安全起间我们会把它设成和cpu一样大小 。
如果不配的后果:
默认在64位下会是8配置实例:
innodb_thread_concurrency = 6444)innodb_print_all_deadlocks
推荐设置:
1作用:
推荐:1
当mysql 数据库发生死锁时,innodb status 里面会记录最后一次死锁的相关信息,但mysql 错误日志里面不会记录死锁相关信息,要想记录,启动 innodb_print_all_deadlocks 参数。
如果不配的后果:
不会记录该信息 。
配置实例:
innodb_print_all_deadlocks = 145)innodb_strict_mode
推荐设置:
1作用:
必须开启,没得选择,1,为什么?
从MySQL5.5.X版本开始,你可以开启InnoDB严格检查模式,尤其采用了页数据压缩功能后,最好是开启该功能 。开启此功能后,当创建表(CREATE TABLE)、更改表(ALTER TABLE)和创建索引(CREATE INDEX)语句时,如果写法有错误,不会有警告信息,而是直接抛出错误,这样就可直接将问题扼杀在摇篮里 。
如果不配的后果:
如果不配碰到开发或者非专业的dba会把旧ddl语句生效在5.7内,另外一个问题就是ddl语句出错时报错不明显,这会影响到“主从复制”,至于dll为什么会影响到主从复制,我们后面会在“slave_skip_errors = ddl_exist_errors”中详细解说 。
推荐阅读
- 淘宝店铺好评率如何快速提升 淘宝好评率低于多少有影响
- 高性能网络通信框架 HP-Socket v5.7.2
- 多云架构的3个常见性能挑战和解决方案
- 2分钟学会,提升你气质的20个小习惯
- 淘宝店的物流服务怎么提升 如何提高物流时效
- 淘宝新店铺怎么刷销量 淘宝店铺怎么提升流量和销量
- 在桌面上创建一个关机快捷方式,只需一条命令,关机速度大幅提升
- 月经期间女性能做瑜伽吗?
- 淘宝每天转化率百分之多少最好 淘宝怎么提升转化率
- 淘宝客单价高的产品怎么刷 淘宝货单价怎么提升
