MySQL(进阶—,存储引擎)

本文深入探讨了MySQL的存储引擎原理,重点介绍了InnoDB、MyISAM和Memory存储引擎的特点、适用场景和SQL优化。强调了根据应用需求选择合适存储引擎的重要性。

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

MySQL(进阶—,存储引擎)

(进阶7部分:存储引擎,索引【核心】,SQL优化,视图/存储过程/触发器,锁,innoDB引擎,MySQL管理)

  1. Mysql体系结构

    在这里插入图片描述

    1. 连接层:处理客户端连接,处理认证,请求操作
    2. 服务层:sql接口,sql的解析,sql的优化(所有跨存储引擎的操作都是在服务层处理)
    3. 引擎层(可插拔式,index的实现层)
    4. 存储层(存储相关数据,数据索引,文件和日志)
  2. 存储引擎简介

  3. 存储引擎特点

    兼顾高可靠性和高性能的通用存储引擎,在mysql5.5之后,innoDB时mysql的默认存储引擎。

    -- 查看当前数据库支持的数据引擎
    SHOW ENGINES;
    -- 创建表的时候指定存储引擎
    create table xxx(......) engine = iniodb;
    
    1. innoDB的特点:

      • DML(数据增删改)操作遵循ACID(原子性,隔离性,一致性,持久)模型,支持事务
      • 行级锁,提高并发性访问性能
      • 支持外键FOREIGN KEY约束,保证数据的完整性和正确性
    2. 文件

      • xxx.ibd(innoDB引擎的每一张表都对应这一个表空间文件)存储该表的表结构(frm,sdi),数据和索引。

      • 参数:innodb_file_per_table(mysql8.0默认打开,标识每一张表都对应一个表空间文件)

      -- 查看表空间文件的开关
      show variables like 'innodb_file_table';
      
      • mysql数据存放目录:C:\ProgramData\MySQL\MySQL Server 8.0\Data存放当前数据库的表结构,当前数据库中存放的数据,索引,此文件为二进制,不可以直接查看查看方式:ibd2sdi account.ibd
    3. innoDB的逻辑存储结构

      • TableSpece:表空间,如ibd文件,包含若干个segment
      • Segment:段,包含若干个Extent
      • Extent:区,包含若干个page,区大小固定(1M可以包含16个page)
      • Page:页,包含若干个Row(磁盘操作的最小单元)页大小固定(16K)
      • Row:行,包含trxId,roll point,col1,col2,…

    MyISAM是mysql早期的默认存储引擎。

    1. MyISAM的特点
      • 不支持事务,不支持外键
      • 支持表锁,不支持行锁
      • 访问速度快
    2. 文件
      • .MYD 数据
      • .MYI 索引
      • .sdi 表结构(文本文件json格式)

    Memory存储引擎,数据存储到内存中,由于受到硬件影响,或者断电的影响,只能将这些表作为临时表或缓存使用

    1. Memory的特点:

      • 内存存放
      • hash索引(默认)
    2. 文件

      .sdi存储表结构(因为数据都存放在内存)

    3. 三种存储引擎的区别:

    特点InnoDBMyISAMMemory
    存储限制64TB
    事务安全支持--
    锁机制行锁表锁表锁
    B+tree索引支持支持支持
    Hash索引--支持
    全文检索支持(5.6版本之后)支持-
    空间使用N/A
    内存使用中等
    批量插入速度
    支持外键支持--
  4. 存储引擎应用

    根据应用系统的特点选择合适的存储引擎。对复杂的系统,还可以根据实际情况选择多种存储引擎进行组合。

    • innoDB:支持事务,外键,行锁。对事务的完整性和并发场景一致性有要求。
    • MyISAM:以数据读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性,并发性不是很高,那么此存储引擎是合适的。如日志操作,电商的足迹和评论(非核心数据)。(MongoDB)
    • Memory:保存在内存中,访问速度快,长用作临时表及缓存。缺陷是对表的大小由限制,太大的表无法缓存在内存中,而且无法保障数据的安全性。(Redis)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

D. D

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

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

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

打赏作者

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

抵扣说明:

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

余额充值