MySQL存储引擎

一、存储引擎概述

  • 数据库的各表在创建时均被指定的存储引擎来处理,存储引擎最终作用于表 ,而不是数据库
  • Oracle中不叫存储引擎,有对应的机制,但没有特殊的名字,一般认为“表的存储方式”
  • 在创建表时,可使用ENGINE选项为CREATE TABLE语句显式指定存储引擎
CREATE TABLE TABLENAME (NO INT) ENGINE = MyISAM;
  • 如果在创建表时没有显式指定存储引擎,则该表使用当前默认的存储引擎,MySQL默认存储引擎为InnoDB,默认的存储引擎可在my.ini配置文件中使用default-storage-engine选项指定
  • 现有表的存储引擎可使用ALTER TABLE语句来改变
ALTER TABLE TABLENAME ENGINE = INNODB;

二、MySQL常用存储引擎

1. MyISAM(节省空间)

  • MyISAM存储引擎是MySQL最常用的引擎

1.1 特点

  • 使用三个文件表示每个表
    存储表结构:xxx.frm 格式文件
    存储表行的内容:xxx.MYD 数据文件
    存储表上的索引:xxx.MYI 索引文件
  • 灵活的auto_increment字段处理
  • 可被转换为压缩表节省空间,可被转换为只读表提高检索效率
  • 不支持事务

2. InnoDB(默认引擎,安全)

  • InnoDB存储引擎是MySQL的缺省引擎

2.1 特点

  • 存储表结构:xxx.frm文件
    存储表行内容与索引:xxx.ibd文件
  • 数据存储在tablespace表空间(逻辑概念)中,无法被压缩、转换成只读
  • 支持事务
    提供一组用来记录事务性活动的日志文件
    用commit、savepoint及rollback支持事务处理
    提供全ACID兼容
  • 在MySQL服务器崩溃后提供自动恢复
  • 多版本(MVCC)和行级锁定
  • 支持外键及引用的完整性,包括级联删除和更新

3. MEMORY(查询快)

  • MEMORY存储引擎以前被称为HEAP引擎
  • 使用MEMORY存储引擎的表,其数据存储在内存中,且行的长度固定,这两个特点使得MEMORY存储引擎非常快

3.1 特点

  • 查询速度最快(因为数据存储在内存中,且行的长度固定)
  • 表的结构存储在xxx.frm文件中
  • 表数据及索引被存储在内存中
  • 支持表级锁机制
  • 不能包含TEXT(CLOB)或BLOB字段
  • 不支持事务
  • 数据容易丢失(断电),因为所有数据和索引都是存储在内存当中

三、存储引擎的选择

  • MyISAM 适合于大量的数据读而少量数据更新的混合操作;另一种适用情形是使用压缩的只读表
  • InnoDB 适合较多的数据更新操作,行级锁机制和多版本的支持为数据读取和更新的混合操作提供了良好的并发机制
  • 可使用MEMORY存储引擎来存储非永久需要的数据,或者是能够从基于磁盘的表中重新生成的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jayco江柯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值