mysql 存储引擎

本文深入解析MySQL中的三种主要存储引擎:InnoDB、MyISAM和Archive的特点与应用场景。重点介绍了InnoDB作为推荐使用的存储引擎的原因及其提供的事务支持、行级锁和外键约束等功能,并对比了MyISAM在读写性能上的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

存储引擎:

一种用来存储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。特征,阻塞其他客户端的读,写操作。

锁定粒度(范围):
    行级:提升并发性,锁本身开销大
    表级:不利于并发性,锁本身开销小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值