高性能Mysql——InnoDB与Myisam

MysqlInnoDB和Myisam两种类型的存储我们在Mysql创建表的时候可以在选项中进行制定,如下图所示:
这里写图片描述
下面来说说两种存储的区别吧:
1、两种数据存储的事务机制不同
InnoDB支持事务,Myisam不支持,但是在查询方面Myisam的性能略胜一筹
2、锁的机制不同
InnoDB为行级锁,能更大程度的支持并发操作;Myisam是表级锁
3、数据操作方面
修改、新增、删除数据使用InnoDB性能更高,大数据量的查询使用Myisam性能更高
查询数据库条数时InnoDB不保存表中数据的条数,每次都重新计算;Myisam会保存每个表的总条数,每次都查询时不需重新计算
在查询的时候InnoDB会比Myisam加载很多东西,比如:InnoDB会缓存数据块、Myisam只缓存索引块;InnoDB的寻址是通过映射,Myisam是通过offset
4、存储方面
InnoDB资源基于表空间数据文件和日志文件,大小只限于操作系统文件大小
Myisam以文件的形式存储在磁盘上:.frm存储表定义;.MYD数据文件;.MYI索引文件
5、字段自增方面
对于auto_increment类型的字段,InnoDB中必须包含只有该字段的索引,但是在Myisam中可以和其他字段一起建立联合索引。
6、Mysiam支持全文索引(全文索引可以在VARCHAR或者TEXT类型的列上创建),InnoDB不支持
7、delete表的时候InnoDB不会重建表,会一行一行的删除

InnoDB表的行级锁不是绝对的,例如:
update table set num=1 where name like “%a%”;
对于不确定的扫描范围,InnoDB同样会扫描全表。
说到这里我考虑到数据库的读写分离,读库可以考虑使用Myisam引擎存储,写库使用InnoDB引擎存储,对于数据库的主从同步我们后续再讨论。
提升InnoDB数据库性能的方法:
针对InnoDB数据库影响性能的主要是innodb_flush_log_at_trx_commit这个选项如果设置为1,那么每次插入数据的时候都会自动提交,导致性能急剧下降,设置为0性能明显提高。
Mysql的性能优化这里不多说了,以后我会专门写一篇关于Mysql优化的文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值