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

为什么sql事务内部的更新仍然需要磁盘io?

  •  2
  • usr  · 技术社区  · 15 年前

    在sql profiler中,您可以看到按主键对表进行非常简单的更新,每次大约需要10-30毫秒。大约每10次更新write列就会显示 ,显示的所有其他更新 . 这意味着大约每10条update语句仍然需要磁盘IO。我不知道为什么。在事务提交之前,将所有IO排队不是更有效吗?

    3 回复  |  直到 15 年前
        1
  •  4
  •   Adriaan Stander    15 年前

    一旦更新了一个表的大小,比如10000条记录,您希望将这些类型的内存更新存储在哪里?

    你想去哪 商店 事务日志。

    尽管拉姆看起来很丰满,但我们不能认为它是无止境的…

        2
  •  1
  •   Unreason    15 年前

    而且,在事务结束之前等待I/O可能不是最优的计划,即使在RAM无限的情况下也是如此,因为这样事务就需要等待所有I/O操作完成。

    否则,对于长时间运行的事务来说,写入磁盘实际上是可取的(但是这样做不会破坏原子性)。

        3
  •  0
  •   Alex    15 年前

    这是交易记录