gpt4 book ai didi

sql - SQL Azure 上的查询性能极差

转载 作者:行者123 更新时间:2023-12-04 22:11:29 24 4
gpt4 key购买 nike

我们有 S1:20 DTU 250GB SQL Azure 数据库,如下表

CREATE TABLE [dbo].[Reads]
(
[ReadId] [INT] IDENTITY(1,1) NOT NULL,
[LicenseNumber] [VARCHAR](50) NULL,
[Name] [VARCHAR](50) NULL,
[Serial] [VARCHAR](20) NULL,
[FirstSeenUtc] [DATETIME] NULL,
[LastSeenUtc] [DATETIME] NULL,
[Count] [INT] NOT NULL,
[Model] [VARCHAR](100) NULL,
[Make] [VARCHAR](100) NULL,
[TimestampUtc] [DATETIME] NOT NULL,
[PortNumber] [INT] NOT NULL,
[Code] [VARCHAR](50) NULL,
[Peak] [FLOAT] NULL,

CONSTRAINT [PK_Reads]
PRIMARY KEY CLUSTERED ([ReadId] ASC)
WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

该表有超过 8000 万行,简单查询为

select count(1) from dbo.Reads

运行时间为 1 小时 30 分钟。数据库上的负载极小,进程每分钟可能添加大约 1000 行。目前没有从该表中读取任何内容,总体而言数据库上几乎没有负载。

DTU Usage

Data IO

我将数据库升级到 S2: 50 DTU,上面的查询运行了 18 分钟。

我更新了统计数据,但没有多大帮助。当上面的查询运行时,我运行了 Brent Ozar 的 BlitzFirst 存储过程,它说数据库正在最大化数据 IO。在我的 Surface 笔记本电脑上恢复的同一数据库会在一秒钟内返回行数。数据库性能选项卡没有任何建议。

S2:50 DTU 每月费用 75 美元,下一个选项是 S3:100 DTU 每月 150 美元。

我的计划是为我注册的每个客户创建一个数据库,但每个数据库每月 150 美元,我很快就会倒闭!

这是 SQL Azure 的预期性能水平吗?这种基本查询不应该产生即时结果吗?迁移到 VM 上的 SQL Server 会更好吗?

[美国东部时间 2019 年 3 月 10 日上午 11:35 更新]

该表确实有以下 IX

CREATE NONCLUSTERED INDEX [IX_Read_License_Code_TimeStamp] ON [dbo].[Reads]
(
[LicenseNumber] ASC,
[Code] ASC,
[TimestampUtc] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]

我现在发现一些列可以安全地更改为 NOT NULL,并且可以帮助改善情况。

[更新:美国东部时间 2019 年 3 月 10 日晚上 8:40]

我修改了表,使 LicenseNumber 和 Code NOT NULL,这花了 6 个多小时。此后,计数查询运行了 1 分 32 秒。

以下查询在 40 秒内返回结果

select Code, LicenseNumber, TimeStampUtc from dbo.Reads Where TimestampUtc >= '2019-03-10'

最佳答案

删除索引并再次创建它对我来说是这样。在此之前,即使是索引完全覆盖的查询也需要几分钟的时间才能执行。重新创建索引后,相同的查询运行时间不到一秒。

感谢所有对此问题发表评论的人。我学到了新东西。

关于sql - SQL Azure 上的查询性能极差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55084500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com