WITH 子句
WITH 子句用于指定刷新过程中在基础性基表上获取的锁的类型。获取的锁类型决定了填充文本索引的方式以及事务并发性受影响的方式。如果不指定 WITH 子句,则无论为连接设置何种隔离级别,缺省值均为 WITH ISOLATION LEVEL READ
UNCOMMITTED。
可以指定以下 WITH 子句选项:
ISOLATION LEVEL isolation-level
WITH ISOLATION LEVEL 用于更改执行刷新操作的隔离级别。
语句执行结束时会恢复连接的原始隔离级别。
EXCLUSIVE MODE
如果不想更改隔离级别,但希望保证更新后的数据与基础表中已提交数据保持一致,则使用 WITH EXCLUSIVE MODE。使用 WITH EXCLUSIVE MODE 时,会在基础性基表上放置独占表锁,在刷新操作完成前,其它事务无法对基础表执行查询、更新或其它任何操作。如果无法获取表锁,则刷新操作将失败并返回错误。
SHARE MODE
WITH SHARE MODE 用于在执行刷新操作时为其它事务赋予对基础表的读权限。指定此子句后,在执行刷新操作之前,基础性基表将获得共享表锁,并持续到刷新操作完成。
FORCE 子句
此子句用于指定刷新方法。如果未指定此子句,则数据库服务器会根据表的更改程度来决定是执行增量更新还是完整重建。
FORCE BUILD 子句
通过重新创建文本索引的方式对其进行刷新。此子句用于强制文本索引进行完整重建。
FORCE INCREMENTAL 子句
仅根据基础表中的变化内容来刷新文本索引。如果未对基础表执行大量更新操作,则完成增量刷新的时间会更短。此子句用于强制文本索引进行增量更新。
增量刷新不会从文本索引中删除已删除的条目。因此,文本索引可能比预期略大,以便包含当前和历史数据。通常,始终使用 FORCE INCREMENTAL 子句手动刷新的文本索引会出现此类问题。自动刷新文本索引时,如果历史数据占文本索引总大小的 50%,将自动删除历史数据。