我有一张表,每天必须更新10K以上的记录。使用简单的更新语句时,这会花费很多时间。在SQL azure中有更快的方法来批量更新记录吗?
问候 迪特
答案 0 :(得分:1)
1。)是否有任何锁定/阻止
select blocking_session_id,wait_type,wait_time,last_Wait_type
from sys.dm_exec_requests qs
cross apply
sys.dm_exec_sql_text(qs.sql_handle)
这取决于您尝试批量加载的位置,上面的查询应该显示帮助您确定什么是等待类型,是网络,DTU ..
2.。)在使用Azure DB时,您必须再使用一个名为DTUS的因子(简单地说每秒可以运行多少事务)。
您可以使用以下查询来查看您的等级是否正在窒息..
SELECT
(COUNT(end_time) - SUM(CASE WHEN avg_cpu_percent > 80 THEN 1 ELSE 0 END) * 1.0) / COUNT(end_time) AS 'CPU Fit Percent'
,(COUNT(end_time) - SUM(CASE WHEN avg_log_write_percent > 80 THEN 1 ELSE 0 END) * 1.0) / COUNT(end_time) AS 'Log Write Fit Percent'
,(COUNT(end_time) - SUM(CASE WHEN avg_data_io_percent > 80 THEN 1 ELSE 0 END) * 1.0) / COUNT(end_time) AS 'Physical Data Read Fit Percent'
FROM sys.dm_db_resource_stats
如果你在第一个查询中等待类型是磁盘,ram,IO和DTU查询一致地显示DTU百分比> 90,那么你可能还需要升级数据库层或考虑调优查询
如果以上都不起作用,您也可以发布执行计划