存储引擎

本文深入解析MySQL数据库的各种存储引擎特性,包括InnoDB、MyISAM、NDB、Memory、Archive、Federated和Maria,涵盖了行锁、事务支持、全文搜索、内存存储等关键功能。

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

1、MySQL数据库由后台线程以及一个共享内存区组成,在系统上的表现就是一个进程,是一个单进程多线程架构的数据库实例

2、区分数据库和数据库实例的概念

  • 数据库

是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合

  • 数据库实例

是程序,是位于用户和操作系统之间的一层数据管理软件

3、存储引擎是基于表的,而不是数据库

MySQL存储引擎

1、InnoDB存储引擎

  • 特点:行锁设计、支持外键、支持非锁定读
  • 使用next-key-locking的策略避免幻读现象
  • 提供插入缓冲、二次写、自适应哈希索引、预读
  • 采用聚集的方式存储表中数据

2、MyISAM存储引擎

  • 不支持事务、表锁设计,支持全文搜索
  • 缓冲池只缓存索引文件,不缓存数据文件
  • MyISAM存储引擎表由MYD(存放数据文件)和MYI(存放索引文件)组成

3、NDB存储引擎

  • 数据全部放在内存中,因此主键查找速度极快
  • 连接操作(JOIN)是在MySQL数据层完成而不是在存储引擎层,意味着复杂的连接操作需要巨大的网络开销,因此查询速度很慢

4、Memory存储引擎

  • 表中的数据存放在内存,数据库重启或崩溃表中的数据都会消失
  • 适合存储临时数据的临时表,以及数据仓库的纬度表
  • 默认哈希索引
  • 只支持表锁,并发性能差,不支持TEXT和BLOB列类型
  • 存储变长字段时按照定长字段方式,浪费内存(eBay工程师给出了patch解决方案)

5、Archive存储引擎

  • 只支持INSERT和SELECT操作,5.1版本之后支持索引
  • 适合存储归档数据,如ri’zhi

6、Federated存储引擎

  • 不存放数据,只是指向一台远程MySQL数据库服务器上的表

7、Maria存储引擎

  • 支持缓存数据和索引文件
  • 行锁设计
  • 提供MVCC功能
  • 支持事务和非事务安全的选项
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值