mysql存储最快的存储引擎_MySql常见存储引擎比较

MySQL存在多存储引擎,清楚常见的存储引擎的区别,使用合适的存储引擎,使得项目跑的更顺畅,有时候对于一个项目,甚至比项目本身都重要。这篇文章,旨在浅谈常见的三种存储引擎的区别,优缺点。

####查看MySQL所支持的存储引擎

```

show engines;

show variables like "have%';

```

这样我们清楚了MySQL所支持的存储引擎都有哪些。下面分析一下几个常见的存储引擎:InnoDB,MYISAM 和 Memory

####InnoDB存储引擎

- 1、InnoDB具有事务,回滚,崩溃修复能力和多版本并发的事务安全

- 2、关于InnoDB的auto_increment列:

1. InnoDB支持自动增长列,此列不能为空,且值必须唯一

1. 此列必须为主键。插入时,不指定值,默认是自增都的值。指定0或者NULL时,也 是自增后的值。指定合法且不存在的值,则此后的自动从该值开始

1. InnoDB中的Foreign Key:

InnoDB支持外键。外键所在表通常称为子表。所依赖表称为父表。且父表中,被子表关联的字段必须为父表的主键。(外键:可以简单的理解为:当对父表的数据进行更新,删除,添加时,子表的数据也会随之变化。例子很多,此处不举例)

1. InnoDB的存储引擎及其优缺点:

InnoDB存储引擎的存储格式有三个文件:

1. .frm 表结构文件,此文件存放表创建时的字段定义等信息。

2. .myd 表的数据文件,存放在innodb_data_home_dir目录下,

3. .myi 表的索引文件,存放在innodb_data_file_path目录下InnoDB存储引擎具有良好的ACID特性。

InnoDB的缺点:读写效率相对MYISAM比较差。占用的磁盘空间比较大。

1. InnoDB的理想使用场合:

高并发,更新操作比较多的表。需要使用事务的表。对自动灾难恢复有要求的表。

####MYISAM存储引擎:

1、MYISAM存储引擎表的存储有三个文件:

- .frm文件,存储表的结构

- .myd文件,存储表的数据

- .myi文件,存储表的索引

2、MYISAM存储引擎的存储格式

- 静态型:

表的所有列都是静态的(定长的)。这种情况下,维护和访问预定义格式存储的数据需要的开销很低。但是,需要的空间会更多,原因是,数据在存储的时候,使 用每个列的最大空间来存储,有浪费的空间。当然,磁盘这个都不是问题。

- 动态型:

指标的列中有动态型的列(不定长的)。优点是:使用空间少。缺点是:更新数据时,需要移动数据,产生内部碎片的同时,也降低了维护和访问的效率。对于这个问题,我们可以:

1. 尽量的使用定长字段

2. 使用optimize table语句,整理表中的碎片。

- 压缩型:

针对应用程序的声明周期中,只读的数据表,我们可以通过:myisampack工具转化为MYISAM压缩表,以减少使用的磁盘空间

- MYISAM存储引擎的优缺点:

优点:占用空间小,处理速度快(相对InnoDB来说)

缺点:不支持事务的完整性和并发性

####四、Memory存储引擎

- Memory存储引擎的文件存储形式

Memory存储引擎也会再磁盘上形成一个 .frm的表结构文件,只是表的数据件并不以文件的形式存放在磁盘上。鉴于其数据存放在内存里,因此,访问速度更快。但需 要考虑的是:内存上数据的持久性。

- Memory存储引擎的索引类型

默认的是哈希索引,也支持BTree索引

- Memory存储引擎的数据存储周期

数据存放在内存上,一旦服务器关机,数据将不再存在

- Memory存储引擎的优缺点:

Memory存储引擎不支持变长表列,MySQL4.1.0之前,不支持auto_increment列。

- Memory存储引擎的使用场合

速度要求快的,临时数据。丢失以后,对项目整体没有或者负面影响不大的时候。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值