1
数据库德比存在问题。有时写作的操作需要很多时间。 可能有很多阅读阻塞书写的操作? 谢谢。是否可以通过阅读操作阻止数据库的写入操作?
数据库德比存在问题。有时写作的操作需要很多时间。 可能有很多阅读阻塞书写的操作? 谢谢。是否可以通过阅读操作阻止数据库的写入操作?
读取需要共享锁。写入(更新)需要独占锁。要获得排他锁,事务必须等待释放共享锁。所以a reader can block a writer。
试图读取相同数据的另一个事务被允许 读取,而是试图更新数据的事务将这样做,直到共享锁被释放可防止 。
另请参阅德比的Type and Scope of Locks。
您可以通过更改一个或多个交易的isolation level来降低影响。德比的默认值是READ COMMITTED
,这意味着您必须将一个或多个读取器设置为READ UNCOMMITTED
以提高并发性。但READ UNCOMMITTED
允许脏读,不可重复读取和幻像读取。 (READ COMMITTED
允许不可重复的读取和幻像读取,但不允许脏读取。)
减少阅读器阻止作者的另一种方法是使阅读器运行得更快。通过阅读查询执行计划,明智地使用单列索引和多列索引以及定期重建索引以减少碎片来调整查询。