AWS Postgres插入SQLALchemy的速度比本地SQLite慢1000倍以上

时间:2019-05-29 04:55:20

标签: python postgresql sqlite amazon-web-services sqlalchemy

我在AWS RDS(m4.large 2vCPU,8GB内存)上具有Postgres(10.2)服务器,具有标准设置(关闭了同步提交),并且与我本地的SQLite相比,任何类型的SQLALchemy插入都非常慢笔记本电脑。

我运行了official SQLAlchemy docs中的性能脚本,请参见页面底部。

基本上,脚本所做的是创建一个表Customer,该表具有一个主整数键id和一个字符串列name。该脚本只是以各种方式调用"INSERT INTO customer (name) VALUES (?)"来插入1000行。

对于每月花费近200美元的AWS设置,结果确实是灾难性的:

SQLite结果

SQLAlchemy ORM:1000条记录的总时间0.17040562629699707秒

SQLAlchemy ORM pk已给出:1000条记录的总时间0.08621740341186523秒

SQLAlchemy ORM bulk_save_objects():1000条记录的总时间0.027913570404052734秒

SQLAlchemy ORM bulk_insert_mappings():1000条记录的总时间0.014255523681640625秒

SQLAlchemy Core:1000条记录的总时间 0.010448455810546875秒

AWS Postgres结果

SQLAlchemy ORM:1000条记录的总时间18.51957869529724秒

SQLAlchemy ORM pk已给出:1000条记录的总时间18.049689054489136秒

SQLAlchemy ORM bulk_save_objects():1000条记录的总时间18.0506489276886秒

SQLAlchemy ORM bulk_insert_mappings():1000条记录的总时间17.969014644622803秒

SQLAlchemy核心:1000条记录的总时间 22.948890209197998秒

所有插入方法都慢得多,核心方法甚至可以超过1000倍。这是Postgres配置问题吗?我的网络延迟不会那么糟:-)。谢谢!

编辑:

由于@Laurenz,我使用pg_stat_statements进行了调查,查询时间完全可以了。我怀疑这是网络问题。此外,我在与数据库相同的VPC中启动了一个小型EC2实例,并再次运行了性能脚本:性能提高了几个数量级(仅比SQLite慢5-20倍,但这是我所期望的)。 / p>

任何想法如何解决此网络问题?这可能是什么原因?我的意思是说,相对于需要通过互联网传输的字节而言,带有一些字符串数据的1000行并不多。是否有人在VPC中遇到了与AWS DB相同的问题?

0 个答案:

没有答案