我有一个复杂的选择查询和一个巨大的表。
我正在运行此select语句,同时有一条Update语句到达并尝试 更新 表。
select
Update
恕我直言-更新需要 排他 锁-因此update语句将不得不 等待 select命令完成。
我对吗 ?
我该怎么才能做到:执行复杂的select, 并且 也让update命令运行( 目前我不在乎脏数据 )
update
是的-在一定程度上。
多长时间,SELECT取决于事务的隔离级别上共享锁认为:
SELECT
READ UNCOMMITTED
UPDATE
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
从技术上讲,该UPDATE语句首先在读取要更新的行的当前值的时间内获得一个UPDATE锁-与共享锁兼容(由所使用SELECT)。
完成后,该Update锁将升级为独占锁,以便将新数据写入表中。