AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 146648
Accepted
AndreasS
AndreasS
Asked: 2016-08-13 08:34:06 +0800 CST2016-08-13 08:34:06 +0800 CST 2016-08-13 08:34:06 +0800 CST

SQL Server 2016 高空闲 CPU 和查询极慢

  • 772

我安装了大约 10 天的 WinServer2012R2 和 SQL Server Express 2016 用于测试。我是这台机器上唯一的用户。SQL Server 2005 中的 .bak 约为 250MB 的数据库被还原,没有任何问题。重新启动机器后,进程“SQL Server NT - 64 Bit”使用 0% CPU。

在几分钟或几小时后,来自“SQL Server NT - 64 位”的 SSMS CPU 使用率的一些简单查询(没有更新/插入!)突然跃升至 ~15% 并保持在那里,即使在空闲时也是如此。从那时起,通常需要不到一秒钟的查询突然需要 2 分钟。在实际查询期间,CPU 使用率不会增加。在这种状态下,服务器几乎无法使用。

然后仅连接 SQL Server Profiler 需要 >30 秒。除了我自己的查询之外,我只看到来自 SQLServerCEIP / SQLTELEMETRY 的查询很少,大约每分钟 3 个。

重新启动 SQL-Server 并不能解决它。CPU 使用率立即回升至 ~15%。即使在数小时后 SQL-Server 也不会恢复。只有重新启动整个机器才能解决问题。

由于这是一个“开箱即用”的安装,只有一个小数据库,几乎没有查询,只有我作为用户,可能没有锁,许多关于常规 SQL-Server 性能问题的文章都谈到了很多不在这里并不适用。似乎 SQL-Server只想专注于一些内部任务。

这是一个具有 2GB RAM 和 2GHz 双 Xeon 的虚拟机。我也有VS2016,它真的很快。没有防病毒软件,甚至没有 Windows Defender。这里已经很晚了。明天我会试试 sp_whoisactive。我真的很想知道 SQL-Server 在那里做什么......在以前的 1 GB 机器上,相同的数据库在 SQLServer2005 下运行了 10 年没有问题......

我不是 SQL-Profiler 专家。我应该从哪里开始寻找?

sql-server performance
  • 2 2 个回答
  • 10808 Views

2 个回答

  • Voted
  1. Best Answer
    fx1974
    2018-02-08T17:36:58+08:002018-02-08T17:36:58+08:00

    由于您的 CPU 利用率很低(而且您的 CPU 设置很好),我会先检查内存压力。使用 SQL Express 2016,您的内存限制为 1410 MB,但您的 VM 只有 2GB。给你的虚拟机多 1GB 内存,看看是否有帮助。您还可以检查 SQL Server 日志是否将内存分页到文件。

    如果这不起作用,请尝试将数据库设置 LEGACY_CARDINALITY_ESTIMATION 设置为 ON。参考:在 SQL Server 2016 中将 DB Compatibility Level 130 与旧 CE 一起使用。我们在进行一些升级时遇到了这个问题;结果会因每个数据库而异。

    • 3
  2. dan9298
    2017-04-19T04:37:27+08:002017-04-19T04:37:27+08:00

    以下补丁描述了类似的问题。可能值得尝试:

    https://support.microsoft.com/en-us/help/3195888/fix-high-cpu-usage-causes-performance-issues-in-sql-server-2016

    • -1

相关问题

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve