sql - Azure 函数到 Azure SQL - 性能和扩展
问题描述
我有一个写入 Azure SQL 的 Azure 函数。它当前从主题中读取,但可以更改为从队列中读取。是否有从主题或队列中读取的偏好?
每小时有 20 万条消息触及该主题。我需要将每小时 20 万条消息写入 Azure SQL。在处理过程中,我经常收到错误“数据库的请求限制为 60 并且已达到。”。我了解我已达到最大数据库连接数。有没有办法阻止 Azure 扩大 Azure Function 实例的数量?共享 SQL 连接的最佳方式是什么?
还有其他 Azure 函数到 Azure SQL 的性能提示吗?
谢谢,
理查德
解决方案
使用服务总线没有明确定义的方法来实现这一点。您可能想玩host.json
文件并更改maxConcurrentCalls
参数:
"serviceBus": {
// The maximum number of concurrent calls to the callback the message
// pump should initiate. The default is 16.
"maxConcurrentCalls": XYZ,
}
但它只控制单个实例的并行调用量。
我建议您查看事件中心。您至少获得 2 项奖金:
您可以切换到成批的事件,而不是 1 接 1 的处理。这通常是向 SQL 表中插入大量数据的一种非常有效的方法。
最大并发受事件中心分区数量的限制,因此您知道并发调用的硬限制。
不利的一面是,您将失去一些服务总线功能,如死字、自动重试等。
推荐阅读
- python - ImportError numpy.core.multiarray 导入失败
- azure - 找不到模块:'Az.Accounts' - 在 VM 规模上设置 Azure Windows 数据中心 2019
- apache-spark - 通过sqlquery读取大表时pyspark无法生成作业
- matplotlib - 在 seaborn 中,如何关闭 xaxis 标题,但保留 xaxis 标签和刻度?
- r - 排序和删除元素后如何恢复向量的原始顺序?
- graphql - 无法连接到 WebSocket 端点 [apollo-server-express with GooglePubSub]
- javascript - 使用 vue 公式上传多张图片
- r-markdown - 4 级和 5 级标题未包含在 officedown 的目录中
- javascript - 如何找出具有相似类的块划掉固定块(getBoundingClientRect)?
- android - Kotlin 协程为什么在 coroutinescope 中使用上下文?