MySQL(进阶—,存储引擎)

MySQL(进阶—,存储引擎)

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

  1. Mysql体系结构

    MySQL(进阶—,存储引擎)_第1张图片

    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. 三种存储引擎的区别:

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

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

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

你可能感兴趣的:(mysql,数据库)