文章不在长,坚持不懈记录下努力前行的脚步
发布时间:2016-02-25 17:36:06
InnoDB是一个支持多版本的存储引擎:为了支持事务并发和回滚的特征,InnoDB保留了已经改变的行的旧版本的信息。这种信息被保存在表空间的一种称作回滚段的数据结构中(类似于Oracle的回滚段)。InnoDB使用这个回滚段的信息来回滚事务。他也用来构建支持并发读的行的多版本。.........【阅读全文】
发布时间:2016-02-01 11:59:47
这部分内容是基于上一节关于死锁的内容而来的Section 14.2.2.8, “Deadlock Detection AND Rollback”,它解释了为了最小化死锁我们应该如何来操作数据库,以及发生错误后如何处理的问题。在事务性数据库中,死锁是一个典型的的问题,除非他们频繁出现使得你根本不发运行事务,一般情况下没什么危险。.........【阅读全文】
发布时间: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锁会阻塞记录的插.........【阅读全文】