localhost Django 开发服务器与 macOS 上 Postgres 慢的比较?
有没有人注意到在Mac OS上运行的django开发服务器连接到远程(postgres)数据库时变得很慢?看起来这不是其他地方提到的DNS问题。我们有一个预发布环境,运行着完全相同的代码,且在同一个远程预发布服务器上托管数据库,而这个环境的性能非常流畅。
这是本地运行的性能中间件的输出:
总耗时:19.58秒,Python耗时:6.39秒,数据库耗时:13.19秒,查询次数:17
而在预发布服务器上的输出是:
总耗时:0.07秒,Python耗时:0.05秒,数据库耗时:0.02秒,查询次数:16
也许是因为连接到远程数据库时,postgres客户端网络的开销导致的?我不介意在预发布服务器上进行开发,但能在本地运行也是很不错的。
2 个回答
我在开发环境中使用生产数据库的副本时也遇到了同样的问题。问题出在 django_session
表,这个表的大小接近几个GB。最简单的解决办法就是清空这个表,因为在开发中我不需要使用用户的会话数据。
我使用了一个简单的命令:
TRUNCATE TABLE 'django_session'
关于这个问题的更多信息可以在这里找到:
https://dba.stackexchange.com/questions/52733/why-django-session-table-grows-on-postgresql
有两件事:
- Django的开发服务器非常慢。任何外部连接都会受到它的限制。
- 连接到外部数据库的速度受限于你电脑的网络能力(通常瓶颈在于你的网络连接)。
每当你在本地开发并连接到外部数据库时,速度都会很慢。比如在工作中同时进行Drupal开发时,我们会把sites
文件夹进行版本控制,并使用同一个数据库,虽然它是外部的,但从未离开我们的本地网络。即便如此,速度还是慢得像阿拉斯加一月的糖浆。
我强烈建议你在本地设置PostgreSQL,并将外部数据库复制到本地。这个过程并不耗时,能帮你避免很多麻烦,让你工作效率更高。