文章不在长,坚持不懈记录下努力前行的脚步
发布时间:2016-01-28 16:46:38
InnoDB自动检测死锁并回滚一个或者多个事务来防止死锁,InnoDB尝试选择小事务回滚,事务的大小是根据insert,update或者delete影响的行数来判断的。如果设置innodb_table_locks = 1和autocommit = 0的话,InnoDB识别到表锁定,并且server层也能识别到行级锁,否则的话,由LOCK TABLE语句设置的表锁导致的死锁将不会被检测.........【阅读全文】
发布时间:2016-01-28 11:55:27
隐式提交或回滚事务MySQL开启一个新的会话连接的时候,默认是启用自动提交的,因此SQL执行的时候没有返回错误的话,MySQL会自动提交事务。如果返回错误,提交或回滚决定于事务本身。如果你禁用了会话自动提交,并且没有提交事务就关闭了连接,那么MySQL会回滚这个事务。一些SQL会导致事务的隐式提交,就好像你执行过co.........【阅读全文】
发布时间:2016-01-26 16:14:24
为InnoDB中不同类型的SQL设置锁一般来说,锁定读、update、delete等类型的SQL语句在执行的过程中会对被扫描的索引记录加记录锁,这跟有没有过滤行的where条件没有关系,Innodb不会记住这些where条件,但是它知道哪些索引范围被扫描。通常,如果被插入的记录处于一个gap中,那么在插入该条记录前,next-key锁会阻塞记录的插.........【阅读全文】
发布时间:2016-01-22 15:33:28
That is, a next-key lock is an index-record lock plus a gap lock on the gap preceding the index record. If one session has a shared or exclusive lock on record R in an index, another session cannot insert a new index record in the gap immediately before R in t.........【阅读全文】
发布时间:2016-01-20 16:55:51
innodb采用mvcc的方式来获取基于某个时间点的数据库的表的快照来实现数据的一致性读,基于某个时间点,已提交的事务所做的变更查询是可见的,之后的变更或未提交的不可见。但是可能会出现这样一种异常,在同一个事务内先做完的变更可见,这可能会有下面这种问题:如果你更新了表的某些行,查询对最近更新和没任何变化的行是.........【阅读全文】