zoukankan      html  css  js  c++  java
  • atitit 提升数据库死锁处理总结

    atitit 提升数据库死锁处理总结

    正常的来说,锁上都是自动的..不用官..
    正常来讲,insert时不需要加rowlock,就默认是rowlock了,


    #-----锁的自动转换原理.(正常的不用理它,除外alter  表格字段)
    当事务超出其升级阈值时,数据库也许 会自动将行锁和页锁升级为表锁。

    例如,在行上执行表事务时,数据库会自动在受影响的行上获取锁,同时将更高级别的意向锁置于包含这些行的页和表上。所有相关的索引页也将同时锁定。当事务所持有的锁的数量超出其阈值时,就会尝试将表上的意向锁更改为更强的锁。例如,意向排他 (IX) 锁可以更改为排他 (X) 锁。得到更强的锁后,事务在表上所持有的所有页级及行级锁都将予以释放。

    作者 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com
    转载请注明来源: http://blog.csdn.net/attilax

    #-------事务和死锁

    事务拉长了处理流程,会增添死锁的机会..
    不是说不能使用事务,,,应该使用事务的还是应该使用事务...同时使用sync解决死锁.


    #------解决死锁

    默认状态哈,仅仅在为同样的一个记录修改的时候儿,才也许死锁...

    和file雅十,  加个同步sync 在内代码走ok兰

    不重要性的项目,直接only update操作sync走ok...


    #------解决死锁(补充法)

    代码泄漏在所难免,,必须两手抓...
    客户端,自动关闭timeout conn ,好像对timeout 事务不生效..只好自己写gc  outtime...
    服务器,设置 conn  timeout,,而且lock timeout...
    看门狗必须的..查询lock 或者过长时间sql  ,kill....



  • 相关阅读:
    接口的幂等性怎么设计?
    python 实现批量 WKT 转 KML
    火星坐标(GCJ02)高精度反算
    GDAL RasterIO 速度测试程序
    linux下 QtCreator 运行不显示 qDebug 输出的问题
    我使用的 clang-format 配置文件
    cephadm 离线安装部署 ceph 集群记录
    解决vcpkg无法交叉编译arm64版本 HDF5 库的问题
    QEMU 虚拟 aarch64(arm64) 记录
    DE-9IM 空间关系模型
  • 原文地址:https://www.cnblogs.com/attilax/p/5963973.html
Copyright © 2011-2022 走看看