【问题标题】:The right isolation level?正确的隔离级别?
【发布时间】:2020-08-29 12:33:58
【问题描述】:

假设我有一个存储过程,它插入有关客户提交的新订单的信息。而且这个存储过程可以被很多不同的用户同时使用。

我的问题是“如果我有这两个隔离级别选项(读取提交和可序列化),那么该存储过程应该处理哪种隔离级别”?

我需要一个完整的理由,因为我被困住了,这是最好的决定。

获取已提交读隔离级别的示例将非常有帮助,在并发处理中,如果使用不会损坏数据库,或者如果使用可序列化隔离级别会损坏数据库。这意味着我需要通过证明其中一个是正确的决定来理解。

亲切的问候。

【问题讨论】:

    标签: oracle serialization isolation-level transaction-isolation


    【解决方案1】:

    假设我有一个存储过程,它插入有关客户提交的新订单的信息。而且这个存储过程可以被很多不同的用户同时使用。

    由于您只进行插入操作,因此事务本质上是不冲突的。因此,您需要读取提交的隔离级别。这是默认的隔离级别。

    来自documentation

    读取提交的隔离级别

    在读提交隔离级别, 这是默认设置,事务执行的每个查询只看到 在查询(而不是事务)开始之前提交的数据。 这个级别 隔离适用于数据库环境,其中很少 交易可能会发生冲突。

    可序列化隔离级别

    在序列化隔离级别,一个 事务只看到当时提交的更改 事务(而不是查询)开始并由事务进行的更改 本身。可序列化事务在以下环境中运行 使其看起来好像没有其他用户正在修改 数据库。

    可序列化隔离适用于环境:

    • 使用大型数据库和仅更新少量事务的短事务 行

    • 两个并发事务修改相同事务的机会在哪里 行数相对较低

    • 运行时间相对较长的事务主要是只读的

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 2013-01-25
    • 2010-12-04
    • 1970-01-01
    相关资源
    最近更新 更多