当前位置: 首页 > news >正文

张家港建网站的公司住房和城乡建设部网站

张家港建网站的公司,住房和城乡建设部网站,万网虚拟主机上传网站,如何在图片上做网站水印图MySQL 8.0 是一个里程碑式的版本,它引入了大量现代化特性,极大地提升了性能、安全性和可管理性。本文将从内核角度,深入探讨 MySQL 8.0 的体系架构、SQL执行原理、并发控制、事务、安全及存储机制。 一、 MySQL 8.0 体系架构 MySQL 8.0 的架构…

MySQL 8.0 是一个里程碑式的版本,它引入了大量现代化特性,极大地提升了性能、安全性和可管理性。本文将从内核角度,深入探讨 MySQL 8.0+ 的体系架构、SQL执行原理、并发控制、事务、安全及存储机制。

一、 MySQL 8.0+ 体系架构

MySQL 8.0 的架构继承了其经典的分层插件式设计,但在核心组件上进行了重大革新。其核心架构如下图所示,清晰地展示了SQL语句从连接到返回结果的完整生命周期:

请添加图片描述

1. 连接层

  • 职责:管理客户端连接、身份认证、安全交互。
  • 核心组件
    • 连接池:提供了两种线程模型。
      • 每连接一线程 (Classic): 传统模型,为每个连接创建一个专用线程。
      • 线程池插件 (Enterprise): 企业版功能,使用少量工作线程处理大量连接,更适合高并发场景,避免上下文切换开销。
    • 认证协议默认使用更安全的 caching_sha2_password 认证插件,取代了旧版的 mysql_native_password。这提供了更好的密码安全性,但需要客户端驱动更新以支持。

2. 服务层 (MySQL Server)

  • 这是SQL处理的智能大脑,所有跨存储引擎的核心功能都在这里。
  • 核心组件
    • SQL Interface:接收并分发SQL命令。
    • 解析器:进行词法、语法分析,构建解析树。
    • 优化器 (Cost-Based Optimizer, CBO)
      • 基于成本的优化:通过内置的成本模型和表的统计信息,计算不同执行计划(全表扫描、索引扫描、索引合并等)的代价(I/O、CPU、内存),并选择它认为最优的计划。
      • 新增特性:支持公用表表达式 (CTE)窗口函数的优化,并持续增强了索引下推、多范围读等优化策略。
    • 执行器:根据优化器的计划,调用存储引擎API执行查询。它负责与存储引擎交互,完成数据的存储和提取。
    • 查询缓存 (QC) - 已移除MySQL 8.0 中彻底移除了查询缓存功能。 due to its limited scalability and the effectiveness of other caching solutions (e.g., application-level cache, ProxySQL). 这消除了一个主要的瓶颈点,简化了数据库核心。

3. 存储引擎层

  • 职责:负责数据的物理存储和索引管理
  • 工作方式:服务层通过统一的API与存储引擎交互,API屏蔽了不同引擎的实现差异。
  • 默认引擎InnoDB 是 MySQL 8.0 唯一可靠的通用存储引擎,也是默认选择。除非有极其特殊的遗留需求,否则所有新表都应使用 InnoDB。
二、 SQL 执行原理 (SELECT * FROM t WHERE id = 1;)

在 MySQL 8.0 中,一条查询的执行流程如下:

  1. 连接与认证:客户端使用 caching_sha2_password 插件与服务器建立连接并认证。
  2. 解析与优化
    • 解析器验证语法,生成解析树。
    • 优化器分析查询。它检查 id 字段上的索引(例如主键),估算通过主键索引查找的成本极低,因此生成一个“使用主键索引进行查找”的执行计划。
  3. 执行
    • 执行器首先检查用户对表 tSELECT 权限(权限信息现在从数据字典表中读取,而非旧的 .frm 文件)。
    • 然后,调用 InnoDB 引擎的接口,传入 id=1 的条件。
    • InnoDB 通过主键的 B+ 树索引定位到对应的数据页。
    • 引擎检查该页是否已在 Buffer Pool (缓冲池) 中。如果不在,则从 .ibd 文件异步加载到内存。
    • 找到数据后,返回给执行器。
  4. 返回结果:执行器将结果返回给客户端。
三、 并发控制:InnoDB 的 MVCC 与锁机制

MySQL 8.0 的 InnoDB 通过 锁 (Locking)多版本并发控制 (MVCC) 协同工作来实现高并发。

  1. 锁机制 (Locking)

    • 行级锁:InnoDB 支持行锁,锁的粒度小,并发度高。
    • Next-Key Locks:InnoDB 默认使用 Next-Key Lock(行锁 + 间隙锁)来解决幻读 (Phantom Read) 问题,这是在“可重复读 (RR)”隔离级别下实现的。
  2. MVCC (多版本并发控制)

    • 核心思想:为每个更改创建数据快照,读操作读取历史快照,无需加锁,从而实现非阻塞读。
    • 实现细节
      • 每行记录包含两个隐藏字段:DB_TRX_ID(最后修改该行的事务ID)和 DB_ROLL_PTR(指向UNDO日志记录的指针,用于重建历史数据)。
      • UNDO 日志:用于记录数据修改前的状态,用于构建数据的历史版本和事务回滚。
      • Read View:事务在执行快照读时生成一个Read View,它是一个快照,决定了当前事务能看到哪个版本的数据(哪些已提交的事务的修改是可见的)。
    • 在 RC 和 RR 下的区别
      • 读已提交 (RC)每次执行 SELECT 语句时都会生成一个新的 Read View。这会导致每次读都能看到其他已提交事务的最新修改,导致“不可重复读”。
      • 可重复读 (RR):只在第一次执行 SELECT 语句时生成一个 Read View,后续所有读操作都复用这个视图。从而保证了在同一个事务内,看到的是一致的快照,实现了可重复读。
四、 事务与隔离级别

1. ACID 保障

  • 原子性 (A):主要通过 UNDO Log 实现。事务回滚时,利用 UNDO Log 将数据恢复到修改前的状态。
  • 一致性 ©:由应用、数据库约束(外键、唯一键)、UNDO Log、REDO Log 共同保证。
  • 隔离性 (I):通过 MVCC 机制实现。
  • 持久性 (D):主要通过 REDO Log 实现。事务提交时,先写 REDO Log(顺序写,性能高),再异步刷新数据页到磁盘。即使宕机,也能通过 REDO Log 恢复已提交的事务。

2. 隔离级别
MySQL 8.0 完全支持 SQL 标准的四种隔离级别,默认级别是“可重复读 (RR)”

隔离级别脏读不可重复读幻读实现方式
读未提交 (RU)直接读最新数据,无MVCC
读已提交 (RC)每次SELECT生成新ReadView
可重复读 (RR)第一次SELECT生成ReadView并复用
+ Next-Key Locks
串行化 (S)强制加锁读,完全串行

InnoDB 在“可重复读”级别下通过 Next-Key Lock 机制很大程度上避免了幻读

五、 权限控制与安全管理(8.0 增强)

MySQL 8.0 在安全方面进行了大幅增强。

  1. 新的数据字典 (Data Dictionary)

    • 变革:8.0 将表、列、索引、权限等元数据信息全部存储在了 InnoDB 引擎的系统表中(位于 mysql.ibd 表空间),取代了之前的 .frm.par.trg 等文件。
    • 好处
      • 原子性DDL:支持DDL操作的原子性(要么成功,要么回滚),崩溃更安全。
      • 事务性和一致性:元数据管理支持事务,提高了可靠性和一致性。
      • 统一管理:所有元数据统一存储在InnoDB中,便于管理和备份。
  2. 角色 (Role) 支持

    • 可以像其他数据库一样,创建角色,并为角色分配权限,然后将角色授予用户。
    • 极大地简化了权限管理,特别是对于拥有大量用户和复杂权限的系统。
    -- 1. 创建角色并授权
    CREATE ROLE 'read_only';
    GRANT SELECT ON mydb.* TO 'read_only';-- 2. 创建用户
    CREATE USER 'app_user'@'%' IDENTIFIED BY 'password';-- 3. 将角色授予用户
    GRANT 'read_only' TO 'app_user'@'%';-- 4. 设置角色默认激活(8.0.2+)
    SET DEFAULT ROLE ALL TO 'app_user'@'%';
    
  3. 增强的密码管理

    • 密码过期策略:可以设置用户密码的有效期。
    • 密码复用限制:防止用户重复使用旧密码。
    • 密码强度验证:通过 validate_password 组件强制要求使用强密码。
六、 存储引擎

1. InnoDB (默认与首选)

  • 核心特性:支持事务行级锁外键MVCC崩溃恢复
  • 关键组件
    • Buffer Pool (缓冲池)内存中的缓存,用于缓存表数据和索引。它是InnoDB性能的核心,通过“预读”和“LRU”算法优化,尽量减少磁盘I/O。
    • Doublewrite Buffer (双写缓冲区):一种安全机制,在将数据页写入数据文件之前,先顺序地写入一个连续的空间。防止页写入发生部分写(partial page write)问题(例如16K的页只写了8K时宕机),保障数据页的完整性。
    • Adaptive Hash Index (自适应哈希索引):InnoDB会自动监控表上的索引查找,如果发现某个索引值被频繁使用,它会在内存中基于B+Tree索引再构建一个哈希索引以加速查询,整个过程是自动的。

2. MyISAM (已过时)

  • 特点不支持事务不支持行锁(只有表锁)、不支持外键崩溃后无法安全恢复
  • 适用场景:在 MySQL 8.0 中,几乎没有任何理由再使用 MyISAM。它仅存的优势(如全文索引、空间函数)已被 InnoDB 全面超越。系统表(在数据字典中)和临时表可能会在内部使用,但用户表应坚决使用 InnoDB。
七、 数据文件(8.0 的重大变化)

MySQL 8.0 的数据存储方式发生了显著变化。

文件/目录用途8.0 的变化
./auto.cnf存储服务器的 UUID无变化
ibdata1系统表空间。默认包含:数据字典Undo LogChange BufferDoublewrite Buffer变化巨大:数据字典(表结构等)从 .frm 文件移至此。
ib_logfile0, ib_logfile1重做日志 (Redo Log)。用于崩溃恢复,记录物理修改。无变化,但建议设置足够大。
mysql.ibdmysql 系统数据库的表空间,存储了数据字典表新增:这是8.0新引入的核心文件,取代了 mysql 目录下的 .frm.TRG 等文件。
tablespace_name.ibd每表独立表空间文件(当 innodb_file_per_table=ON 时)。存储单个表的数据和索引推荐默认开启。便于管理、备份和空间回收(ALTER TABLE ... DROP COLUMNOPTIMIZE TABLE 可以释放空间)。
binlog.00000*二进制日志 (Binary Log)。记录所有更改数据的SQL语句或行数据变更,用于主从复制数据恢复无变化,但仍是核心组件。
undo_00*Undo 表空间文件(通常2个)。专门存储 Undo Log。默认变化:Undo Log 从 ibdata1 中分离出来,使用独立的表空间,支持自动截断和回收。

总结:MySQL 8.0 通过引入数据字典、原子DDL、角色管理、分离Undo表空间等特性,将其内核现代化,极大地提升了在元数据管理、安全性、可靠性和可维护性方面的表现。对于任何新项目,都应基于 MySQL 8.0+ 和 InnoDB 存储引擎进行设计和开发。

http://www.dtcms.com/a/554277.html

相关文章:

  • 【AIGC】HPS v2:评估人类对文本到图像合成偏好的可靠基准
  • Download from your IP address is not allowed(qt下载教程)
  • 出海东南亚无忧:腾讯云如何凭借本地合作与全球节点,保障游戏和电商业务合规流畅?
  • Jmeter的自动化测试实施方案详解
  • 共享自行车与电动共享自行车使用中建成环境影响的对比研究:基于合肥数据的时空机器学习分析
  • 如何使用Jmeter做接口测试?
  • 网站用哪个软件做企业官网建设费用
  • 重庆网站设计找重庆最佳科技蛋糕网站源码
  • 东莞建设网官方网站小程序怎么赚钱的
  • 石家庄网站开发公司电话佛山新网站建设渠道
  • Golang多goroutine求解1000万和1亿以内的素数
  • 【开题答辩过程】以《基于协同过滤算法的彩妆商城系统的设计与实现》为例,不会开题答辩的可以进来看看
  • 一级a做爰片i免费网站横沥镇仿做网站
  • 怎么做能上谷歌网站优化营商环境心得体会
  • 学习C#调用OpenXml操作word文档的基本用法(4:Style类分析-2)
  • 河北建设厅注册中心网站首页网站头页
  • Vue3教程简介
  • Excel天气查询插件开发指南(★)
  • GO语言-->Gin 框架 HTTP 路由
  • Android EDLA项目导入mainline包后蓝牙签名报错分析解决
  • 保定网站建设找谁建设部四库一平台查询
  • 网站查询信息wordpress清空数据
  • 光伏开发小程序:快速获客,成交项目更迅速
  • 单位建设网站需要的材料wordpress无法开启多站点
  • 免得做网站东莞服装网站建设
  • 从零搭建 VisionMaster 自动上传系统
  • 微信小程序因视频播放不合规问题解决,微信小程序包含视频功能审核不通过解决方案
  • 江苏网站建设要多少钱html5做图网站
  • 企业网站建站意义建筑师必看的16部纪录片
  • BLDC直流无刷电机开环与PID闭环无扰切换