首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何实现数据库的ACID模型?

如何实现数据库的ACID模型?
EN

Stack Overflow用户
提问于 2010-11-24 16:45:14
回答 3查看 9.7K关注 0票数 4

如何实现数据库的ACID属性- A-原子性,C-一致性,I-隔离性,D-持久性。正在使用的数据库系统- MySql。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-24 17:35:52

好吧,ACID不是您可以实现的模型,而是数据库服务器必须遵守的一组规则,以便能够以安全的方式处理事务。

MySQL在设计上不是符合ACID的数据库服务器,但是如果您对表使用InnoDB存储引擎(或者更好地将default-storage-engine选项设置为InnoDB作为数据库服务器的默认存储引擎(请参见default-storage-engine option)),您将能够在数据库上执行事务安全操作。

我建议您将InnoDB设置为默认存储引擎,因为不要在单个事务(例如InnoDB和MyISAM表)中混合对具有不同存储引擎的表的操作,这一点很重要。否则,您可能会损坏数据,因为如果回滚事务,您将无法回滚所有操作。

也就是说,如何确保您的操作是符合ACID的?只需在transactions中执行分组操作,即可从数据的一个一致状态转到另一个,如果一切顺利,则在结束时提交;如果出现问题,则进行回滚。要实现这一点,您需要通过发出START TRANSACTION语句来告知数据库服务器您的事务何时开始,以及您的事务何时以COMMITROLLBACK语句结束。

通常,最好在脚本开始时使用SET AUTOCOMMIT=0命令禁用自动提交模式,尽管这不是强制性的,因为START TRANSACTION命令实际上禁用了自动提交模式。

还要记住,一些语句发出一个隐式的COMMIT命令(基本上所有的DDL语句,以及其他一些语句,请参阅Statements That Cause an Implicit Commit)。

您可能还有兴趣了解与标准Transactions and Atomic Operations在处理MySQL Transactions and Atomic Operations事务方面的不同之处。

票数 19
EN

Stack Overflow用户

发布于 2010-11-24 16:49:57

在MySQL中使用innoDB-engine,创建包含外键的适当数据库模式,使用事务进行相关查询,使用服务器级硬件并让数据库完成其工作。

http://en.wikipedia.org/wiki/ACID

票数 3
EN

Stack Overflow用户

发布于 2010-11-24 16:51:29

如果我没理解错的话,这不是你的任务。这是甲骨文开发人员( MySql )的任务。如果数据库服务器支持ACID,则可以通过选择正确隔离级别并使用事务(影响或显式)来使用它。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4264849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档