摘要: 事务控制语句 在MySQL命令行的默认设置下,事务都是自动提交的,即执行SQL语句后就会马上执行COMMIT操作。因此开始一个事务,必须使用BEGIN、START TRANSACTION,或者执行SET AUTOCOMMIT=0,以禁用当前会话的自动提交。这和Microsoft SQL Server 阅读全文
posted @ 2017-01-18 18:46 wade&luffy 阅读(7060) 评论(0) 推荐(0) 编辑
摘要: 事务(Transaction)是数据库区别于文件系统的重要特性之一。在文件系统中,如果你正在写文件,但是操作系统突然崩溃了,这个文件就很有可能被破坏。当然,有一些机制可以把文件恢复到某个时间点。不过,如果需要保证两个文件同步,这些文件系统可能就显得无能为力了。如当你需要更新两个文件时,更新完一个文件 阅读全文
posted @ 2017-01-18 16:20 wade&luffy 阅读(722) 评论(0) 推荐(0) 编辑
摘要: 阻塞 因为不同锁之间的兼容性关系,所以在有些时刻,一个事务中的锁需要等待另一个事务中的锁释放它所占用的资源。在InnoDB存储引擎的源代码中,用Mutex数据结构来实现锁。在访问资源前需要用mutex_enter函数进行申请,在资源访问或修改完毕后立即执行mutex_exit函数。当一个资源已被一个 阅读全文
posted @ 2017-01-18 11:38 wade&luffy 阅读(1054) 评论(0) 推荐(0) 编辑
摘要: 锁的算法 InnoDB存储引擎有3中行锁的算法设计,分别是: Record Lock总是会去锁住索引记录。如果InnoDB存储引擎表建立的时候没有设置任何一个索引,这时InnoDB存储引擎会使用隐式的主键来进行锁定。 Next-Key Lock是结合了Gap Lock和Record Lock的一种锁 阅读全文
posted @ 2017-01-18 11:08 wade&luffy 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 开发多用户、数据库驱动的应用时,最大的一个难点是:一方面要最大程度地利用数据库的并发访问,另外一方面还要确保每个用户能以一致的方式读取和修改数据。为此就有了锁(locking)机制,这也是数据库系统区别于文件系统的一个关键特性。InnoDB存储引擎较之MySQL数据库的其他存储引擎,在这方面技高一筹 阅读全文
posted @ 2017-01-18 10:36 wade&luffy 阅读(465) 评论(0) 推荐(0) 编辑