MySQL 存储引擎

MySQL提供多种存储引擎,如InnoDB和MyISAM。InnoDB支持事务处理和行级锁,适合高并发场景,而MyISAM则速度快但不支持事务。选择存储引擎需根据事务需求、并发性和数据安全性等因素考虑。
摘要由CSDN通过智能技术生成

1. 存储引擎概述

1.1 定义

        就是存储数据,建立索引,更新查询数据等等技术的实现方式。存储引擎是基于表的,而不是基于库的。

1.2 MySQL 中的存储引擎

        Oracle,SqlServer 等数据库只有一种存储引擎。MySQL提供了插件式的存储引擎架构。所以MySQL存在多种存储引擎,可以根据需要使用相应的存储引擎,或者编写自定义的存储引擎。

1.3 查看MySQL 支持的存储引擎

show engines;
图1. show engines执行结果

2. MySQL 存储引擎介绍

2.1 常用MySQL 存储引擎特性

是对图1的总结

表1. 常用存储引擎特性
特点InnoDBMyISAMMemoryMERGENDB
存储限制64TB没有
事务安全支持
锁机制行锁 (适合高并发)表锁表锁表锁行锁
B树索引支持支持支持支持支持
哈希索引支持
全文索引支持(5.6 版本之后)支持
集群索引支持
数据索引支持支持支持
索引缓存支持支持支持支持支持
数据可压缩支持
空间使用N/A
内存使用中等
批量插入速度
支持外键支持

2.2 InnoDB

  1. 是MySQL 的默认存储引擎。InnoDB存储引擎提供了具有提交,回滚,崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB 写的处理效率差一些,并且会占用更多的磁盘空间以保留数据和索引。
  2. InnoDB 存储引擎最大特点(区别其他存储引擎)
  • 事务控制
start transaction;

insert into xxx(xx, ...) values (xxx, ...);

-- 查询不到新插入的数据
select * from xxx;

-- 提交事务
commit;

-- 查询出新插入的数据
select * from xxx;
  • 外键
  • 存储方式

         ①. 使用共享表空间存储,这种方式创建的表的表结构存储在.frm文件中,数据和索引保存在innodb_data_home_dir 和 innodb_data_file_path 定义的表空间中,可以是多个文件。

        ②. 使用多表空间存储,这种方式创建的表的表结构仍然存储在.frm文件中,但是每个表的数据和索引单独保存在.ibd中。

2.3 MyISAM

  1. MyISAM 不支持事务、也不支持外键,其优势是访问的速度快,对事务的完整性没有要求或者以SELECT、INSERT为主的应用基本上都可以使用这个引擎来创建表。
  2. 最大特点 
  • 不支持事务
  • 文件存储方式

        每个MyISAM 在磁盘上存储成了3个文件,其文件名都和表名相同,但拓展名分别为:

        .frm:存储表定义

        .MYD:MYData,存储数据

        .MYI:MYIndex,存储索引

2.4 存储引擎的选择

  • InnoDB使用场景
    • 对事务完整性有高要求
    • 在并发条件下要求数据的一致性
    • 数据操作除了插入和查询之外,还包含很多的更新、删除操作
  • MyISAM
    • 以读操作和写操作为主,较少的更新和删除
    • 对事务完整性要求不高
    • 对并发性要求不高

3. InnoDB 和 MyISAM 的比较

    • InnoDB 支持行级锁、表级锁,默认是行级锁
    • MyISAM 只有表级锁
  • 事务
    • InnoDB 支持事务
    • MyISAM 不支持事务
  • 外键
    • InnoDB 支持外键
    • MyISAM 不支持外键
  • 是否支持MVCC
    • InnoDB 支持MVCC,应对高并发事务,MVCC 比单纯的加锁更高效,MVCC 仅在读已提交和可重复读两个隔离级别下工作。MVCC 可以使用乐观锁和悲观锁来实现
    • MyISAM 不支持外键
  • 索引
    • InnoDB主键索引是聚集索引,其他索引是非聚集索引(辅助索引)
    • MyISAM 仅有非聚集索引
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值