【问题标题】:INSERT INTO SELECT TroubleshootingINSERT INTO SELECT 故障排除
【发布时间】:2013-07-19 04:10:27
【问题描述】:

使用 INSERT INTO SELECT 时,如果 SELECT 部分自行运行,则大约 25 秒后返回。插入我已经放手超过 8 分钟,然后取消。我该怎么做才能开始解决这个问题?不知道有没有上锁?这是一个不断进行单次选择和插入的表。这个表上还有 3 个索引,我知道当新行进入时需要更新。上面的场景也仅适用于 68,000 行,我确实有其他插入需要做,这将包含更多。最后,我使用的是 SQL SERVER 2008 R2。

提前致谢。

【问题讨论】:

  • 你能穿上桌子的结构吗?
  • 桌上有触发器吗?如果是这样,请检查其中是否有任何一个在惹你生气(无限循环)。我的赌注就是这样。
  • 执行计划怎么说?
  • 没有触发器,如果​​我运行一个执行计划,一开始有一个关键的查找 74%。如果我自己运行 SELECT,则进行相同的键查找。那么接下来的一切都是次要的,但在插入其中一个索引之前有 2 个表线轴,成本为 30%。在阅读计划时,我只知道这么多。
  • 您的选择是否来自您要插入的同一个表?

标签: sql sql-server sql-server-2008-r2


【解决方案1】:

新表有空间吗?我在 SQL Server 2000 中有一个项目。自动增长正在扼杀时机。当我在加载前预先分配空间时,进程飞了。

确保您的增长选项不是 1 mb 或 10 %。那也会杀了你。

另外,查看即时数据库文件初始化。如果关闭此选项,SQL Server 引擎必须在为您提供新空间之前将页面清零。否则,它会跳过这一步。

来自 MSDN 关于此主题的良好链接,

http://msdn.microsoft.com/en-us/library/gg634626.aspx

禁用即时数据库文件初始化的跟踪标志 1806。确保您的服务器上没有设置此项。

如果这不能解决您的问题,请回帖。

真诚的

约翰 狡猾的 DBA www.craftydba.com

【讨论】:

    猜你喜欢
    • 2012-01-23
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 2010-11-30
    相关资源
    最近更新 更多