sql-server - 数据库 View 性能问题

标签 sql-server database view locking

我正在使用 SQL Server 2008,我有两个具有相同架构的表,我创建了一个 View ,该 View 合并了两个表的内容,以便为外部访问提供“表”的单一 View 。

其中一个表是只读的,另一个表包含批量插入/删除操作(在另一个表上,我将在某个时间间隔使用批量插入来插入几千行并运行另一个 SQL 作业以删除几百万行每天)。

我的问题是,如果对另一张表进行批量插入/删除操作,物理表是否会被锁定,从而阻止外部用户访问两张表的联合 View ? (我在想锁升级是否适用于这种场景,行锁最终锁定表,从而最终锁定 View 的访问?)

最佳答案

if the other table is under bulk insert/delete operation, will the physical table be locked so that the access from external user to the union view of two tables are also blocked?

是的,需要注意的是,如果优化器可以找到一种方法来执行不涉及访问批量插入表的查询,那么访问将不会被阻止。

如果您希望优化批量加载时间,请确保阅读 this blog post .

编辑

您遇到的实际问题是什么?你真的需要在任何地方都使用这个 View 吗(例如,是否有一些地方只需要一个表中的数据,通过 View 查询它?)

如果您希望您的 View 始终处于“在线”状态,请考虑快照隔离,或者如果您要将完整集加载​​到批量表中(例如,每天更换完整内容),您可以将数据加载到一个分离表并在(事务中)sp_rename 表

关于sql-server - 数据库 View 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/979896/

相关文章:

sql-server - 一旦结果集包含某个值,就退出递归公用表表达式

javascript - React Native 中的 WebView 整页截图

database - OCR解决方案/通过400万张纸进行搜索,每天增加10,000张

javascript - 使用 Greasemonkey/Tampermonkey 保存数据供以后检索

ios - 从 View 中删除 subview

android - 如何在我的自定义选项卡上做一些最后的润色(圆边和水平分隔线)

sql-server - SQL Server 全文搜索

java - 线程中出现异常 "AWT-EventQueue-0"java.lang.ClassCastException

sql-server - SQL Server 2008 - 如何压缩备份文件并移动到远程服务器

mysql - 如何使用一张关系总表