小编And*_*res的帖子

SQL Server - 运行查询后磁盘活动非常高?

我正在 AWS 实例上运行 SQL Server Express 12.0.4100,该实例具有 16 个内核和 64 GB RAM,附加了 3TB 和 9000 IOPS EBS。这已经完美运行了 2 年,直到本周都没有问题。

服务器正在运行一个 web 应用程序,每秒接收 5-10 个请求,每个请求都被转换为对数据库的相同查询,只是参数不同(这都由 ORM 处理)。这些查询(我们称之为GetProduct查询)有点大,因为它们从 13 个表中检索数据以构建发送回给用户的单个 JSON 响应。查询通常需要 800 到 1500 毫秒的时间才能运行。

本周我注意到,当我执行一个查询时,一个简单的选择前 1000 个表中的单个 where 条件也被GetProduct查询扫描,SQL Management Studio 报告的数据库 I/O 使用率上升,在 30MB/s 之间波动和 50MB/s,即使我的查询已经返回(正常的数据库 I/O 在 0.1MB/s 和 1MB/s 之间)。我突然发现我的GetProduct查询现在需要 60 多秒才能完成!导致超时和对数据库执行的所有查询变得非常缓慢。如果我重新启动整个服务器框,这是固定的,一切都会恢复正常,直到我再次运行一个非常奇怪的查询。

我远非数据库专家,我是一名程序员,也负责维护这个数据库,团队中没有一个人对数据库了解很多。我更新了统计数据并注意到我的大多数索引的碎片化程度非常高(SSMS 报告的 95% 到 99% 之间)。我正在计划一个维护窗口,以便我可以删除应用程序并重建所有索引。

碎片会导致这种行为吗?我执行了sp_whoisactive,我确定我的数据库上没有其他任何东西在运行,只是调用GetProduct查询需要很多时间才能完成。


更新

我使用 SSMS 活动监视器中的“最近昂贵的查询”部分获得了查询计划,因为此查询sp_whoisactive @get_plans = 1 …

performance sql-server entity-framework fragmentation sql-server-2012

5
推荐指数
1
解决办法
319
查看次数

提高大表中MySql查询性能

我有一个 MySql 数据库,用于存储来自应用程序的事件,自从我们创建它以来,我们只插入和选择数据,我们从未删除任何行。我不是数据库管理员,我的组织中没有数据库管理员,所以如果我遗漏了一些基本的东西,请多多包涵。数据库有一个像这样的表:

CREATE TABLE `eventlogs` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `LogType` int(11) NOT NULL,
  `ProductId` longtext,
  `Username` varchar(128) CHARACTER SET utf8 DEFAULT NULL,
  `ClientVersion` longtext,
  `Message` longtext,
  `Referrer` longtext,
  `UserAgent` longtext,
  `CreatedDate` datetime NOT NULL,
  PRIMARY KEY (`Id`),
  KEY `IX_LogType` (`LogType`),
  KEY `IX_CreatedDate` (`CreatedDate`),
  KEY `IX_Username` (`Username`)
) ENGINE=InnoDB AUTO_INCREMENT=180712975 DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)

这曾经非常有效,但它达到了几乎不可能运行任何查询的程度,它们需要超过 15 分钟,有时甚至更多!这是我们运行的典型查询:

SELECT * FROM customily_logs.eventlogs
    WHERE CreatedDate > '2020-06-01'
      and Username = 'myuser'
      and LogType = 3
Run Code Online (Sandbox Code Playgroud)

这是查询的执行计划:

{
  "query_block": {
    "select_id": 1,
    "cost_info": …
Run Code Online (Sandbox Code Playgroud)

mysql innodb mysql-5.7 query-performance

2
推荐指数
1
解决办法
70
查看次数