2 回答
TA贡献1816条经验 获得超4个赞
我对这个问题的看法是拥有与 PRODUCTION 环境相似的环境,并使用不同的批次大小值进行几次测试。从性能相似的那些中选择资源利用率较低的。
动态解决方案不是一个好主意,因为您至少需要考虑网络的延迟和可用内存,这本身就是一个非常具有挑战性的问题。
希望这有帮助!
TA贡献1876条经验 获得超7个赞
使批处理大小在运行时可配置,以根据性能或错误进行快速调整。您可以从每批次 10,000 行开始,然后使用以下查询来监控过去 x 分钟内成功/终止/限制的连接,并决定减少批次大小。
select *
from sys.database_connection_stats_ex
where start_time >= CAST(FLOOR(CAST(getdate() AS float)) AS DATETIME)
order by start_time desc
select *
from sys.event_log
where event_type <> 'connection_successful' and
start_time >= CAST(FLOOR(CAST(getdate() AS float)) AS DATETIME)
order by start_time desc
您还应该监视数据库是否达到 DTU 限制。
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
如果资源低于特定阈值,还可以修改最后一个查询以增加批量大小。
- 2 回答
- 0 关注
- 189 浏览
添加回答
举报