Python Azure SQL慢速插入与本地数据库

2024-06-28 11:05:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python SQLAlchemy在Azure SQL数据库中插入200000行。 根据SQLAlchemydocumentation,我尝试了最快的批量插入方法:批量插入映射和核心

然而插入速度却低得离谱:每7.5秒100行。 当我使用本地数据库运行相同的代码时,代码会在几秒钟内插入10000条记录

SQL表I insert to由4列组成: [Data]([Date]Date、[sId]int、[mId]int、[Value]float)带有主键(Date,sId,mId)和外键sId,mId引用了相当小的表(每个表中有<;10K行)

你知道是什么导致了本地和Azure SQL db之间如此巨大的差异吗

  • 非DTU问题:Azure SQL数据库计算利用率<;1%,尝试使用空表设置100DTU
  • 未联网问题:在同一地区托管了相同的应用程序内代码服务,性能没有提高

Tags: 代码lt数据库核心sqldatesqlalchemy批量
1条回答
网友
1楼 · 发布于 2024-06-28 11:05:08

非常感谢@Gord Thompson

我们可以在python中设置Fast Executemany Mode

Pyodbc驱动程序增加了对“快速执行”执行模式的支持,这在使用Microsoft ODBC驱动程序时大大减少了DBAPI executemany()调用的往返次数,用于适合内存的有限大小批处理。当要使用ExecuteMay调用时,可以通过在DBAPI游标上设置标志.fast_executemany来启用该功能。SQLAlchemy pyodbc SQL Server方言支持在将.fast_executemany标志传递给create_engine()时自动设置此标志;请注意,ODBC驱动程序必须是Microsoft驱动程序才能使用此标志:

 engine = create_engine(
    "mssql+pyodbc://scott:tiger@mssql2017:1433/test?driver=ODBC+Driver+13+for+SQL+Server",
    fast_executemany=True)

我们很高兴它能帮助您解决问题

相关问题 更多 >