我如何为我的数据库实现ACID属性--A-原子性,C-一致性,I-隔离,D-耐久性.正在使用的数据库系统 - MySql.
Bru*_*ier 18
ACID不是您可以实现的模型,而是数据库服务器必须符合的一组规则,以便能够以安全的方式处理事务.
MySQL在设计上不是符合ACID标准的数据库服务器,但是如果你为你的表使用InnoDB存储引擎(或者通过将default-storage-engine选项设置为InnoDB(参见default-storage-engine选项)更好地作为数据库服务器默认存储引擎),你将能够对您的数据库执行事务安全操作.
我建议您将InnoDB设置为默认存储引擎,因为在单个事务(例如InnoDB和MyISAM表)中不要对具有不同存储引擎的表混合操作非常重要.否则,您可能会损坏您的数据,因为如果您回滚事务,将无法回滚所有操作.
那就是说,您如何确保您的运营符合ACID标准?好吧,只需将事务中的操作分组,从一个一致的数据状态转到另一个状态,如果一切顺利,最后提交,或者如果出现问题则回滚.要实现此目的,您需要通过发出START TRANSACTION语句以及当事务以COMMIT或ROLLBACK语句结束时告诉数据库服务器何时启动事务.
通常使用该SET AUTOCOMMIT=0命令在脚本开头禁用自动提交模式是一种很好的做法,尽管它不是必需的,因为该START TRANSACTION命令实际上禁用了自动提交模式.
还要记住,有些语句会发出一个隐式COMMIT命令(基本上所有的DDL语句,以及其他一些语句,请参阅导致隐式提交的语句).
您可能还有兴趣阅读有关MySQL 事务和原子操作中事务处理的标准SQL的差异.
| 归档时间: |
|
| 查看次数: |
9017 次 |
| 最近记录: |