奇怪! mysql-connector- Python 在 Python 3.7 下特别慢

2018-10-13 12:31:53 +08:00
 Qzier

我测试了下 Python 几大 MySQL 驱动的查询速度。

http://ww1.sinaimg.cn/large/6909e98fgy1fw6hf5vx7fj20sl0833zo.jpg

和预料的一样,pymysql 是最慢的,mysqlclient 很快,但是 mysql-connector-python 更快,但是只是在 Python 3.6 下最快,一旦到了 Python 3.7,反而比 pymysql 还慢,这是怎么回事?

5086 次点击
所在节点    Python
12 条回复
Qzier
2018-10-13 12:34:57 +08:00
图片怎么不显示?

Qzier
2018-10-13 12:36:41 +08:00
查询数据量 30w
congeec
2018-10-13 13:01:53 +08:00
求 benchmark 代码
Qzier
2018-10-13 13:08:08 +08:00
@congeec 就是最简单 select * from table 的查询啊
westoy
2018-10-13 13:12:07 +08:00
mysql-connector-python 带个加速扩展, 没有的话 fallback 到纯 python 就慢出翔了

pypi 上 3.7 以上版本的 whl 自带,3.7 没有, 你从源码安装吧
Qzier
2018-10-13 13:15:00 +08:00
@westoy 直接 `pip install mysql-connector-python` 的
NoAnyLove
2018-10-13 13:35:00 +08:00
5 楼正解,3.6 的 mysql_connector_python-8.0.12-cp36-cp36m-win_amd64.whl 包带了编译好的 dll,而 3.7 用的通用包 mysql_connector_python-8.0.12-py2.py3-none-any.whl 没有预编译好的扩展
Qzier
2018-10-13 13:42:17 +08:00
@NoAnyLove 学习了,刚刚试了下从源码编译安装,速度又回来了。

[pymysql]
用时:11.067870310999979
[mysqlclient]
用时:2.3283727630000612
[mysql.connector]
用时:1.1639837800000805

安装代码
sudo /home/qzier/.pyenv/versions/3.7.0/bin/python setup.py install --with-mysql-capi=/usr/bin/mysql_config
sadhen
2018-10-13 13:45:14 +08:00
benchmark 代码得提供吧。另外,Python 有类似于 Java 的 Flight Recorder 那种东西么。

可以弄一个火焰图,看一下到底性能瓶颈在什么地方
sadhen
2018-10-13 13:45:41 +08:00
类似于 JMH 这样的,python 也应该有的吧
cy97cool
2018-10-14 01:10:44 +08:00
原来 pymysql 性能差距这么大 感谢楼主提供
holinhot
2019-06-07 17:09:13 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/497288

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX