数据库事物的四个特性

本文详细解释了数据库事务处理中的四大核心概念——原子性、一致性、隔离性和持久性(ACID)。通过具体实例阐述了这些特性如何确保数据的正确性和事务处理的安全可靠。

 

到现在为止才真的搞清楚这四个事件任务的意思。

 

我们通常应用数据库是基于增删改查的,比如插入一条数据到数据库,那么我们来分析下四个特性:

 

1.原子性

   插入数据,要么成功要么不成功,不会是我插入了一半数据,比如我想插入姓名和id,总不是会只插入了姓名,其他没有插入到数据库中。

 

2.一致性

   插入数据了,那么数据库是要改变状态的,也就是说他的从一种状态变成另一种状态了,并且这种状态是正确的。

 

3.隔离性

  我们插入数据的时候,在插入之前,我们不允许把事务对数据的任何改变提供给任何事物。

 

4.持久性

   很显然,我们提交事物,那当然是保存在数据库中的话,那么这个状态要是长久的,不能说我这一秒提交了

下一秒就没有了。一般是保存在可存储的介质上的,比如是硬盘啊等等。应该是硬盘。

### 数据库事务的 ACID 特性详解 #### 原子性 (Atomicity) 原子性表示事务是一个不可分割的工作单位。这意味着事务内的所有操作要么全部完成,要么完全不执行。如果事务的一部分失败,则整个事务会被撤销,并恢复到初始状态[^3]。 #### 一致性 (Consistency) 一致性确保数据库事务执行前后始终处于一致的状态。具体来说,当事务正常结束时,所有的数据修改都会被正确保存;而如果事务过程中发生异常,则所有已做的更改会回滚至事务开始前的状态,从而保持系统的完整性约束不受破坏[^4]。 #### 隔离性 (Isolation) 隔离性意味着多个并发运行的事务之间相互独立,互不影响。即使存在并行处理的情况,每个事务也应像它是单独执行一样工作。这种特性的实现通常依赖于锁机制或者多版本控制技术来防止不同事务间的干扰。 #### 持久性 (Durability) 持久性表明一旦事务提交成功后,其对数据库所做的任何更新都将永久保存下来,不会因为诸如断电之类的系统故障而丢失这些变更结果[^2]。 ```python import sqlite3 def create_connection(db_file): """ 创建一个数据库连接 """ conn = None try: conn = sqlite3.connect(db_file) print(f'Successfully connected to {db_file}') except Error as e: print(e) return conn def commit_transaction(conn, sql_query): """ 提交事务 """ cur = conn.cursor() try: cur.execute(sql_query) conn.commit() # 确保事务持久化 print("Transaction committed successfully.") except Exception as ex: if conn: conn.rollback() # 如果出错则回滚事务 print("Error during transaction:", str(ex)) conn = create_connection('example.db') commit_transaction(conn, 'BEGIN TRANSACTION; INSERT INTO users(name) VALUES ("Alice"); COMMIT;') if conn: conn.close() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值