”种一棵树最好是十年前,其次是现在“,结合个人十多年IT基础架构领域摸爬滚打的经验来看,数据库领域潜力无限,大有可为。运维领域知识面需要广,更需要专,数据库是我选择做专做深的方向。

本篇文章以结构化的方式呈现mysql进阶知识的体系框架,并且通过通俗易懂的语言,方便大家更好的阅读和理解。

进阶知识概览

mysql进阶知识概览

存储引擎

  • 存储引擎:

数据存储,索引建立,更新,查询数据等问题都是通过存储引擎实现

  • 体系结构:

通过连接层,服务层,引擎层,和数据存储层构成了mysql整体结构

连接层:

负责连接认证,线程重用,连接数控制等

服务层:

负责SQL接口,SQL解析,查询优化,缓存处理等

引擎层:

5.5版本以后默认使用InnoDB,支持可插拔存储引擎,索引实现。不用的引擎使用的场景不同,索引实现的方式也不同

数据存储层:

负责数据库中数据,log日志文件存储在磁盘中,支持多种文件系统格式

mysql体系结构

相关操作:

--查询建表语句
showcreatetableaccount;
--建表时指定存储引擎
CREATETABLE表名(
...
)ENGINE=INNODB;
--查看当前数据库支持的存储引擎
showengines;

常用存储引擎特点


  • 存储引擎特点-InnoDB:

    • DML操作支持ACID模型,支持事务
    • 行级锁,并发性能高
    • 支持外键约束,保证数据完整,正确
    • 5.5版本默认的InnoDB具有高性能,高可靠性特点
    • 文件:xxx.ibd xxx代表表名,存储表结构,数据和索引等信息

知识点:

参数:innodb_file_per_table,决定多张表共享一个表空间还是每张表对应一个表空间

查看 Mysql 变量:

showvariableslike'innodb_file_per_table';

从idb文件提取表结构数据: (在cmd运行) ibd2sdi xxx.ibd

InnoDB 逻辑存储结构:

逻辑存储结构

  • 存储引擎特点-MyISAM:

    • 早期版本默认使用的引擎
    • 表锁,不支持行锁
    • 不支持外键和事务
    • 访问速度快
    • 文件:.sdi 存储表结构信息,.MYD 存储数据信息,.MYI 存储索引信息

  • 存储引擎特点-Memory:

    • 信息存储在内存中,只适用于临时存储场景
    • 内存存储,hash索引
    • 文件:.sdi 存储表结构信息

  • 各类存储引擎特性详细对比
存储引擎特点对比
  • 存储引擎选择:

需要根据应用系统的特点来选择合适的存储引擎,甚至可以进行组合使用

适用场景:

InnoDB:适合高并发,对数据安全性要求高,有事务要求,同时增,删,改,查比较频繁的场景

MyISAM:适合应用有大量的查询和插入操作,只有少量的更新和删除操作,同时对事务,并发要求不高的场景

memory:数据存放在内存,访问速度快,数据安全性没有保证,适用于存放缓存数据

作者:谷会于(转载请获本人授权,并注明作者与出处)

本文由 mdnice 多平台发布