叶问14
作者:互联网
《叶问》是知数堂新设计的互动栏目,不定期给大家提供技术知识小贴士,形式不限,或提问、或讨论均可,并在当天发布答案,让大家轻轻松松利用碎片时间就可以学到最实用的知识点。
2019年04月16日,周二
生产环境MySQL死锁如何监控及如何减少死锁发生的概率
首先,死锁并不是"锁死",死锁是由于两个或两个以上会话锁等待产生回路造成
一、死锁监控及处理方法
对于死锁的监控,各个版本都提供了innodb_print_all_deadlocks选项,打开该选项即会将死锁的日志输出到MySQL的错误日志当中,因此可以通过监控错误日志来达到监控死锁的目的。而对于MariaDB就更加简单了,MariaDB提供了Innodb_deadlocks的计数器,可以通过监控该计数器的增长来监控是否存在发生死锁。
假如线上出现死锁并且频率较高的话,务必要引起重视。由于死锁日志仅记录了最后引起死锁的两条SQL,因此并不能通过死锁日志立即定位
出死锁的原因,应当及时协同开发模拟出死锁过程,分析死锁产生原因,修改程序逻辑。
二、如何降低死锁发生的概率
1、尽量使用短小事务,避免大事务
2、加FOR UPDATE/LOCK IN SHARE MODE锁时,最好降低事务隔离级别,例如用RC级别,降低死锁发生概率,也可以降低锁定粒度
3、事务中涉及多个表,或者涉及多行记录时,每个事务的操作顺序都要保持一致
4、通过索引优化SQL效率,降低死锁概率,避免全表扫描导致锁定所有数据
5、程序中应有事务失败检测及自动重复提交机制
6、高并发(秒杀)场景中,关闭innodb_deadlock_detect选项,降低死锁检测开销,提高并发效率
2019年04月18日,周四
MongoDB有哪些优秀特性及适合的场景是什么
一、优秀特性
1、实用性:面向类json富文档数据模型,对开发人员天然的友好
2、可用性:基于raft协议的自动高可用,轻松提供99.999%的可用性
3、扩展性:对分片集群的支持,为业务提供了友好的水平扩展
4、高性能:嵌套模型设计支持,减少了离散写,充分的物理内存利用率,避免了磁盘读
5、强压缩:WiredTiger引擎提供多种数据压缩策略,2~7倍的压缩比,大大节省了磁盘资源
二、适合的场景
1、无多文档事务及多表关联查询需求
2、业务快速迭代,需求频繁变动行业
3、单集群并发过大无法支撑业务增长
4、数据量增长预期TB及以上存储需求
5、期望要求99.999%数据库高可用场景
2019年04月25日,周四
GO语言对比其他的编程语言有何优势?实际生产环境如何取舍?
1、天生支持高并发,强一致语言,开发效率高兼具线上运行稳定安全
2、垃圾回收,不用关心内存分配与回收
3、强大的GMP模型,异步处理,支持高并发,小白也能轻松写出高并发代码
在实际生产环境中建议从如下几个方面考虑:
1、看业务场景,电商,大数据处理有现成的解决方案,不适合用。另外数学运算,cpu 密集型的也不用。
2、GO 擅长快速出业务原型,迭代开发效率高,初创公司强推
3、看公司开发的技术栈,如果差异较大,那么选用 GO的话上手更快,编程风格也能统一起来
标签:事务,场景,14,叶问,并发,死锁,监控,日志 来源: https://www.cnblogs.com/allenhu320/p/11347830.html