14.5.5.3 How to Minimize and Handle Deadlocks 如何减少和处理死锁
14.5.5.3 How to Minimize and Handle Deadlocks 如何减少和处理死锁 这个部分建立在概念信息关于deadlocks 在章节 14.5.5.2, “Deadlock Detection and Rollback”. 它解释了如何组织数据库操作来减少死锁和随后的错误处理 Deadlocks 是一个经典的问题 在事务性数据库,但是他们不是危险的 除非它们是如此频繁你根本不能运行某个事务。 通常情况下,你必须写你的应用以便他们总是准备重新执行一个事务 如果由于死锁被回滚 InnoDB 使用自动行锁,你可以得到死锁 甚至在只有插入和删除单条记录的情况。 那是因为那些操作不是真正的原子的,他们自动设置锁在(可能的多个)index records上 你能处理死锁和降低他们的发生的可能性使用下面的技术: 1.在任何时候,执行SHOW ENGINE INNODB STATUS命令来确定最近的死锁的原因。那个可以帮助你调整你的应用来避免死锁: 2.如果频繁的死锁警告导致顾虑,收集更多的调试信息通过启用 innodb_print_all_deadlocks 配置选项, 信息关于每个死锁,不只是最新的,是被记录在MySQL error log. 3.总是准备重新执行一个事务 如果它回滚由于死锁,Deadlocks 不是危险的,只需要重新尝试 4. 让事务小的和短的让它们不易冲突 5. 在做了一组相关的改变立即提交让他们不易发生冲突。 特别的, 不要把一个活动的mysql session 保持open 对于一个长时间允许的未提交的事务 如果你使用锁定读(SELECT ... FOR UPDATE or SELECT ... LOCK IN SHARE MODE), 尝试使用较低的隔离级别 比如READ COMMITTED. 6.当修改多个表在一个事务里,或者不同的行集在相同的表, 做这些操作在一个一致性的顺序。 然后事务形成良好定义的队列,不会死锁。 7.增加好的索引到你的表, 然后呢查询需要扫描很少的记录,从而设置更少的锁 使用 EXPLAIN SELECT 来确定哪个index 你的查询在使用 8.使用较少的锁,如果你可以负担允许一个SELECT 返回记录从一个老的快照, 不要增加FOR UPDATE or LOCK IN SHARE MODE子句。 使用 READ COMMITTED 隔离级别是好的在这里,因为每个一致性读在相同的事务 读取他自己的最新的快照 9.如果没有其他的帮助, 序列化你的事务使用表级锁。 正确的方式是使用LOCK TABLES,比如InnoDB 表,开始事务设置autocommit = 0
14.5.5.3 How to Minimize and Handle Deadlocks 如何减少和处理死锁的更多相关文章
- 14.3.5.3 How to Minimize and Handle Deadlocks 如何减少和处理死锁
14.3.5.3 How to Minimize and Handle Deadlocks 如何减少和处理死锁 这个章节建立关于死锁的概念信息,它解释如何组织数据库操作来减少死锁和随后的错误处理: D ...
- [LeetCode] 924. Minimize Malware Spread 最大程度上减少恶意软件的传播
In a network of nodes, each node i is directly connected to another node j if and only if graph[i][j ...
- 14.5.5 Deadlocks in InnoDB
14.5.5 Deadlocks in InnoDB 14.5.5.1 An InnoDB Deadlock Example 14.5.5.2 Deadlock Detection and Rollb ...
- 14.3.5.1 An InnoDB Deadlock Example
14.3.5 Deadlocks in InnoDB 14.3.5.1 An InnoDB Deadlock Example 14.3.5.2 Deadlock Detection and Rollb ...
- MySQL error : Deadlock found when trying to get lock; try restarting transaction
在使用 MySQL 时,我们有时会遇到这样的报错:“Deadlock found when trying to get lock; try restarting transaction”. 在 14. ...
- (转)雅虎WEB前端网站优化 -- 34条军规
雅虎给出了优化网站加载速度的34条法则(包括Yslow规则22条) 详细说明,下载转发 ponytail 的译文(来自帕兰映像). 1.Minimize HTTP Requests 减少HTTP请求 ...
- 雅虎WEB前端网站优化 -- 34条军规
雅虎给出了优化网站加载速度的34条法则(包括Yslow规则22条) 详细说明,下载转发 ponytail 的译文(来自帕兰映像). 1.Minimize HTTP Requests 减少HTTP请求 ...
- Effective Objective-C [上]
网上看到的 http://esoftmobile.com/2013/08/10/effective-objective-c/ 本文是针对<Effective Objective-C>一书的 ...
- Yahoo34条军规——雅虎WEB前端网站优化
雅虎给出了优化网站加载速度的34条法则(包括Yslow规则22条) 详细说明,下载转发 ponytail 的译文(来自帕兰映像). 1.Minimize HTTP Requests 减少HTTP请求 ...
随机推荐
- Java基础知识强化之IO流笔记27:FileInputStream读取数据一次一个字节数组byte[ ]
1. FileInputStream读取数据一次一个字节数组byte[ ] 使用FileInputStream一次读取一个字节数组: int read(byte[] b) 返回值:返回值其实是实际 ...
- RedHat7搭建无人值守自动安装Linux操作系统(PXE+Kickstart)
Kickstart服务器 IP: 192.168.136.253 掩码:255.255.255.0 网关:192.168.136.2 DNS:192.168.136.2 安装部署HTTP服 ...
- 使用Git操作GitHub代码入门教程
GitHub除了网页操作外,还可以借助本地客户端git(或github for windows)来增删修改远程代码.使用Git操作来连接GitHub可以通过Https或SSH方式,使用SSH方式可以免 ...
- mysql select 语法
格式:select [选项子句] 字段表达式子句 [from子句] [where子句] [group by子句] [having子句] [order by子句] [limit子句]; 提示:子句的顺序 ...
- c# 格式化百分比
代码示例: <%#Eval("total").ToString() == "0" ? "00.00%" : (Convert.ToDe ...
- 傻瓜式理解递归之php递归
写程序这么久了,有时候别人会问道一些算法比如排序啊,递归啊,总是不知道该怎么去说,今天就来整理一下,让更多的人去傻瓜式的理解递归.递归在网络上有很多定义,但有这么一句话听的最多:递归就是自己调用自己! ...
- java问题:类的定义,对象的定义?
java问题:类的定义,对象的定义? 类是一组数据和函数的集合,只是抽象的概念,它的作用就是生成对象,它生成对象后,就为这个对象分了一块存储区,类可以生成无限多个对象,每个对象都有自己的存储区,在类里 ...
- SqlSugar框架T4模板的使用
一.T4模板说明 1.T4模板是用来生成Model层实体类的 2.文件后缀为.tt 3.需要修改配置主要有:引用的SqlSugar.dll的位置.生成实体类的位置及生成实体类的命名空间 4.T4模板生 ...
- Shell编程之Shift的用法
位置参数可以用shift命令左移.比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1.$2.$3丢弃,$0不移动.不带参数的shift命令相当于shift 1. 非常 ...
- MVVM模式应用 之的RelayCommand的使用
实现MVVM模式Command是立下了汗马功劳.当然ICommand要引用using System.Windows.Input命名空间. 比如: (1)我们在xaml页面有一个Button按钮,我们需 ...