阿里十年java老兵总结的50条mysql使用军规

支付业务很大程度上依赖于数据库做支持,正确的设置数据库参数以及正确的使用数据库对非常重要,我这把自己之前的一些心得贴出来,抛砖引玉,大家可以把自己的一些心得分享出来供大家参考学习。

一.数据库配置

        1. innodb_flush_log_at_trx_commit,这个对支付业务来说是关键性的设置之一,可选的参数值有0,1,2, 支付需要设置成1.

        2. 对交易以及记账部分来说,必须是innode引擎,以支持事务

        3. 事务隔离级别,权衡安全性和效率,使用可重复读

        4. innodb_lock_wait_timeout,这个是锁超时时间,不建议太大,怕引起雪崩

二.业务设计

    1. 不用物理删除,即尽量避免用delete语句,drop命令等;通过软删除处理,即通过额外的字段标

    2. 明记录的删除状态;虽然对写代码来讲有些麻烦,但实践证明是非常值得的

    3. 在系统设计之初就要定好编码规范,对存入的数据做相应转换并做好escape处理

    4. 除列表查询外,尽量用主键操作;核心交易系统中尽量避免非主键操作

    5. 避免schema中1对多设计,概念简单,编码很难

    6. 就mysql来说,尽量使用其最简单的功能,不用其高级功能如触发器,连表等

    7. 就mysql来说,尽量不让其做计算功能,而是让业务层来实现计算逻辑

    8. 当要锁多条记录时, 要考虑死锁的可能以及预防的措施

    9. 按业务垂直划分原则,尽量把不同的业务方不同的库中

   

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值