目录
1、前期准备
1.1、创建表并插入测试数据
1.2、测试环境
2、MyISAM与InnoDB性能对比
2.1 验证思路
2.2、验证测试
2.2.1、主键查询性能测试
2.2.2、非主键查询
2.3 验证结论
3、MyISAM与InnoDB区别
3.1、维护区别
3.2、索引区别
3.3、MVCC的维护
3.4、其他差别
4、MyISAM与InnoDB使用的选择
5、总结
MySQL进阶教程汇总(专栏文章汇总,欢迎订阅,持续更新…)MySQL进阶教程专栏专栏的文章都在这里啦。文章会持续更新,大家有想要了解的功能点或者话题,可以在评论区告诉我!喜欢本专栏的文章,可以支持一下,你的肯定是对我最大的支持!也可以。https://blog.csdn.net/daremeself/article/details/128124975MySQL的存储引擎,MyISAM与InnoDB是我们最经常使用的存储引擎,我们一起来从性能、存储结构、索引、如何抉择的角度,一起来对比下两者之前的差别。
文中讲解的方法,都是MySQL本身支持的,只是涉及的代码,采用C#作为例子。
1、前期准备 1.1、创建表并插入测试数据分别创建不同引擎的订单表:trade_myisam、trade_innodb,订单表包含id、订单编号两个字段。
创建InonoDB引擎的订单表SQL代码如下:
CREATE TABLE `trade_innodb` (
`id` INT(11) NOT NULL,
`trade_no` INT(11) NOT NULL,
PRIMARY KEY `id` (`id`),
INDEX `trade_no` (`trade_no`) USING BTREE
)
COMMENT='订单'
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
;
创建MyISAM引擎的订单表SQL代码如下:
CREATE TABLE `trade_myisam` (
`id` INT(11) NOT NULL,
`trade_no` INT(11) NOT NULL,
PRIMARY KEY `id` (`id`),
INDEX `trade_no` (`trade_no`) USING BTREE
)
COMMENT='订单'
COLLATE='utf8_unicode_ci'
ENGINE=MyISAM
;
分别插入10万条测试数据,结果如下:
这里所有的字段,采用的都是Int类型,是为了方便我们,下面使用区间查询,来验证查询速度。
1.2、测试环境文中测试环境电脑配置如下:
操作系统:Window 10 专业版
CPU:Inter(R) Core(TM) i7-8650U CPU @1.90GHZ 2.11 GHZ
内存:16G
MySQL版本:5.7.26
2、MyISAM与InnoDB性能对比 2.1 验证思路MyISAM在MySQL 5.5 及之前的版本,MyISAM是默认引擎;InnoDB是专门为处理巨大数据量时的最大性能设计的,现在为MySQL默认引擎。
在MySQL官方文档说明,MyISAM比InnoDB查询快,但很多人都不知道其中的原理。
在探索其中原理之前,我们先验证下查询速度,另外也验证下MyISAM是否真的比InnoDB查询性能好。
在Mysql中,索引分为主键索引和非主键索引,这两种索引都能起到,加快查询速度的作用,但在查询速度上是有区别的,主键索引要快于非主键索引,所以我们从以下两个方面去验证:
1、通过主键查询,MyISAM是否比InnoDB查询快?
2、通过非主键字段查询,MyISAM是否比InnoDB查询快?
具体验证方法为:
1、分别通过id、trade_no查询10000~20000区间的记录,并获得查询所花费时间。
2、循环查询100次,并取得查询耗费时间平均值。
3、通过对比查询耗费时间平均值,来判断性能。
2.2、验证测试 2.2.1、主键查询性能测试查询主键id在10000~20000区间,查询100次,并统计耗费时间的平均值,C#实现代码如下:
using (var conn = new MySqlConnection(connsql))
{
conn.Open();
//查询次数
var queryTime = 1000;
//InnoDB数据引擎:主键查询
//开始时间
var startTime = DateTime.Now;
for (var i = 0; i < queryTime; i++)
{
//插入
var sql = "select * from trade_innodb where id>=10000 and id=10000 and id=10000 and trade_no=10000 and trade_no
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?