我们在Azure中运行一个弹性池,运行多个数据库,当运行一个较大的导入时,这似乎比我们习惯的时间要长。在这些导入过程中,我们运行了6个核作为测试。所有数据库都允许使用所有核心。
在我们的本地环境中,它每秒插入大约100 k记录,但是Azure上相同的数据集每秒执行大约1k /秒(我们的vm)到4k /秒(开发笔记本电脑)。
在此插入过程中,数据库只使用14%的日志IO、5%的CPU和0%的DataIO。在P2中使用DTU模型建立一个新的数据库时,我们注意到了同样的经验。,所以我们甚至没有达到数据库的极限。
该表包含大约36列,这些列都是必需的。
我们已经使用BulkInsert使用了以下方法,使用不同的批次大小
BulkConfig b = new BulkConfig();
b.BatchSize = 100000;
await dbcontext.BulkInsertAsync(entities, b);以及使用使用较小批的标准EntityFramework加载项。我们甚至使用了手工编写的SqlBulkCopy方法,但是都没有骰子。
现在的问题主要是,这是一个软件问题吗?我们在AzureDB中遇到问题了吗?我们需要改变大宗进口的方式吗?
编辑:
尝试使用TempDB设置在BulkInsert中运行导入,但这也不会提高性能。LogIO仍在14%。
发布于 2021-10-27 11:34:30
下面是与相同场景相关的讨论:优化Azure SQL数据库大容量更新方案- 链接。
https://stackoverflow.com/questions/69720868
复制相似问题