mysql 存储引擎

来源:互联网 发布:淘宝上秒杀活动在哪里 编辑:程序博客网 时间:2024/06/03 17:25

存储引擎:

一种用来存储mysql中对象的一种特定的结构(文件结构),处于mysql的最底层,直接存储数据,这样导致上层数据的操作,依赖于存储引擎的选择,比如事务。


查看当前存储引擎:show engines \G

Innodb

推荐使用存储引擎,更加注重数据的完整性和安全性,mysql版本>=5.5
提供事务、行级锁、外键约束的存储引擎

<

存储格式
数据,索引集中存储,存储于同一个表空间文件中。
数据(记录行) 索引(一种检索机制,也需要一定的空间)
创建表后会在对应数据库名目录下生成一个name.frm表结构文件,默认表的数据都在一个空间文件中 nmdata
通过配置,达到每张innodb表,一个表空间文件(name.ibd)的目的:

set global innodb_file_per_table = 1;

数据按照主键顺序存储,插入时做排序工作,效率低。
支持事务、外键约束、维护数据完整性。
并发性处理:擅长处理并发的。
行级锁定: row-level locking,实现了行级锁定,在一定情况下,可以选择行级锁来提升并发性。也支持表级锁定,innodb根据操作选择。
多版本并发控制, MVCC,效果达到无阻塞读操作。相当于在更新操作时候会生成一个副本,不影响对记录的读操作。


Myisam

version<= 5.5 MySQL默认的存储引擎。
ISAM:Indexed Sequential Access Method(索引顺序存取方法)的缩写,是一种文件系统。
擅长与处理 高速读与写。

<

存储方式
数据索引分别存储于不同的文件中。(name.frm name.MYD name.MYI)
数据的存储顺序为插入顺序,插入速度快,空间占用量小。
功能:
全文索引支持。(>=5.6 innodb 支持)
数据的压缩存储。

//使用mysql/bin目录下提供的可执行文件,在数据目录下执行//压缩(减少磁盘空间,io开销)myisampack tal_name//压缩后需要重新建立索引myisamchk -rq tbl_name//压缩后为只读表,如果需要更新,则需要解压后更新,再压缩(重新索引)myisamchk -unpack tbl_name

并发性:
仅仅支持表级锁定。
支持 并发插入。写操作中的插入操作,不会阻塞读操作(其他操作)


Archive

存档型
仅提供 插入和查询操作。非常高效 无阻塞的插入和查询。


Memory

内存型
数据存储于内存中,存储引擎。缓存型存储引擎


当客户端操作表(记录)时,为了保证操作的隔离性(多个客户端操作不能互相影响),通过加锁来处理。
操作方面:

读锁:读操作时增加的锁,也叫共享锁,S-lock。特征是 阻塞其他客户端的写操作,不阻塞读操作。
写锁:写操作时增加的锁,也叫独占锁或排他锁,X-lock。特征,阻塞其他客户端的读,写操作。

锁定粒度(范围):    行级:提升并发性,锁本身开销大    表级:不利于并发性,锁本身开销小。
0 0
原创粉丝点击