python与mysql的性能故事,这样的测试是最简单直接的方式?

测试分三步:

(1) 普通写入测试

(2) 批量写入测试

(3) 事务加批量写入测试

普通写入:

批量:单次批量多条数据,返回结果更直观

事务加批量,每次批量20条数据,每20个批量作为一次事务提交

执行结果:

采用三种方法测试mysql.connector对mysql的写入性能,其他的例如mysqldb和pymysql客户端库的写入

性能应该和mysql.connector一致

采用批量写入时,由于减少了网络传输的次数因而速度加快

开启事务,多次写入后再提交事务,其写入速度也会显著提升,这是由于单次的insert,数据库内部也会

开启事务以保证一次写入的完整性

如果开启事务,在事务内执行多次写入操作,那么就避免了每一次写入都开启事务,因而也会节省时间

从测试效果来看,事务加批量写入的速度大概是批量写入的3倍,是普通写入的50倍

数量 普通写入 many写入 事务加many写入

1万 26.7s 1.7s 0.5s

10万 266s 19s 5s

100万 2553s 165s 49s

将autocommit设置为true,执行insert时会直接写入数据库,否则在execute 插入命令时,默认开启事物,

必须在最后commit,这样操作实际上减慢插入速度

此外还需要注意的是mysql的数据库存储引擎如果是MyISAM,那么是不支持事务的,InnoDB 则支持事务

完整项目代码见下图:

学习不是看看就会了,最好的学习方式就是敲代码,看会的不是你的,敲会了才属于你自己

即便脑袋不想,可是你的身体会很诚实的呀!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180116A08ANA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券