MySQL 8.0 InnoDB Tablespaces之Undo Tablespaces(UNDO表空间)

文章目录

  • MySQL 8.0 InnoDB Tablespaces之Undo Tablespaces(UNDO表空间)
    • Undo Tablespaces(UNDO表空间)
      • 默认UNDO表空间
      • 添加 Undo 表空间
      • 查看Undo 相关的信息
        • 查看Undo 相关参数变量
        • 查看Undo 状态信息
          • 通过information_schema.innodb_tablespaces 查看undo表空间信息
          • 通过information_schema.FILES查看undo表空间的数据文件信息
          • undo表空间的状态
    • 参考

【免责声明】文章仅供学习交流,观点代表个人,与任何公司无关。
编辑|SQL和数据库技术(ID:SQLplusDB)

MySQL 8.0 OCP (1Z0-908) 考点概要

MySQL 8.0 OCP (1Z0-908) 考点精析-安装与配置考点1:设置系统变量
【MySQL】控制MySQL优化器行为方法之optimizer_switch系统变量
【MySQL】MySQL系统变量(system variables)列表(mysqld --verbose --help的结果例)
【MySQL】MySQL系统变量(system variables)列表(SHOW VARIABLES 的结果例)
MySQL 8.0 OCP (1Z0-908) 考点精析-备份与恢复考点1:MySQL Enterprise Backup概要
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点1:sys.statement_analysis视图
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点2:系统变量的确认
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点3:EXPLAIN ANALYZE
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点4:慢速查询日志(slow query log)
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点5:表连接算法(join algorithm)
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点6:MySQL Enterprise Monitor之Query Analyzer
MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点1:二进制日志文件(Binary log)
MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点5:数据字典(Data Dictionary)
MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点6:InnoDB Tablespaces之系统表空间(System Tablespace)
MySQL 8.0 InnoDB Tablespaces之File-per-table tablespaces(单独表空间)
MySQL 8.0 InnoDB Tablespaces之General Tablespaces(通用表空间/一般表空间)

MySQL 8.0 InnoDB Tablespaces之Undo Tablespaces(UNDO表空间)

InnoDB表空间是MySQL中用于存储InnoDB存储引擎表数据和索引的物理文件。
InnoDB Architecture
InnoDB表空间根据用途可以分成多种类型:

  • 数据表空间:
    • System tablespace(系统表空间)
    • File-per-table tablespaces(单独表空间)
    • General tablespaces(通用表空间/一般表空间)
  • Undo 表空间
  • 临时表空间(Temporary table tablespaces)

Undo Tablespaces(UNDO表空间)

UNDO日志(Undo Log)主要用于事务异常时的数据回滚,在磁盘上UNDO日志保存在UNDO表空间中。

默认UNDO表空间

MySQL实例初始化时会创建两个默认UNDO表空间,默认UNDO表空间会创建在innodb_undo_directory变量定义的位置。
默认UNDO表空间的数据文件命名为undo_001和undo_002,在数据字典中定义的对应UNDO表空间名称为innodb_undo_001和innodb_undo_002。

例:

mysql> show variables like 'datadir';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.00 sec)

mysql> show variables like 'innodb_undo_directory';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_undo_directory | ./    |
+-----------------------+-------+
1 row in set (0.00 sec)

mysql> SELECT  TABLESPACE_NAME, FILE_NAME, FILE_TYPE,AUTOEXTEND_SIZE/1024/1024 size_m
    ->  FROM INFORMATION_SCHEMA.FILES
    ->   WHERE FILE_TYPE LIKE 'UNDO LOG';
+-----------------+------------+-----------+-------------+
| TABLESPACE_NAME | FILE_NAME  | FILE_TYPE | size_m      |
+-----------------+------------+-----------+-------------+
| innodb_undo_001 | ./undo_001 | UNDO LOG  | 16.00000000 |
| innodb_undo_002 | ./undo_002 | UNDO LOG  | 16.00000000 |
+-----------------+------------+-----------+-------------+
2 rows in set (0.01 sec)

mysql>

查看数据文件。

root@mysql-vm:/var/lib/mysql# ls -lh undo*
-rw-r----- 1 mysql mysql 16M Dec 28 17:09 undo_001
-rw-r----- 1 mysql mysql 16M Dec 28 17:09 undo_002
root@mysql-vm:/var/lib/mysql#

MySQL 8.0.23开始,初始UNDO表空间大小通常为16MB,UNDO表空间的扩展大小至少为16MB。

添加 Undo 表空间

由于 Undo 日志会在长时间运行的事务中变得很大,创建额外的 Undo 表空间可以避免单个表空间变得太大。MySQL 8.0.14 版本之后,可以在运行时使用CREATE UNDO TABLESPACE语法创建额外的UNDO 表空间。

CREATE UNDO TABLESPACE tablespace_name ADD DATAFILE 'file_name.ibu';

例:

mysql> CREATE UNDO TABLESPACE undo_tbs_1 ADD DATAFILE 'undo_tbs_1.ibu';
Query OK, 0 rows affected (0.26 sec)

mysql> SELECT  TABLESPACE_NAME, FILE_NAME, FILE_TYPE,AUTOEXTEND_SIZE/1024/1024 size_m
    ->  FROM INFORMATION_SCHEMA.FILES
    ->   WHERE FILE_TYPE LIKE 'UNDO LOG';
+-----------------+------------------+-----------+-------------+
| TABLESPACE_NAME | FILE_NAME        | FILE_TYPE | size_m      |
+-----------------+------------------+-----------+-------------+
| innodb_undo_001 | ./undo_001       | UNDO LOG  | 16.00000000 |
| innodb_undo_002 | ./undo_002       | UNDO LOG  | 16.00000000 |
| undo_tbs_1      | ./undo_tbs_1.ibu | UNDO LOG  | 16.00000000 |
+-----------------+------------------+-----------+-------------+
3 rows in set (0.00 sec)

mysql>

注意:创建创建额外的Undo 表空间的数据文件的扩展名必须使用 .ibu 。

查看Undo 相关的信息

查看Undo 相关参数变量

Undo 相关的参数变量主要包括如下内容。

例:

mysql> show variables like '%undo%';
+--------------------------+------------+
| Variable_name            | Value      |
+--------------------------+------------+
| innodb_max_undo_log_size | 1073741824 |
| innodb_undo_directory    | ./         |
| innodb_undo_log_encrypt  | OFF        |
| innodb_undo_log_truncate | ON         |
| innodb_undo_tablespaces  | 2          |
+--------------------------+------------+

回滚段(rollback segment)相关参数。

mysql> show variables like '%rollback%'
    -> ;
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| innodb_rollback_on_timeout | OFF   |
| innodb_rollback_segments   | 128   |
+----------------------------+-------+
2 rows in set (0.00 sec)

mysql>
mysql> show variables like 'innodb_purge_rseg_truncate_frequency';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| innodb_purge_rseg_truncate_frequency | 128   |
+--------------------------------------+-------+
1 row in set (0.01 sec)

查看Undo 状态信息
通过information_schema.innodb_tablespaces 查看undo表空间信息
mysql> select * from information_schema.innodb_tablespaces where name like '%undo%' \G
*************************** 1. row ***************************
          SPACE: 4294967279
           NAME: innodb_undo_001
           FLAG: 0
     ROW_FORMAT: Undo
      PAGE_SIZE: 16384
  ZIP_PAGE_SIZE: 0
     SPACE_TYPE: Undo
  FS_BLOCK_SIZE: 4096
      FILE_SIZE: 16777216
 ALLOCATED_SIZE: 16777216
AUTOEXTEND_SIZE: 0
 SERVER_VERSION: 8.0.32
  SPACE_VERSION: 1
     ENCRYPTION: N
          STATE: active
*************************** 2. row ***************************
          SPACE: 4294967278
           NAME: innodb_undo_002
           FLAG: 0
     ROW_FORMAT: Undo
      PAGE_SIZE: 16384
  ZIP_PAGE_SIZE: 0
     SPACE_TYPE: Undo
  FS_BLOCK_SIZE: 4096
      FILE_SIZE: 16777216
 ALLOCATED_SIZE: 16777216
AUTOEXTEND_SIZE: 0
 SERVER_VERSION: 8.0.32
  SPACE_VERSION: 1
     ENCRYPTION: N
          STATE: active
2 rows in set (0.00 sec)

mysql>

UNDO表空间的使用状态:

mysql> SELECT NAME, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES
    ->   WHERE NAME in ('innodb_undo_001','innodb_undo_002')\G
*************************** 1. row ***************************
 NAME: innodb_undo_001
STATE: active
*************************** 2. row ***************************
 NAME: innodb_undo_002
STATE: active
2 rows in set (0.00 sec)

mysql>
通过information_schema.FILES查看undo表空间的数据文件信息
mysql> SELECT  TABLESPACE_NAME, FILE_NAME, FILE_TYPE FROM INFORMATION_SCHEMA.FILES
    ->   WHERE FILE_TYPE LIKE 'UNDO LOG';
+-----------------+------------+-----------+
| TABLESPACE_NAME | FILE_NAME  | FILE_TYPE |
+-----------------+------------+-----------+
| innodb_undo_001 | ./undo_001 | UNDO LOG  |
| innodb_undo_002 | ./undo_002 | UNDO LOG  |
+-----------------+------------+-----------+
2 rows in set (0.00 sec)

mysql>
undo表空间的状态

undo表空间的状态相关的信息。

例:

mysql> SHOW STATUS LIKE '%undo%';
+----------------------------------+-------+
| Variable_name                    | Value |
+----------------------------------+-------+
| Innodb_undo_tablespaces_total    | 2     |
| Innodb_undo_tablespaces_implicit | 2     |
| Innodb_undo_tablespaces_explicit | 0     |
| Innodb_undo_tablespaces_active   | 2     |
+----------------------------------+-------+
4 rows in set (0.00 sec)

mysql>

Innodb_undo_tablespaces_total :总的UNDO表空间数量
Innodb_undo_tablespaces_implicit :隐式(InnoDB创建的)UNDO表空间数量
Innodb_undo_tablespaces_explicit :显式(用户创建的)UNDO表空间数量
Innodb_undo_tablespaces_active :活动UNDO表空间数量

参考

15.6.3.4 Undo Tablespaces
https://dev.mysql.com/doc/refman/8.0/en/innodb-undo-tablespaces.html

https://www.alibabacloud.com/blog/an-in-depth-analysis-of-undo-logs-in-innodb_598966

https://blog.csdn.net/wudi53433927/article/details/127206842

15.6.6 Undo Logs
https://dev.mysql.com/doc/refman/8.0/en/innodb-undo-logs.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/285253.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java ArrayList在遍历时删除元素

文章目录 1. Arrays.asList()获取到的ArrayList只能遍历,不能增加或删除元素2. java.util.ArrayList.SubList有实现add()、remove()方法3. 遍历集合时对元素重新赋值、对元素中的属性赋值、删除元素、新增元素3.1 普通for循环3.2 增强for循环3.3 forEach循环3.4 str…

JavaScript编程进阶 – 迭代器

JavaScript编程进阶 – 迭代器 JavaScript Programming Advanced - Iterators By JacksonML 在JavaScript语言中,迭代器是对象(Object), 它事先定义好了一个序列,并在其终止时有可能地(潜在地)返回值。 本文简要介绍迭代器对象如…

初识HTTP协议

Web服务器可以接收浏览器的请求,并将服务器中的web项目资源响应给浏览器,浏览器与服务器之间进行网络通信遵循HTTP协议。 一、什么是HTTP协议 超文本传输协议(HTTP,HyperText Transfer Protocol)(浏览器---->web服务…

2024新版塔罗占卜网站源码风水起名附带搭建视频及文本教程

附带文本教学及视频教程安装方法以linux为例: 1、建议在服务器上面安装宝塔面板,以便操作,高逼格技术员可以忽略这步操作。 2、把安装包文件解压到根目录,同时建立数据库,把数据文件导入数据库 3、修改核心文件conf…

Linux下使用Wireshark抓包教程

在实际开发中,涉及网络传输的环节是非常多的。在这些过程中,我们经常有查看被传输的数据信息的需求,因此,抓包工具应运而生。Wireshark便是一款非常有名的抓包及分析软件,具有强大的协议解析能力。本文将介绍如何在Lin…

前端算法之二叉树

二叉树 二叉树用于解决什么问题 数据的组织与搜索:排序:表达式和计算:图形处理: 举例:二叉树的最近公共祖先 思路: 排序/排布方式 和 (排序中)当前树和节点的关系 举例2:…

二叉树的前序遍历 、二叉树的最大深度、平衡二叉树、二叉树遍历(leetcode)

目录 一、二叉树的前序遍历 方法一:全局变量记录节点个数 方法二:传址调用记录节点个数 二、二叉树的最大深度 三、平衡二叉树 四、二叉树遍历 一、二叉树的前序遍历 方法一:全局变量记录节点个数 计算树的节点数: 函数TreeSize用于递…

Zookeeper注册中心实战

Java学习手册面试指南:https://javaxiaobear.cn Spring Cloud Zookeeper通过自动配置和绑定到 Spring 环境和其他 Spring 编程模型习惯用法,为 Spring Boot 应用程序提供Apache Zookeeper集成。通过一些简单的注释,您可以快速启用和配置应用…

51单片机中TCON, IE, PCON等寄存器的剖析

在单片机中,如何快速通过名字记忆IQ寄存器中每一个控制位的作用呢? IE(interrupt enable)寄存器中,都是中断的使能位置。 其中的EA(enable all)是总使能位,ES(enable serial)是串口…

Head First Design Patterns - 装饰者模式

什么是装饰者模式 装饰者模式动态地将额外责任附加到对象上。对于拓展功能,装饰者提供子类化的弹性替代方案。 --《Head First Design Patterns》中的定义 为什么会有装饰者模式 根据上述定义,简单来说,装饰者模式就是对原有的类&#xff0c…

STM32与TB6612电机驱动器的基础入门教程

TB6612是一款常用的双路直流电机驱动芯片,适用于小型机器人以及其他需要控制电机方向和转速的应用。在STM32微控制器的配合下,可以实现对TB6612电机驱动器的控制,进而实现电机的控制。本文将带领读者一步步了解如何搭建基于STM32与TB6612的电…

华为云默认安全组配置规则说明

华为云服务器默认安全组可选Sys-default、Sys-WebServer或Sys-FullAccess。default是默认安全组规则,只开放了22和3389端口;Sys-WebServer适用于Web网站开发场景,开放了80和443端口;Sys-FullAccess开放了全部端口。阿腾云atengyun…

机器学习——主成分分析(PCA)

目录 背景 引入 特征维度约减 特征维度约减的概念 为何要维度约减? 维度约减的应用 常规维度约减方法 主成分分析 主成分分析 (PCA)基本思路 主成分的代数定义和代数推导 主成分的代数定义 主成分的代数推导 PCA算法两种实现方法 1、基于特征值分解协方差矩阵实…

以太网二层交换机实验

实验目的: (1)理解二层交换机的原理及工作方式; (2)利用交换机组建小型交换式局域网。 实验器材: Cisco packet 实验内容: 本实验可用一台主机去ping另一台主机,并…

GRU算法

前置知识:RNN,LSTM LSTM需要训练的参数很多,极消耗计算资源。GRU是一种LSTM的改进算法,参数更少,更容易训练。 它将忘记门和输入门合并成为一个单一的更新门,同时合并了数据单元状态和隐藏状态&#xff0…

系列二、RestTemplate简介

一、RestTemplate简介 1.1、概述 RestTemplate是一种便捷的访问RestFul服务的模板类,是Spring提供的用于访问Rest服务的客户端模板工具集,它提供了多种便捷访问远程HTTP服务的方法。 1.2、API https://docs.spring.io/spring-framework/docs/5.2.2.REL…

Linux实战:部署基于Postfix 与 Dovecot 的邮件系统

一、电子邮件系统简介 在电子邮件系统中,为用户收发邮件的服务器名为邮件用户代理(Mail User Agent,MUA),MTA (邮件传输代理)的工作职责是转发处理不同电子邮件服务供应商之间的邮件&#xff0…

docker 部署教学版本

文章目录 一、docker使用场景及常用命令1)docker使用场景2)rocky8(centos8)安装 docker3)docker 常用命令补充常用命令 二、 单独部署每个镜像,部署spring 应用镜像推荐(2023-12-18)1、 安装使用 mysql1.1 …

WEB 3D技术 three.js通过光线投射 完成几何体与外界的事件交互

本文 我们来说 光线投射 光线投射技术是用于3维空间场景中的交互事件 我们先编写代码如下 import ./style.css import * as THREE from "three"; import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";const scene new THRE…

Django Web框架

1、创建PyCharm项目 2、安装框架 pip install django 3、查看安装的包列表 4、使用命令创建django项目 django-admin startproject web 5、目录结构 6、运行 cd web python manage.py runserver7、初始化后台登录的用户名密码 执行数据库迁移生成数据表 python manage.p…