MySQL应对高tps优化

一般使用innodb引擎做事务管理,死锁也是经常见到的,比如秒杀场景,对一个共同的物品进行减库存,此时我们可以关闭mysql的死锁检测机制,减少单行整体服务的时间。既然关闭了死锁检测机制,我们需要减少锁的等待时间。

不过不适合死锁过多的情景,我们可以通过程序来减少死锁的存在。其次还有mysql为了事务的安全,会将提交的事务刷新到磁盘,如果改变刷盘的策略,也可以提高mysql应对高并发的情况,但是会有丢失数据和事务的情况,在系统崩溃或者断电的时候。

sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。这个是性能最好的。

sync_binlog=1,当每进行1次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

注:

大多数情况下,对数据的一致性并没有很严格的要求,所以并不会把 sync_binlog 配置成 1. 为了追求高并发,提升性能,可以设置为 100 或直接用 0.
而和 innodb_flush_log_at_trx_commit 一样,对于支付服务这样的应用,还是比较推荐 sync_binlog = 1.

上面文字来自:https://www.linuxidc.com/Linux/2017-09/146671.htm

总结上面的方法是关闭死锁检测,改变刷盘策略,但是这是在特殊的情况使用,过了这个时间段要恢复安全的策略。相关参数:

sync_binlog=0

innodb_flush_log_at_trx_commit=0

innodb_deadlock_detect=OFF

这篇文章作为自己知识总结,参考https://mp.weixin.qq.com/s/U7_3yhdmZm0iYztl9LVkzw

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值