美文网首页
A.001.2.Mysql架构

A.001.2.Mysql架构

作者: 执一不失 | 来源:发表于2021-01-09 19:52 被阅读0次

    1.数据库结构简介

    1.1关系型数据库

    Mysql是一种关系型和数据库。那什么是数据库与关系型数据库呢?

    数据库:数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,是一种有组织的存放数据的容器。你把它想象成一个文件柜,里面存放着若干文件。

    关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

    关系型数据库的特点:

    1. 数据以表格的形式出现
    2. 每列为记录名称所对应的数据域
    3. 许多的行和列组成一张表单
    4. 若干的表单组成database

    那上面就就讲到了一些属于(行,列,表等)。

    1.2相关术语

    • 数据库: 数据库是一些关联表的集合。
    • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
    • 列: 一列(数据元素) 包含了相同类型的数据, 列又称为“字段”,相当于java中的“属性”
    • 行:一行(=元组,或记录)是一组相关的数据,表中每⼀⾏数据,相当于java中的“对象”
    • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
    • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
    • 外键:外键用于关联两个表。
    • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
    • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
    • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

    MySQL 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成。

    • 表头(header): 每一列的名称;
    • 列(col): 具有相同数据类型的数据的集合;
    • 行(row): 每一行用来描述某条记录的具体信息;
    • 值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
    • 键(key): 键的值在当前列中具有唯一性。

    2.Mysql使用概括

    image

    3.Mysql体系架构

    image
    image
    • MySQL向外提供的交互接口(Connectors)

    Connectors组件,是MySQL向外提供的交互组件,如java,.net,php等语言可以通过该组件来操作SQL语句,实现与SQL的交互。

    • 管理服务组件和工具组件(Management Service & Utilities)

    提供对MySQL的集成管理,如备份(Backup),恢复(Recovery),安全管理(Security)等

    • 连接池组件(Connection Pool)

    负责监听对客户端向MySQL Server端的各种请求,接收请求,转发请求到目标模块。每个成功连接MySQL Server的客户请求都会被创建或分配一个线程,该线程负责客户端与MySQL Server端的通信,接收客户端发送的命令,传递服务端的结果信息等。

    • SQL接口组件(SQL Interface)

    接收用户SQL命令,如DML,DDL和存储过程等,并将最终结果返回给用户。

    • 查询分析器组件(Parser)

    首先分析SQL命令语法的合法性,并尝试将SQL命令分解成数据结构,若分解失败,则提示SQL语句不合理。

    • 优化器组件(Optimizer)

    对SQL命令按照标准流程进行优化分析。

    • 缓存主件(Caches & Buffers)

    缓存和缓冲组件

    • MySQL存储引擎(Storage Engines)

    对于表的创建,数据的存储,检索,更新等都是由MySQL存储引擎完成的,这也是MySQL存储引擎在MySQL中扮演的重要角色。

    image

    MySQL之所以有多种存储引擎,是因为MySQL的开源性决定的。

    不同种类的存储引擎,在存储表时的存储引擎表机制也有所不同,从MySQL存储引擎种类上来说,可以分为官方存储引擎和第三方存储引擎。

    如MyISAM存储引擎,InnoDB存储引擎,NDB存储引擎,Archive存储引擎,Federated存储引擎,Memory存储引擎,Merge存储引擎,Parter存储引擎,Community存储引擎,Custom存储引擎和其他存储引擎。

    其中,比较常用的存储引擎包括InnoDB存储引擎,MyISAM存储引擎和Momery存储引擎。

    • 物理文件(File System)

    实际存储MySQL 数据库文件和一些日志文件等的系统,如Linux,Unix,Windows等。

    Mysql逻辑结构比掌握知识:(分三层)

    1. 第一层负责连接处理,授权认证,安全等
    • 每个客户端连接都会在服务器进程中拥有一个线程,服务器维护了一个线程池,因此不需要为每一个新建的连接创建或者销毁线程。
    • 当客户端连接到Mysql服务器时,服务器对其进行认证,通过用户名和密码认证,也可以通过SSL证书进行认证。
    • 一旦客户端连接成功,服务器会继续验证客户端是否具有执行某个特定查询的权限。

    2)第二层负责编译并优化SQL

    • 这一层包括查询解析,分析,优化,缓存以及所有的的内置函数。
    • 对于SELECT语句,在解析查询前,服务器会先检查查询缓存,如果能在其中找到对应的查询结果,则无需再进行查询解析、优化等过程,直接返回查询结果。
    • 所有跨存储引擎的功能都在这一层实现:存储过程,触发器,视图。

    3)第三层是存储引擎

    • 存储引擎负责在MySQL中存储数据、提取数据。
    • 存储引擎通过API与上层进行通信,这些API屏蔽了不同存储引擎之间的差异,使得这些差异对上层查询过程透明。
    • 存储引擎不会去解析SQL,不同存储引擎之间也不会相互通信,而只是简单地响应上层服务器的请求。

    4.Mysql物理文件

    4.1物理文件有哪些

    redolog,undolog,binlog,errorlog,querylog,showlog,data,index

    4.2文件类型

    • .cnf :
      MySQL Server主配置文件,可以在MySQL Server主安装目录中找到。

    • .sock :
      mysqld creates a socket for programs to connect to and notes in this file. It is named as mysql.sock.

    • Pid file :
      MySQL Server将它的进程ID写到这个文件中,用户可以指定pid文件,否则MySQL 默认写到hostname.pid文件中

    • .frm :
      一个.frm文件代表一个表,它存储了表定义,存放在data目录中。

    • .MYD :
      .MYD文件时MyISAM 表的数据存储文件,它也存放在data目录下。

    • .MYI :
      MyISAM表的索引文件

    • .ibd :
      如果在my.cnf中指定了innodb_file_per_table(一个InnoDB表一个ibd文件), 那么每个Innodb表将分别存储一个.ibd文件中, Innodb表的数据和索引都存储在.ibd文件中,不分别存储。

    • ibdata1 :
      如果my.cnf中没有定义innodb_file_per_table选项,那么所有Innodb的表和数据都将存储在ibdata1文件中。ibdata1表示Innodb共享的tablespace。
      ib_logfile0 & ib_logfile1 :
      InnoDB log files. The information is logged in circular fashion. InnoDB applies changes recorded in logfiles to tablespace. This is also important for performance and recovery.(InnoDB日志文件。信息以循环方式记录。InnoDB将记录在日志文件中的更改应用于表空间。这对于性能和恢复也很重要。)

    • .db :
      BDB (BerkeleyDB) 存储引擎的data file。同时存储数据和索引。

    • db.opt :
      In CREATE DATABASE command, create_specification options specify database characteristics. Database characteristics are stored in the db.opt file in the database directory.(在CREATE DATABASE命令中,create_specification选项指定数据库特征,数据库特征存储在数据库选项数据库目录中的文件。

    • error log :
      This log contains information about mysqld start and stop events, any critical errors that occur while the server is running etc. In my.cnf you can specify log-error[=file_name] option and error log will be created under data directory file_name.err. If no name is specified MySQL will create hostname.err file.(此日志包含有关mysqld启动和停止事件、服务器运行时发生的任何严重错误等的信息我的.cnf您可以指定log error[=file\u name]选项,错误日志将在数据目录文件下创建_名称.err. 如果没有指定名称,MySQL将创建主机名.err文件。)

    • slow query log :
      This log contains queries that runs slower than specified long_query_time variable. You can specify log-slow-queries[=file_name] option. If no file name specified, MySQL will log slow queries in host_name-slow.log file under data directory.(此日志包含运行速度慢于指定的long_query_time时间变量的查询。您可以指定log-slow-queries[=file\u name]选项。如果没有指定文件名,MySQL将以主机名记录慢速查询-慢.log数据目录下的文件。)

    • general query log :
      This file logs all the SQL sent from client about MySQL server and mysqld start up/down details. You may enable it by log[=file_name]. If file_name is not specified MySQL will create hostname.log under data directory.(该文件记录所有从客户端发送的关于MySQL服务器和mysqld启动/关闭的详细信息。您可以通过日志[=文件名]来启用它。如果没有指定文件名,MySQL将创建主机名.log在数据目录下。)

    • 临时文件
      当用户运行ALTER TABLE 时,通常会创建临时文件。执行Alter Table语句时,MySQL先创建表的备份,然后在上面修改,删除原始数据,完成Alter后将临时文件重命名为原来的名字。

    • binary log files :
      These files contains events that describe database changes such as table creation operations or changes to table data. You may specify their name by –log-bin[=base_name] option. Default name is value of pid-file option (defaults to hostname of server).(这些文件包含描述数据库更改的事件,如表创建操作或表数据更改。您可以通过–log bin[=base\u name]选项指定它们的名称。默认名称是pid file选项的值(默认为服务器的主机名)。

    • relay log files :
      These files contains events read from the binary log of the master and written by the slave I/O thread. Events in the relay log are executed on the slave as part of the SQL thread.(这些文件包含从主线程的二进制日志读取并由从线程I/O写入的事件。中继日志中的事件作为SQL线程的一部分在从属服务器上执行。)

    • master.info :
      This file contains the status and current configuration information for the slave’s connectivity to the master.(此文件包含从属设备与主设备连接的状态和当前配置信息。)

    • relay-log.info :
      This file holds the status information about the execution point within the slave’s relay log.(此文件保存从机的中继日志中有关执行点的状态信息。)

    • .index :
      To keep track of which binary log files have been used, mysqld creates a binary log index file. It contains the names of all used binary log files. You may change it by –log-bin-index[=file_name] option otherwise basename will be same as that of binary log file with default extension “.index”.
      In case of replication, relay logs uses .index files for same purpose. The default relay log index file name is host_name-relay-bin.index in the data directory. You may change the name by –relay-log-index option.(为了跟踪使用了哪些二进制日志文件,mysqld创建了一个二进制日志索引文件。它包含所有使用的二进制日志文件的名称。您可以通过–log bin index[=file\u name]选项进行更改,否则basename将与具有默认扩展名“.index”的二进制日志文件的basename相同。
      在复制的情况下,中继日志使用.index文件实现相同的目的。默认的中继日志索引文件名是host\u name-relay-仓位索引在数据目录中。您可以通过–中继日志索引选项更改名称。)

    • .TMD:
      This is an intermediate data file for a table that needs to recreate its data file. You can find this files normally during REPAIR TABLE operations.(这是需要重新创建其数据文件的表的中间数据文件。您可以在修复表操作期间正常找到此文件。)

    • TRG & TRN Files:
      Trigger definitions are stored in plain text files in the directory that contains the schema objects.
      The file tablename.TRN is the TRIGGERNAME file stored under database directory.
      The file tablename.TRG is the TRIGGERS file. It represents all the table triggers attached to a given table, so this file can contain triggers for multiple events (BEFORE/AFTER, INSERT/UPDATE/DELETE).(触发器定义存储在包含模式对象的目录中的纯文本文件中。文件表名.TRN是存储在数据库目录下的TRIGGERNAME文件。文件表名.TRG是触发器文件。它表示附加到给定表的所有表触发器,因此该文件可以包含多个事件的触发器(BEFORE/AFTER、INSERT/UPDATE/DELETE)。

    • .ARZ, .ARM & .ARN files:
      These are files related to Archieve Storage Engine.
      .ARZ is data files holds data for table, .ARM holds metadata while during table optimization process a .ARN file may appear.(这些是与Archieve存储引擎相关的文件。.ARZ是数据文件保存表的数据,.ARM保存元数据,而在表优化过程中可能会出现.ARN文件。)

    关注公众号,查阅数据库知识不迷路。
    公众号:数据库 BOSS

    相关文章

      网友评论

          本文标题:A.001.2.Mysql架构

          本文链接:https://www.haomeiwen.com/subject/ythcaktx.html