mysql - ACID 事务,持久性

标签 mysql database oracle acid

我试图了解 ACID 事务,但我对持久性一无所知。

据我所知,持久性可确保保存所有已完成的交易,即使发生某种技术故障。即使发生某种技术故障也能获救意味着什么。例如,如果我的服务器在事务期间崩溃,在将数据保存到数据库之前,持久性如何确保在服务器再次启动时它会正确保存数据?

最佳答案

在实践中,如果发生技术故障,事务要么全部提交,要么全部回滚。

涉及服务器意外停止的故障(例如,由于灾难性破坏)通常会导致事务被回滚(数据保留在事务开始之前的状态,而不是某些中间状态)。

必须重复回滚事务。这取决于使用数据库的应用程序。因此,ACID 给应用程序增加了一定的负担,让应用程序知道事务何时完成或未完成。

这在实践中是一个非常复杂的主题。程序员花费了成千上万年的时间来使事务处理尽可能地健壮。

关于mysql - ACID 事务,持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52200093/

相关文章:

mysql - MariaDB max_heap_table_size 是动态分配的吗?

mysql - 使用内连接和更新,为什么我不能使用这个查询?

mysql "drop database"需要时间——为什么?

java - 如何使用 Spring Boot 和 Angular 自动运行日常 PL/SQL 脚本(Oracle)?

MySQL计算其他两个计算总和(包括按月分组)的百分比

sql - Oracle PL/SQL 字符串格式化

mysql - 我在 mysql 数据库中收到一个错误,说 "#1136 column count doesn' t 匹配第 1 行的值计数”

无法使用 .Net 提供程序从远程计算机访问 Oracle 12c 服务器

sql - Oracle 正则表达式忽略重复字符

javascript - 为什么 vue.js 语句与 axios 开始较晚?