gpt4 book ai didi

Azure SQL 数据库更新性能

转载 作者:行者123 更新时间:2023-12-03 05:54:56 28 4
gpt4 key购买 nike

我们正在将一些数据库从运行 SQL Server 的 Azure VM 迁移到 Azure SQL。当前的虚拟机是标准 DS12 v2,连接了两个 1TB SSD。

我们正在使用 P1 性能级别的弹性池。我们还处于早期阶段,因此池中没有真正运行其他任何东西。

无论如何,我们正在执行一个涉及少量约 20M 行表的 ETL 过程。我们批量加载这些表,然后更新一些属性以帮助完成该过程的其余部分。

例如,我当前正在运行以下更新:

UPDATE A
SET A.CompanyId = B.Id
FROM etl.TRANSACTIONS AS A
LEFT OUTER JOIN dbo.Company AS B
ON A.CO_ID = B.ERPCode

TRANSACTIONS 约为 20M 行;公司人数不足 50 人。

我已经运行此更新 30 分钟,这远远超出了可接受的范围。矿池的使用率徘徊在 40% 左右。作为引用,我们的 Azure VM 运行此过程大约需要 2 分钟。

我通过批量复制加载此表,此更新已经超出了加载整个表所需的时间。

关于加快此(和其他)更新速度有什么建议吗?

最佳答案

We are using an elastic pool at the P1 performance level.

不确定这如何转化您的虚拟机性能水平以及您使用什么标准来比较两者

我建议执行以下步骤,因为没有提供执行计划..

1.更新运行时检查是否有等待类型

select 
session_id,
start_time,
command,
db_name(ec.database_id) as dbname,
blocking_session_id,
wait_type,
last_wait_type,
wait_time,
cpu_time,
logical_reads,
reads,
writes,
((database_transaction_log_bytes_used +database_transaction_log_bytes_reserved)/1024)/1024 as logusageMB,
txt.text,
pln.query_plan
from sys.dm_exec_requests ec
cross apply
sys.dm_exec_sql_text(ec.sql_handle) txt
outer apply
sys.dm_exec_query_plan(ec.plan_handle) pln
left join
sys.dm_tran_database_transactions trn
on trn.transaction_id=ec.transaction_id

等待类型,为您提供大量信息,可用于排除故障..

2.您还可以使用下面的查询并行查看查询发生了什么

set statistics profile on
your update query

然后在单独的窗口中运行以下查询

select 
session_id,physical_operator_name,
row_count,actual_read_row_count,estimate_row_count,estimated_read_row_count,
rebind_count,
rewind_count,
scan_count,
logical_read_count,
physical_read_count,
logical_read_count
from
sys.dm_exec_query_profiles
where session_id=your sessionid;

根据您的问题,DTU 似乎没有问题。所以我在这方面没有看到太多问题..

关于Azure SQL 数据库更新性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42766415/

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