返回顶部
首页 > 资讯 > 数据库 >MySQL架构怎么理解
  • 448
分享到

MySQL架构怎么理解

mysql 2023-03-14 14:03:29 448人浏览 独家记忆
摘要

本篇内容主要讲解“Mysql架构怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql架构怎么理解”吧!Mysql物理架构配置文件auto.cnf&n

本篇内容主要讲解“Mysql架构怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习mysql架构怎么理解”吧!

Mysql物理架构

MySQL架构怎么理解

配置文件

  • auto.cnf : 包含 server_uuid

  • my.cnf : MySQL配置文件 形形色色的其他文件

 –basedir=dir_name  //MySQL安装目录路径

–datadir=dir_name   //数据目录的路径,数据目录存储数据,状态,日志等

–pid-file=file_name  //MySQL服务器写ProcessID的文件路径

–Socket=file_name, -S file_name  //在Unix系统上,使用的Unix套接字文件的名字,
                                 //用于通过管道与本地服务器建立连接
–log-error=file_name       //记录错误和启动信息的日志文件名

MySQL逻辑架构

MySQL架构怎么理解

  • Client:提供连接MySQL服务器功能的常用工具

  • Server:MySQL实例,真正提供数据存储和数据处理功能的MySQL服务器进程

  • mysqld:MySQL服务器守护程序,在后台运行。它管理着客户端请求。mysqld是一个多线程的进程,允许多个会话连接,端口监听连接,管理MySQL实例

  • MySQL memory allocation:MySQL的要求的内存空间是动态的,比如 innodb_buffer_pool_size (from 5.7.5), key_buffer_size。每个会话都有独一无二的执行计划,我们只能共享同一会话域内的数据集。

  • SESSION:为每个客户端连接分配一个会话,动态分配和回收。用于查询处理,每个会话同时具备一个缓冲区。每个会话是作为一个线程执行的

  • Parser:检测SQL语句语法,为每条SQL语句生成SQL_ID,用户认证也发生在这个阶段

  • Optimizer:创造一个有效率的执行计划(根据具体的存储引擎)。它将会重写查询语句。比如:InnoDB有共享缓冲区,所以,优化器会首先从预先缓存的数据中提取。使用 table statistics optimizer将会为SQL查询生成一个执行计划。用户权限检查也发生在这个阶段。

  • Metadata cache:缓存对象元信息和统计信息

  • Query cache:共享在内存中的完全一样的查询语句。如果完全相同的查询在缓存命中,MySQL服务器会直接从缓存中去检索结果。缓存是会话间共享的,所以为一个客户生成的结果集也能为另一个客户所用。查询缓存基于SQL_ID。将SELECT语句写入视图就是查询缓存最好的例子。

  • key cache:缓存表索引MySQL keys是索引。如果索引数据量小,它将缓存索引结构和叶子节点(存储索引数据)。如果索引很大,它只会缓存索引结构,通常供MyISAM存储引擎使用

SQL执行

MySQL架构怎么理解

MySQL连接

MySQL架构怎么理解

InnoDB存储引擎架构

MySQL架构怎么理解

TABLESPACE

InnoDB存储空间被切分成tablespace,tablespace是一个与多个数据文件相关联的逻辑结构。


MySQL架构怎么理解

Pages

  • InnoDB最小的数据存储单元被也称作块。默认的页框是16KB,一个页包含多行。

  • 可用页大小: 4kb,8kb,16kb,32kb,64kb

  • 配置变量名 : innodb_page_size,在初始化mysqld时配置

Extents

  • 一组页组成一个区,InnoDB为了更好的I/O吞吐率,每次读写都是按照区为单位。

  • 一组16KB的页,一个区可以1MB,双写缓冲区(Doublewrite buffer )每次分配/读/写都是以区为单位。

Segments

  • 4个区构成一个Segments

InnoDB存储引擎

  • ACID事务支持

  • 模式

  • 事务REDO&UNDO支持

  • 多数据文件

  • 逻辑对象结构(InnoDB数据和日志缓冲区)

  • InnoDB数据是百分百的具备逻辑结构,数据物理存储。

  • InnoDB读取物理数据,创建逻辑结构[Blocks and Rows]

  • 逻辑存储称为TABLESPACE

InnoDB 内存中组件

  • InnoDB buffer pool

  • InnoDB存储引擎的核心缓冲区。在这个缓冲区之中,加载表和索引数据

  • InnoDB缓存表数据和索引数据的主要区域

  • 占据80%以上的物理内存,在专用数据库服务器中

  • 所有会话的共享缓冲区

  • InnoDB使用LRU页面置换算法

Change buffer

In a memory change buffer is a part of InnoDB buffer pool and on disk,
it is part of system tablespace, so even after database restart index
changes remain buffered.Change buffer is a special data structure that
caches changes to secondary index pages when affected pages not in the
buffer pool.
memory change buffer是InnoDB buffer pool的一部分,在磁盘上,也是系统tablespace的一部分。送印即使数据库重启…毛意思啊!无力…保留原文

Redo log buffer

redo logs缓冲区,保存写到redo log(重放日志)的数据。周期性的将缓冲区内的数据写入redo日志中。将内存中的数据写入磁盘的行为由innodb_log_at_trx_commit 和 innodb_log_at_timeout 调节。

较大的redo日志缓冲区允许大型事务在事务提交前不进行写磁盘操作。

变量:innodb_log_buffer_size (default 16M)

在磁盘上的组件

系统表空间(tablespace)

除了存储表数据之外,InnoDB也支持查找表元信息,存储和检索mvcC信息以兑现服从ACID和事务隔离性等原则。它包含几种类型的InnoDB对象信息。

其包含的文件:

  • Table Data Pages

  • Table Index Pages

  • Data Dictionary

  • MVCC Control Data

  • Undo Space

  • Rollback Segments

  • Double Write Buffer (Pages Written in the Background to avoid OS
    caching) Insert Buffer (Changes to Secondary Indexes)

变量:

innodb_data_file_path = /ibdata/ibdata1:10M:autoextend

激活

innodb_file_per_table选项,你可以将每个新创建的表存储到不同的tablespace中。这种做法的优点是减少磁盘上数据文件中的碎片

通用tablespace

Shared tablespace to store multiple table data. Introduce in MySQL 5.7.6. A user has to create this using CREATE TABLESPACE syntax. TABLESPACE option can be used with CREATE TABLE to create a table and ALTER TABLE to move a table in general table.

共享的tablespace存储多个表信息,在MySQL 5.7.6时引入。用户只能使用CREATE TABLESPACE创建一个这样的表空间。

TABLESPACE选项可以在使用CREATE TABLE命令创建一个表然后 ALTER TABLE 将表移入通用空间时发挥作用。

– Memory advantage over innodb_file_per_table storage method.
– Support both Antelope and Barracuda file fORMats.
– Supports all row formats and associated features.
– Possible to create outside data directory.

InnoDB数据字典

在系统tablespace中的存储区域,由系统内部表(供mysql服务器使用的表)和对象元数据(表,索引,列信息)组成

双写缓冲区(Double write buffer)

系统tablespace的存储区域,InnoDB在写入物理文件之前先将页从InnoDB buffer pool写入此空间。mysqld进程突然崩溃会导致部分写问题。InnoDB可以从这个区域拿到一个备份。 Variable: inndb_doublewrite (default enable)

REDO logs

用于灾难恢复。mysqld启动的时候,InnoDB会尝试执行自动恢复,将不完整的事务更改矫正。还未完成更新数据文件的事务会在mysqld启动时会根据此日志记录中的信息被重放。它使用 LSN(Log Sequence Number)值来重放信息,因为mySQL会为每个事务赋予一个ID。因为大量数据更改不可能及时写道磁盘,所以得先记录到redo日志,然后再写入磁盘。

再redo日志,所有更改都会带有 row_id, 旧的列值,新的列值, session_id 和时间。

Innodb_log_file_in_group= [# of redo file groups]Innodb_log_file_size= [每个日志文件大小]

UNDO日志和UNDO表空间

UNDO tablespace包含一个或多个undo日志文件。UNDO通过为事务(MVCC)保存被更改还未提交的值保持读一致性。未提交值从这个存储区域读取。UNDO日志也被叫做回滚数据段。

默认地,UNDO日志是系统表空间的一部分。但MySQL允许UNDO日志置于一个单独的表空间中 [Introduce in MySQL 5.6]。这需要在初始化mysqld之前进行更改才起作用。

当我们配置单独UNDO表空间时,系统表空间的UNDO日志就被抑制了,但是一旦配置成单独的,我们只能删除UNDO日志的一部分,比如过期日志,而不能删除它。

– Variables : innodb_undo_tablespace : # of undo tablespaces, default
0 innodb_undo_directory:
Location for undo tablespace,default is,data_dir with 10MB size.
innodb_undo_logs :
# of undo logs, default ,and max value is ‘128’

临时表空间

为临时表和相关对象提供存储功能,存储包括临时表未提交的数据。在MySQL 5.7.2引入,用于对临时表修改的回滚。

ibtmp1每次系统启动被重新创建,避免REDO日志对临时表的I/O操作。

innodb_temp_data_file_path = ibtmp1:12M:autoextend (default)

And All SET !!

存储引擎

Storage engine:
MySQL component that manages physical data (file management) and locations. Storage engine responsible for SQL statement execution and fetching data from data files. Use as a plugin and can load/unload from running MySQL Server.Few of them as following,
InnoDB :
Fully transactional ACID.
Offers REDO and UNDO for transactions.
Data storage in tablespace:
Multiple data files
Logical object structure using InnoDB data and log buffer
Row-level locking.
NDB (For MySQL Cluster):
Fully Transactional and ACID Storage engine.
Distribution execution of data and using multiple mysqld.
NDB use logical data with own buffer for each NDB engine.
Offers REDO and UNDO for transactions.
Row-level locking.
MyISAM:
Non-transactional storage engine
Speed for read
Data storage in files and use key, metadata and query cache
– FRM for table structure
– MYI for table index
– MYD for table data
Table-level locking.
MEMORY:
Non-transactional storage engine
All data stored in memory other than table metadata and structure.
Table-level locking.
ARCHive:
Non-transactional storage engine,
Store large amounts of compressed and unindexed data.
Allow INSERT, REPLACE, and SELECT, but not DELETE or UPDATE sql operations.
Table-level locking.
CSV:
Stores data in flat files using comma-separated values format.
Table structure need be created within MySQL server (.frm)

到此,相信大家对“MySQL架构怎么理解”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL架构怎么理解

本文链接: https://lsjlt.com/news/199764.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL架构怎么理解
    本篇内容主要讲解“MySQL架构怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL架构怎么理解”吧!MySQL物理架构配置文件auto.cnf&n...
    99+
    2023-03-14
    mysql
  • 怎么理解Kubernetes架构
    本篇内容主要讲解“怎么理解Kubernetes架构”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Kubernetes架构”吧!Kubernetes作为一...
    99+
    2024-04-02
  • LINQ查询架构怎么理解
    本篇内容主要讲解“LINQ查询架构怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“LINQ查询架构怎么理解”吧!LINQ(发音:Link)是Language Integrated Quer...
    99+
    2023-06-17
  • 怎么理解Oracle架构、原理、进程
    这篇文章主要讲解了“怎么理解Oracle架构、原理、进程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解Oracle架构、原理、进程”吧!对于一个数据...
    99+
    2024-04-02
  • 怎么理解vue2.0响应式架构
    本篇内容主要讲解“怎么理解vue2.0响应式架构”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解vue2.0响应式架构”吧!讲data 下面所有属性变为o...
    99+
    2024-04-02
  • mysql架构的原理是什么
    本篇内容主要讲解“mysql架构的原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql架构的原理是什么”吧!Mysql 架构原理1、Mysql体系...
    99+
    2024-04-02
  • MySQL高可用架构之MHA架构全解
    目录一、介绍二、组成三、工作过程四、架构五、实例展示MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating m...
    99+
    2024-04-02
  • mysql代理架构指的是什么
    这篇文章主要介绍mysql代理架构指的是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、概念通过独立的中间件来统一管理所有数据源和数据分片整合,后端数据库集群对前端应用程序透明,需要独立部署和运维代理组件。代理...
    99+
    2023-06-15
  • 解析Tomcat架构原理到架构设计
    目录一、学习目的1.1、掌握 Tomcat 架构设计与原理提高内功1.2、宏观理解一个请求如何与 Spring 联系起来1.3、提升自己的系统设计能力二、整体架构设计2.1、连接器2...
    99+
    2024-04-02
  • 基于MySQL架构图解
    目录mysql物理架构配置文件MySQL逻辑架构SQL执行InnoDB存储引擎架构TABLESPACEInnoDB存储引擎InnoDB 内存中组件在磁盘上的组件存储引擎总结本文记录了MySQL 5.7的物理和逻辑架构,还...
    99+
    2023-03-13
    MySQL架构图解 MySQL架构 图解MySQL架构
  • MySQL 架构
    执行流程简介 主要分为server层和存储引擎层。 server层主要分为:连接器、解析器、优化器、执行器、查询缓存 连接器:主要作用就是用户认证、给用户创建连接并使用连接池维护连接。 查询缓存:建立连接之后,就可以进行SQL操作了,...
    99+
    2016-06-23
    MySQL 架构
  • mysql架构
    mysql架构连接处理,授权认证,安全第二层,大多数MySQL的核心服务功能都在这一层,查询解析,分析,优化,缓存以及所有内置函数包括加密函数,所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。...
    99+
    2024-04-02
  • php中的分布式架构怎么理解
    这篇“php中的分布式架构怎么理解”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php中的分布式架构怎么理解”文章吧。在PH...
    99+
    2023-06-29
  • 怎么掌握MySQL复制架构
    本文小编为大家详细介绍“怎么掌握MySQL复制架构”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么掌握MySQL复制架构”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一主多从...
    99+
    2024-04-02
  • MySQL架构是什么
    这篇文章主要介绍MySQL架构是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQL服务器架构、各种存储引擎间的主要区别及区别的重要性回顾MySQL历史背景、基准测试,通过简...
    99+
    2024-04-02
  • 如何理解java架构
    首先说一下java开发架构的形式: 一般我们在学习或者实际开发中,所了解的开发架构都是基于两种形式:C/S架构(客户端/服务器)和B/S架构(浏览器/服务器)。而在JavaEE的开发中,几乎全部都是基于B/S架构开发的。而在B/S架构中,系...
    99+
    2014-05-30
    理解 java 架构
  • 阿里架构师:带你快速理解微服务架构,理解微服务架构的核心
    什么是微服务首先微服务并没有一个官方的定义,想要直接描述微服务比较困难,我们可以通过对比传统WEB应用,来理解什么是微服务。传统的WEB应用核心分为业务逻辑、适配器以及API或通过UI访问的WEB界面。业务逻辑定义业务流程、业务规则以及领域...
    99+
    2023-06-04
  • 怎么理解.NET三层架构应用中的十层框架
    这篇文章给大家介绍怎么理解.NET三层架构应用中的十层框架,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。凡是接触.net开发的,***要理解的就是三层架构的重要思想。关于三层架构的概述 我就不多说了,相信大家都早已明白...
    99+
    2023-06-17
  • MYSQL架构篇
    目标: 掌握Mysql的各组件及各组件的功能 理解Mysql简版执行流程和详细执行流程 掌握MyIsam和InnoDB的区别并说明使用场景 掌握Mysql日志文件及主要日志文件的作用 理解Mysql的数据文件及作用 使用命令查看mysq...
    99+
    2014-06-28
    MYSQL架构篇 数据库入门 数据库基础教程 数据库 mysql
  • MYSQL架构中该怎么主从GTID
    这期内容当中小编将会给大家带来有关MYSQL架构中该怎么主从GTID,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。GTID又叫全局事务ID(Global Transact...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作