我需要在我的计算机上运行本地python脚本,该脚本在点击,窗口更改等事件上插入远程数据库上的记录。我正在使用sqlalchemy
连接到postgres
数据库。
问题是我的电脑显着减速(我不会那样使用它)。我正在使用本地sqlite
数据库进行测试,并且工作正常,然后切换到远程postgres
并出现此性能问题。
我知道python是同步的,http请求很慢,但我有4个内核,所以从技术上讲,其他进程不应该这么慢。我怎么能避免这个?我在Windows上运行。
更新 事件的频率非常高,因为每次点击,窗口更改和一些击键都会触发插入。
答案 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