Azure SQL 数据库更新性能

标签 azure azure-sql-database

我们正在将一些数据库从运行 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/

相关文章:

azure - 无法使用 Az 模块或 Az/CLI 设置 unauthenticatedClientAction

azure - 部署解决方案后,Windows Azure SQL 数据库连接字符串不起作用

Azure 数据工厂副本

javascript - Azure Function 执行速度极慢且不一致

azure - 无法对嵌套资源执行请求的操作。找不到父资源 '****.io'

sql - 部署到 Azure 应用服务时,ASP.NET Core Razor Pages Web 应用程序中的 Active Directory 交互式身份验证不起作用

azure - 无法重置虚拟机的密码/ssh key

sql - SELECT * 中有时会缺少计算列

SQL Azure Rest api BeginExport...如何检查导出是否完成

ios - Parse Server(由 Azure 托管)不支持匿名登录?