大数跨境
0
0

MySQL数据库

MySQL数据库 云容灾备份安全治理
2021-01-08
3

MySQL架构图

模块详解

1.Connector:用来支持各种语言和 SQL 的交互,比如 PHPPythonJavaJDBC;2.ManagementServeices & Utilities:系统管理和控制工具,包括备份恢复、MySQL 复制、集群等等;3.ConnectionPool:连接池,管理需要缓冲的资源,包括用户密码权限线程等;4.SQLInterface:用来接收用户的 SQL 命令,返回用户需要的查询结果;5.Parser:用来解析 SQL 语句;6.Optimizer:查询优化器;7.CacheandBuffer:查询缓存,除了行记录的缓存之外,还有表缓存,Key 缓存,权限缓存等等;8.PluggableStorageEngines:插件式存储引擎,它提供 API 给服务层使用,跟具体的文件打交道。

开发的系统架构图

存储引擎层

存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念 。

数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。

因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(Table Type,即存储和操作此表的类型)。

MySQL5.5版本(mysql 版本 < 5.5版本) 以前,默认使用的存储引擎是MyISAM 。

MySQL5.5版本(mysql 版本 >= 5.5版本) 以后,默认使用的存储引擎是InnoDB 。

使用多的引擎进行一个对比点

MyISAM 与 InnoDB 引擎的区别

Mysql5.5 版本之前默认的存储引擎就是 MyISAM 存储引擎,MySQL 中比较多的系统表使用 MyISAM 存储引擎,系统临时表也会用到 MyISAM 存储引擎,但是在 Mysql5.5 之后默认的存储引擎就是 InnoDB 存储引擎了。

两个主要原因:

第一个原因是MyISAM 是表级锁定,限制了数据库读/写的性能;

另外一个原因是MyISAM 不支持事务,基于以上两点,InnoDB 引擎可以锁到行。

两种存储引擎中进行选择?

是否有事务操作?有,InnoDB。

是否存储并发修改?有,InnoDB。

是否追求快速查询,且数据修改较少?是,MyISAM。

是否使用全文索引?如果不引用第三方框架,可以选择MyISAM,但是可以选用第三方框架和InnDB效率会更高。

文件存储层

系统文件存储层主要是负责将数据库的数据和日志存储在系统的文件中,同时完成与存储引擎的之间的打交道,是文件的物理存储层。

比如:数据文件、日志文件、pid文件、配置文件等。

数据文件

「db.opt文件」:记录这个数据库的默认使用的字符集和校验规则。

「frm文件」:存储于边相关的元数据信息,包含表结构的定义信息等,每一张表都会有一个frm文件与之对应。

「MYD文件」:MyISAM存储引擎专用的文件,存储MyISAM表的数据信息,每一张MyISAM表都有有一个.MYD文件。

「MYI文件」:也是MyISAM存储引擎专用的文件,存放MyISAM表的索引相关信息,每一张MyISAM表都有对应的.MYI文件。

「ibd文件和ibdata文件」:存放InnoDB的数据文件(包括索引)。InnoDB存储引擎有两种表空间方式:独立表空间和共享表空间。

独享表空间使用ibd文件来存放数据,并且每一张InnoDB表存在与之对应的.ibd文件。

共享表空间使用ibdata文件,所有表共同使用一个或者多个.ibdata文件。

「ibdata1文件」:系统表空间数据文件,存储表元数据、Undo日志等。

「ib_logfile0、ib_logfile0文件」:Redo log日志文件。

日志文件

错误日志:默认是开启状态,可以通过命令查看:

show variables like '%log_error%'; 

二进制日志binary log:记录了对MySQL数据库执行的更改操作,并且记录了语句的发生时间、执行耗时;但是不记录查询select、show等不修改数据的SQL。主要用于数据库恢复和数据库主从复制。也是大家常说的binlog日志。

show variables like '%log_log%';//查看是否开启binlog日志记录。 

show variables like '%binllog%';//查看参数 

show binary logs;//查看日志文件 

慢查询日志:记录查询数据库超时的所有SQL,默认是10秒。

show variables like '%slow_query%';//查看是否开启慢查询日志记录。 

show variables '%long_query_time%';//查看时长 

通用查询日志:记录一般查询语句;

show variables like '%general%'; 

配置文件

用于存放MySQL所有的配置信息的文件,比如:my.cnf、my.ini等。

「pid文件」

pid文件是mysqld应用程序在Linux或者Unix操作系统下的一个进程文件,和许多其他Linux或者Unix服务端程序一样,该文件放着自己的进程id。

「socket文件」

socket文件也是Linux和Unix操作系统下才有的,用户在Linux和Unix操作系统下客户端连接可以不通过TCP/IP网络而直接使用Unix socket来连接MySQL数据库。

SQL查询流程图

MySQL内存结构

Mysql 内存分配规则是:用多少给多少,最高到配置的值,不是立即分配

Innodb存储结构

1、从物理意义上来讲,InnoDB表由共享表空间、日志文件组(redo log文件组)、表结构定义文件(.frm文件)组成。若将innodb_file_per_table设置为on,则系统将为每一个表单独的生成一个table_name.ibd的文件,在此文件中,存储与该表相关的数据、索引、表的内部数据字典信息。

2、表结构文件则以.frm结尾,.frm文件和存储引擎无关。

innodb体系结构

后台线程


【声明】内容源于网络
0
0
云容灾备份安全治理
分享云灾备规划、实施、运营、备份与恢复、数据安全、数据治理;窥视国内外备份软件与监控软件知识前沿水平线; 越努力,越幸运!
内容 2171
粉丝 0
云容灾备份安全治理 分享云灾备规划、实施、运营、备份与恢复、数据安全、数据治理;窥视国内外备份软件与监控软件知识前沿水平线; 越努力,越幸运!
总阅读4.1k
粉丝0
内容2.2k