MySQL用自增主键和随机变量做主键插入性能实测,与理论完全相反,求解答!

在Python 3.5、Flask 1.1.1、Flask-SQLAlchemy 2.4.0和MySQL 5.7.17环境下,进行了一项性能测试。测试比较了使用自增主键(带索引和不带索引)与使用预设随机数作为主键的MySQL插入速度。结果显示,三者在插入100万条数据时,平均插入时间差异不大,自增主键带索引和不带索引的平均时间均为2.0秒,而随机数主键的平均时间为0.89秒。测试表明实际性能与预期相反,未出现明显的性能差距。
摘要由CSDN通过智能技术生成

 先报测试环境:

  • python         3.5
  • Flask           1.1.1
  • Flask-SQLAlchemy 2.4.0
  • MySQL       5.7.17
  • Linux          Ubuntu 16.04.6 LTS

测试方法概述

通过flask创建了三个models类

分别是主键为我给定的随机数的model,自增主键的model(创建了btree索引),自增主键的model(未创建了btree索引)

分别命名为pri,tree,simple

然后用Flask-SQLAlchemy做插入操作,用Python的time.process_time()统计插入的时间。我每次插入1000条数据,每满10000条数据就测一次速,一共插入100万条数据。

测试结果

三个表的插入速度都没有随表的增长而产生很大的变化,因此直接给出平均数

pri表(给定的随机数做为主键):0.89

tree表(自增主键,且btree有索引):2.0

simple表(自增主键,且没有索引):2.0

测试结果截图

代码详情

app.py


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值