谈谈mysql的事务

来源:互联网 发布:淘宝的trw轮毂好用么 编辑:程序博客网 时间:2024/05/22 05:10

过去长期使用Oracle进行数据库开发,对其中事务处理印象颇深。系统管理员设置的自动提交是关闭的,必须显式的commit或者rollback一个事务,也不用使用专门语句开始一个事务,存储过程和函数中均可以使用commit或rollback。日常的数据维护团队早就适应了这样的模式,感觉也蛮方便。

近期使用mysql开发,初涉其中的事务,其自动提交是打开的。默认配置下,每句sql之后会自动commit。另外,在存储函数中不允许显式或隐式commit或rollback,但在存储过程中却是可以的。换言之,存储函数是不会去干涉现存事务的提交或回滚的,可以在事务中自由的调用函数而不会影响事务的界限;但是存储过程是允许commit或rollback事务的,所以在一个事务处理中调用存储过程一定要考虑清楚事务的界限。

事务处理的细节在并发处理时是需要考虑的,例如:mysql中没有序列号sequence,常见的实现sequence的方法是写存储过程或函数模拟,这个过程中一定要考虑清楚事务的处理及并发的访问。


原创粉丝点击