代码之家  ›  专栏  ›  技术社区  ›  Kuldeep

我们什么时候应该在数据库中进行交易?

  •  0
  • Kuldeep  · 技术社区  · 2 年前

    我已经开始研究数据库的事务概念,但我不知道什么时候应该使用事务,什么时候不应该使用事务?

    假设,如果我运行简单 SELECT*FROM table_name 查询那么,我是否必须使用交易概念。

    或者,我是否使用插入和更新查询来处理事务概念。

    请告诉我!

    2 回复  |  直到 2 年前
        1
  •  0
  •   Pavel Stehule    2 年前

    对于一个独立的查询,您不需要启动事务。当数据库支持事务时,它会隐式启动事务。交易的好处是

    a) 执行更多的查询,并且需要一些数据的一致性(例如可重复读取),

    b) 当您需要确保写入操作的数据一致性时(或作为对竞争条件的保护)

    c) 由于强制IO同步,提交可能是昂贵的操作。事务可以包装更多的写操作,然后可以减少提交次数,这可以显著提高速度。它对不使用fsync的不安全系统没有影响。

        2
  •  0
  •   kurniadi445    2 年前

    何时使用事务以及何时不使用事务取决于要执行的查询。例如,你不希望出现这样的情况:有人给另一个人汇款,突然断开连接或电脑关机。这将导致发送者的余额被扣除,而接收者还没有收到钱。在这种情况下,我们可以使用交易,如 PostgreSQL documentation

    我可以使用MySQL为您提供如下所示的示例查询:

    start transaction;
    
    update accounts
    set balance = balance - 100
    where account_id = 1;
    
    update accounts
    set balance = balance + 100
    where account_id = 2;
    
    commit;
    

    这样,您的事务数据应该是安全的。正如我所解释的,如果连接丢失或计算机崩溃,您的数据将不会发生任何更改,从而防止出现不良结果。