3

关于数据库事务

2019-08-10  本文已影响35人  happyJared

什么是事务?

事务是逻辑上的一组操作,要么都执行,要么都不执行。

转账是最经典也常被拿出来说的例子。假如小明要给小红转账1000元,这个操作会涉及到两个关键:将小明的余额减少1000元,将小红的余额增加1000元。但万一在这两个操作之间,突然出现错误:比如银行系统崩溃,导致小明余额减少,而小红的余额没有增加,这样就不对了。

所以,事务就是用来保证这两个关键操作要么都成功,要么都失败。

事物的四大特性(ACID)

事物的特性
  1. 原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;
  2. 一致性: 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的;
  3. 隔离性: 并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;
  4. 持久性: 一个事务被提交之后,它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。

并发事务会带来哪些问题?

在典型的应用程序中,多个事务并发执行,经常会操作相同的数据,来完成各自的任务(多个用户对同一数据进行操作),不过这可能会导致以下的问题:

不可重复度和幻读区别:

不可重复读的重点,是修改,比如多次读取一条记录,发现其中某些列的值被修改了
幻读的重点,在于新增或者删除,比如多次读取一条记录,发现记录增多或减少了

上一篇 下一篇

猜你喜欢

热点阅读