1
g8287694 2018-05-11 10:12:19 +08:00
和语言无关,和 sql 有关,为什么明明是 sql 的问题还说语言的问题?
|
2
Lycnir 2018-05-11 10:18:13 +08:00
python: 我不背锅
|
3
whx20202 2018-05-11 10:25:59 +08:00 1
建议排查数据库的 slow log 看看数据库端执行时间多长
1. postgresql 这种慢 SQL 日志,会把 python 进程和数据库中间,传数据的时间也包括在内,而你读了 9W 行,这个时间也很恐怖 2. 有时候 SQLalchemy 序列化的性能很低很低,之前搞 OpenStack 性能优化的时候,APM 团队说,我们环境上 99%的时间都在序列化上,你可以考虑上一个 cprofile 看一下。 3. 首先得在数据库端查看执行计划,我觉得你的 SQL 本身可能也有问题 所以: 1. 在数据库中查看执行计划,看看有没有做到读最少的 IO,返回最合适的内容 2. 如果 SQL 没问题,可以考虑在数据库节点用命令行 导出结果,这个时间应该比你看到的慢 SQL 时间短,因为省去了路上的时间,和服务器解析的时间(尤其是用了 ORM 框架的情况下) 3. 也可以考虑上 cprofile 4. 9W 行真的需要吗,有没有可能在数据库里直接聚合一下? |
4
zhangjiabin1010 OP @whx20202 先感谢解答,我按您的提示思路先去找找解决办法。刚才的问题没有编辑完,您可以看下我新发的帖子 https://www.v2ex.com/t/453985#reply1
|