博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql客户端pymysql在python下性能比较
阅读量:7042 次
发布时间:2019-06-28

本文共 1352 字,大约阅读时间需要 4 分钟。

背景

python下mysql的客户端主流有三个pymysql, mysqldb 和 mysql connector。很多人在选择客户端时,没有什么要求,都是按照前人或者经验主义选择,但是有真的研究他们之间的性能差别,以及是否符合你的项目需要,或者遇到性能瓶颈时,是否了解他们之间的差别。

本文将从2个维度来分析他们的性能,一个是直接使用,另一个是使用orm辅助使用,来对比三个的性能差别。

介绍

mysql的python客户端目前市场主流有三个,分别是 mysqldb (mysqlclient), mysql connector python 和 pymysql。

mysqldb (mysqlclient) 是mysql官方推出基于C库来写mysql连接库,非纯python。之前mysqldb只支持python2,后面mysqlclient在mysqldb的基础上fork来支持python3。

mysql connector for python 是mysql官方推出的纯python实现的连接库。

pymysql 是纯python写的主流连接库。

环境

  • host: centos 7.2 4核8G内存
  • mysql version: 5.6.43
  • python version: 3.6.6
  • pymysql: 0.9.3
  • mysqlclient: 1.4.2.post1
  • mysql-connector-python: 8.0.15
  • mysqlalchemy: 1.2.18
  • 测试数据库: mysql 提供的 sakila

测试

查询库表返回 100 条记录

SELECT payment_id,customer_id,staff_id FROM payment where payment_id between 1 and 100 limit 100复制代码

非ORM操作

测试方法

重复操作100次

测试结果

connector:0.023178300936706364pymysql:0.023064655950292945mysqlclient:0.014133377000689507复制代码

测试结论

mysqlclient 效果比其他两个快近100%, 毕竟是依赖c的库,性能是有保障的,connector跟pymysql的就不分上下很接近。

ORM操作

测试方法

重复操作100次

测试结果

connector:0.10195669997483492pymysql:0.18848947307560593mysqlclient:0.18876364000607282复制代码

测试结论

发现connector比其他两个快将近80%多,其余两个效果也很接近。但是这里会发现使用ORM会整体慢1个数据级。

结论

如果是追求极致性能,建议使用mysqlclient,如果想使用ORM,建议使用mysql connector for python, 后面附带源码。

源码下载

https://github.com/roger777luo/msyql_client_bench.git

转载于:https://juejin.im/post/5c7e89d7f265da2de33f47c9

你可能感兴趣的文章
JavaScript 、Python Java、Go算法系列之【快速排序】篇
查看>>
在mac上实践jni
查看>>
PHP特级课视频教程_第三十六集 Mongodb与php开发结合_李强强
查看>>
Unix删除文件的找回方法
查看>>
8.格式化输出
查看>>
Mac Terminal 设置ls 默认带有颜色显示
查看>>
java中的匿名内部类总结
查看>>
nginx 代理多个tomcat缓存
查看>>
用浏览器访问网址时,请求头(request header)是根据什么生成的?
查看>>
Webix学习笔记-创建一个基本应用程序-06-和服务器交互之Update
查看>>
maven 使用filter动态处理资源文件变量
查看>>
linux 环境下使用信号量实现司机售票员进程同步,线程同步问题
查看>>
记录otter遇到问题
查看>>
dubbo服务暴露过程源码分析
查看>>
使用maven插件maven-android-plugin构建android程序
查看>>
DefaultHttpClient 使用GZIPInputStream解压缩
查看>>
Ansible随机数
查看>>
最简单的将手机号显示为匿名
查看>>
java高新技术<四>--类加载器、动态代理技术的深入讲解与应用
查看>>
NDK开发基础①使用Android Studio编写NDK
查看>>