Mysql存储引擎简介

1、什么是存储引擎

  • 存储引擎说白了就是表中数据的存储方式。
  • 不同的存储引擎创建的表,在数据库中存储数据和结构的方式不同。
  • 有些存储引擎不支持事务,Mysql默认的存储引擎InnoDB支持事务。

2、存储引擎的使用

  • 数据库中的各表均被(在创建表时)指定的存储引擎来处理。 
  • 服务器可用的引擎依赖于以下因素: 
    • MySQL的版本 (5.5x版本有9个存储引擎)
    • 服务器在开发时如何被配置 
    • 启动选项
  • 为了解当前服务器中有哪些存储引擎可用,可使用SHOW ENGINES语句:
 mysql> SHOW ENGINES\G

 

  • 在创建表时,可使用ENGINE选项为CREATE TABLE语句显式指定存储引擎。

CREATE TABLE TABLENAME (NO INT) ENGINE = MyISAM;

  • 如果在创建表时没有显式指定存储引擎,则该表使用当前默认的存储引擎 
  • 默认的存储引擎可在my.ini配置文件中使用default-storage-engine选项指定。
  • 现有表的存储引擎可使用ALTER TABLE语句来改变:ALTER TABLE TABLENAME ENGINE = INNODB;
  • 为确定某表所使用的存储引擎,可以使用SHOW CREATE TABLE或SHOW TABLE STATUS语句:
mysql> SHOW CREATE TABLE emp\G

mysql> SHOW TABLE STATUS LIKE 'emp' \G

 


3.常用的存储引擎

1、MyISAM存储引擎

  • MyISAM存储引擎是MySQL常用的引擎。 
  • 它管理的表具有以下特征:
    • 使用三个文件表示每个表:
      • 格式文件 — 存储表结构的定义(mytable.frm)
      • 数据文件 — 存储表行的内容(mytable.MYD)
      • 索引文件 — 存储表上索引(mytable.MYI)
    • 灵活的AUTO_INCREMENT字段处理
    • 可被转换为压缩、只读表来节省空间 

2、InnoDB存储引擎

  • InnoDB存储引擎是MySQL的缺省(默认)引擎。 
  • 它管理的表具有下列主要特征:
    • 每个InnoDB表在数据库目录中以.frm格式文件表示
    • InnoDB表空间tablespace被用于存储表的内容
    • 提供一组用来记录事务性活动的日志文件
    • 用COMMIT(提交)、SAVEPOINT及ROLLBACK(回滚)支持事务处理
    • 提供全ACID兼容
    • 在MySQL服务器崩溃后提供自动恢复
    • 多版本(MVCC)和行级锁定
    • 支持外键及引用的完整性,包括级联删除和更新 

3、MEMORY存储引擎

  • 使用MEMORY存储引擎的表,其数据存储在内存中,且行的长度固定,这两个特点使得MEMORY存储引擎非常快。
  • MEMORY存储引擎管理的表具有下列特征:
    • 在数据库目录内,每个表均以.frm格式的文件表示。
    • 表数据及索引被存储在内存中。
    • 表级锁机制。
    • 不能包含TEXT或BLOB字段。
  • MEMORY存储引擎以前被称为HEAP引擎。 

4、选择合适的存储引擎

  • MyISAM表最适合于大量的数据读而少量数据更新的混合操作。MyISAM表的另一种适用情形是使用压缩的只读表。
  • 如果查询中包含较多的数据更新操作,应使用InnoDB。其行级锁机制和多版本的支持为数据读取和更新的混合操作提供了良好的并发机制。

可使用MEMORY存储引擎来存储非永久需要的数据,或者是能够从基于磁盘的表中重新生成的数据。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值