sql-server - INSERT INTO WITH (TABLOCK) 偶尔没有最低限度地记录
问题描述
加载 sql server 2016 (SP2 CU10) 列存储表时,我遇到了一个奇怪的问题。我正在使用查询提示 TABLOCK,所以它应该被最少记录。有时(假设每 20 次执行 1 次)由于事务的日志增长 (100GB+),查询将消耗整个磁盘。几分钟后才用完全相同的数据执行完全相同的查询,日志基本上没有(10MB)。
查询如下,平均加载大约 1 亿行
INSERT INTO dbo.tbl1 WITH (TABLOCK)
SELECT cols FROM tbl2
检查查询存储,“正常”执行和“日志增长”执行之间的计划完全相同。我唯一的假设是由于当时的服务器条件。如果有服务器压力,查询决定记录完整的插入......但我找不到与此相关的任何内容。
有任何想法吗?
解决方案
推荐阅读
- angular - 如何配置 Angular 以使用 Firebird 和 Webpack
- python - 列表重塑类似于字典类型
- mysql - 使用 Sean Lahman 数据库连接 MySQL 中的多个表
- python - 如何使用 python 从嵌套的 json 文件中获取前 10 项?
- reactjs - gatsby & graphql : 过滤特定的单个图像
- python - ModuleNotFoundError:没有名为“mysql.connector”的模块;'mysql' 不是一个包
- javascript - JS(无回溯)正则表达式用于替换 :bound SQL vars 而无需替换 'colons:in:literals' ...?
- python - 在 Flask 中将数据从一个路由连接到另一个路由,并使用 SQL-alchemy 将数据输入到 SQL 表中
- java - 如何在 Aspose 或 Apache Poi 中解析 MS Word 的样式分隔段落?
- ruby-on-rails - 在 CSS 文件中使用 Ruby