mysql数据库引擎mylsam_mysql数据库引擎 myisam/innodb

Mysql 数据库最常用的两种引擎是innordb和myisam。

Innordb的功能要比myiasm强大很多,但是innordb的性能要比myisam差很多。

如果只是做简单的查询,更新,删除,那么用myiasm是最好的选择。

测试方法:连续提交10个query, 表记录总数:38万 , 时间单位 s

引擎类型                    Myisam              innordb              性能相差

count                       0.0008357           3.0163                 3609

查询主键                 0.005708             0.1574                 27.57

查询非主键               24.01                  80.37                  3.348

更新主键                 0.008124             0.8183                100.7

更新非主键              0.004141            0.02625               6.338

插入                       0.004188              0.3694                88.21

结论:

1. 加了索引以后,对于Myisam查询可以加快:4 206.09733倍,对innordb 查询加快510.72921倍。同时对myisam更新速度减慢为原来的1/2,innordb的更新速度减慢为原来的1/30。大家要看情

况决定是否要加索引,比如不查询的log表,不要做任何的索引。

2. 如果你的数据量是百万级别的,并且没有任何的事务处理,那么用myisam是性能最好的选择。

3. Innordb的表的大小更加的大,用myisam可以省很多的硬盘空间。

在测试的这个38w的表中,表占用空间的情况如下:

引擎类型                    MyIsam               InnorDB

数据                       53,924 KB           58,976 KB

索引                       13,640 KB           21,072 KB

占用总空间             67,564 KB           80,048 KB

另外一个176W万记录的表, 表占用空间的情况如下:

引擎类型                MyIsam               InnorDB

数据                   56,166 KB           90,736 KB

索引                   67,103 KB           88,848 KB

占用总空间        123,269 KB         179,584 KB

总结:一般来说,MYisam引擎比较常用。

适合:

1. 做很多count 的计算。

2. 插入不平凡,查询非常频繁。

3.  没有事务

innordb 适合:

1. 可靠性要求比较高,或者要求事务。

2. 表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。

不过,很多时候,性能瓶颈不是因为服务器配置不好,而是因为SQL不是很好。SQL的性能优化是关键。

除了常见的优化方法,还可以考虑 使用内存表。

测试一张myisam 和 内存表,会发现速度差不多。

其实,在并发比较强的时候,性能会相差大概五倍。我有张经常要查询的IP 地址 和 地区的 对应表,放入内存后。

以前查询 5000个 IP 地址大概 要 15S, 现在,只要 2S多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值