使用sqlalchemy插入远程数据库时出现Python性能问题

时间:2016-02-12 15:44:11

标签: python performance postgresql sqlalchemy

我需要在我的计算机上运行本地python脚本,该脚本在点击,窗口更改等事件上插入远程数据库上的记录。我正在使用sqlalchemy连接到postgres数据库。

问题是我的电脑显着减速(我不会那样使用它)。我正在使用本地sqlite数据库进行测试,并且工作正常,然后切换到远程postgres并出现此性能问题。

我知道python是同步的,http请求很慢,但我有4个内核,所以从技术上讲,其他进程不应该这么慢。我怎么能避免这个?我在Windows上运行。

更新 事件的频率非常高,因为每次点击,窗口更改和一些击键都会触发插入。

1 个答案:

答案 0 :(得分:-1)

您看到的减速是网络连接到服务器的延迟。

如果要在for循环中插入行,则每行都将创建并对数据库执行一个查询。在此过程中,sqlalchemy必须等待每个查询的结果通过网络发回。即使在非常低延迟的网络中,它也可以累积很多时间。

例如:

Adding 10,000 rows in a loop
Time to insert a row: 1us
Latency to the server: 1ms
Total time: 10,000 * 1ms + 10,000 * 1us = 10,01 s

您可以通过一次添加多行来解决此问题。这样,您将只创建一个查询:

例如:

Adding 10,000 rows at once
Time to insert a row: 1us
Latency to the server: 1ms
Total time: 1 * 1ms + 10,000 * 1us = 0,011 s
相关问题