测试分三步:
(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 则支持事务
完整项目代码见下图:
学习不是看看就会了,最好的学习方式就是敲代码,看会的不是你的,敲会了才属于你自己
即便脑袋不想,可是你的身体会很诚实的呀!
领取专属 10元无门槛券
私享最新 技术干货