美文网首页
sql 事务

sql 事务

作者: Vergil_wj | 来源:发表于2021-06-28 08:46 被阅读0次

    为什么需要事务

    事务主要用来保证数据的合理性和并发处理的能力。

    例子:

    • 银行中的转账操作,账户 A 把一定数量的款项转账到账户 B 上,这个操作包括两个步骤,一个是从账户 A 上吧存款减去一定的数量,而是账户 B 上把存款加上相同的数量。这两个步骤显然要么都完成,要么都取消,否则银行就会受损失。显然,这个转账操作中的两个步骤就构成一个事物。

    • 假设 A 和 B 用户都希望查询修改 M 表数据,A 用户不应该刚把 M 表的数据改成 5,查询时显示的数据却是 8 (因为 B 用户修改 M 表的数据成 8 了),事务必须得保证多个用户对共享资源同时访问时,数据库给用户的反应是合理的。

    事务是用来研究什么的

    1. 避免数据处于不合理的中间状态。如转账。
    2. 怎样避免多用户同时访问时呈现给用户的数据是合理的,现在仍然没有很好的解决办法。

    事务和线程的关系

    事务也是通过锁来解决很多问题的。

    线程同步就是通过锁来解决的, synchronized。

    事务和第三方插件的关系

    1. 直接使用事务库技术的难度很大,很多人借用第三方插件实现,数据库中的事务的语法细节不需细细研究。

    2. 第三方插件想要完成预期的功能,一般必须得借助数据库中的事务机制来实现。

    事务三种运行模式

    • 自动提交事务
      每条单独的语句都是一个事物。如果成功执行,则自动提交;如果错误,则自动回滚。

    • 显式事务
      每个事务均以 BEGIN TRANSACTION 语句显式开始。
      以 COMMIT 或 ROLLBACK 语句显示结束。

    • 隐性事务
      在前一个事务完成时新事物隐士启动,但每个事务仍以 COMMIT 或 ROLLBACK 语句隐士结束。

    事务的四大特性

    • 原子性:事务是一个完成的操作。事务的各步操作是不可分的(原子的):要么都执行,要么都不执行。

    • 一致性:当事务完成时,数据必须处于已知状态,要么处于开始状态,要么处于结束状态,不允许出现中间状态。

    • 隔离性:指当前的事务与其它未完成的事务是隔离的。在不同的隔离级别下,事务的读取操作,可以得到的结果是不同的。

    • 持久性:事务完成后,它对数据的修改被永久保持,事务日志能够保持事务的永久性。

    相关文章

      网友评论

          本文标题:sql 事务

          本文链接:https://www.haomeiwen.com/subject/hxssyltx.html