mysql存储引擎
Posted mengzhilva
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql存储引擎相关的知识,希望对你有一定的参考价值。
mysql存储引擎
那么什么是存储引擎呢?
存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。
mysql命令查看所有引擎
show engines;
这么多种引擎如何使用,其实工作中最常用到的就两种,myisam和innodb,其他的各有使用场景,但不经常使用。
1,Myisam引擎。
Myisam的特点是读取速度快,在电脑中一张表用三个文件来存储,
.frm表的定义
.MYD表的数据
.MYI表的索引
以文件的形式在电脑上存储,共享io读取速度快,但更新速度慢,适合少更新,经常读取的数据类型。
2、innodb
innodb则能更好的支持读写,特点是支持外键、行锁、非锁读取(读取的时候不会锁)、高性能的内存缓存、支持事务。使用mmvc来进行多版本并发控制,有更好的并发支持。
在电脑上innodb的存储形式,
.frm表的定义
.idb表的索引
ibdata1此文件存的是所有innodb的数据,自动递增。
另外还有两个ib_logfile0和ib_logfile1存储数据的日志。
innodb的工作方式:将数据按页(每页16k)读取到内存缓存池(InnoDBbuffer pool),然后通过最近最少使用算法,保留缓存数据,最后通过一定的频率将脏页更新到数据文件。
脏页(InnoDB采用Write Ahead Log策略来防止宕机数据丢失,即事务提交时,先写重做日志,再修改内存数据页,这样就产生了脏页)
以上是关于mysql存储引擎的主要内容,如果未能解决你的问题,请参考以下文章