首页 > 数据库 >MySQL8.0新特性--使用SQL管理undo表空间

MySQL8.0新特性--使用SQL管理undo表空间

时间:2022-12-22 09:35:45浏览次数:77  
标签:tablespaces -- 创建 默认 innodb undo 空间 MySQL8.0

8.0之前的undo tablespaces管理

InnoDB的undo log最主要是存储回滚数据,是实现MVCC的重要组件;innodb的一个rollback segment分为1024个undo log segment,即最大支持1024个并发事务;后来innodb版本进行了升级,支持了128个rollback segment(32个分配给临时表使用,1个分配给系统表空间使用),但这些回滚段都在ibdata中(5.6以前的版本),因此早期经常遇到由于大事务不提交导致ibdata暴涨的问题,通常只有重建数据库才能回收空间。随着5.6之后版本的优化,可以通过参数设置独立的undo tablespaces。

l  innodb_undo_directory:回滚表空间所在的位置,默认为 . ,即data目录

l  innodb_undo_logs:设置rollback segment的个数,默认128(5.7.19废弃)。

l  innodb_undo_tablespaces:设置undo文件的数量,默认0,最大可设95,在innodb_undo_directory目录下可以看到以undo开头的文件。(5.7.21废弃)

l  innodb_undo_log_truncate(5.7新增):默认关闭。如开启,当undo超过innodb_max_undo_log_size时,会被truncate到初始化大小(前提:1、里面的undo不在被使用;2、至少需要2个undo tablespaces);可以通过设置innodb_purge_rseg_truncate_frequency调整truncate频率。

8.0 undo tablespaces新增特性

l  innodb_undo_tablespaces由默认的0调整为默认2,即默认开启独立undo表空间;8.0.14版本后不再可配置。

l  8.0之前总共可以创建128个rollback segment,现在每个undo tablespaces可以创建128个rollback segment。

l  innodb_undo_log_truncate默认开启,undo tablespace超过1GB(参数innodb_max_undo_log_size来控制)时,就会触发online truncate。

l  支持undo tablespaces 加密

l  8.0.14GA后,支持使用SQL接口来创建、修改和删除undo tablespaces。

查看undo tablespaces信息

初始化数据库后,默认会创建2个undo tablespaces: 

 

 

 

但在文件系统上实际的文件名是undo_xxxx: 

 

 

 

可以通过GLOBAL STATUS查看状态: 

 

 

 

Innodb_undo_tablespaces_implicit:InnoDB创建的undo表空间的数量,初始化实例时,默认创建2个。

Innodb_undo_tablespaces_explicit:用户创建的undo 表空间。

Innodb_undo_tablespaces_active:活动的undo 表空间,包含implicit和explicit创建的。

Innodb_undo_tablespaces_total:undo表空间总数,包含implicit和explicit创建的和active和inactive。

 

使用SQL语句创建undo tablespaces 

 

 

 TIPS:创建的时候必须以.ibu为扩展名,不允许使用相对路径,不指定则默认在innodb_undo_directory目录,同时绝对路径,必须是Innodb能够识别的,如innodb_data_home_dir、innodb_undo_directory、datadir。

 

创建成功后,会在指定的目录创建一个指定命令的xxxx.ibu文件,同时GLOBAL STATUS变量也会相应的更改。

 

删除undo tablespaces

当我们想要删除一个undo表空间时,必须先将其设置为inactive状态,同时必须保证还有2个undo表空间,原因是当一个undo表空间在被truncate时候,至少还有1个undo表空间可用。 

 

 

当我们将undo表空间inactive后,information_schema.innodb_tablespaces中undo表空间的状态会变成empty。

 

 

undo表空间被DROP后,对应的GLOBAL STATUS相应的变更。

 

 

参考:

https://dev.mysql.com/doc/refman/8.0/en/create-tablespace.html

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

http://mysql.taobao.org/monthly/2019/04/05/

标签:tablespaces,--,创建,默认,innodb,undo,空间,MySQL8.0
From: https://www.cnblogs.com/harda/p/16997637.html

相关文章

  • 辗转相减法求最大公约数
    要求:用C实现一个函数intgcd(inta,intb)求解两个整数的最大公约数,算法步骤是,用a,b中的大值减去小值得到临时值c,然后再用c和a,b中的最小值进行计算,直到c和a,b中的最......
  • 【深度思考】如何优雅的校验参数?
    在日常的开发工作中,为了保证落库数据的完整性,参数校验绝对是必不可少的一部分,本篇文章就来讲解下在项目中该如何优雅的校验参数。假设有一个新增学员的接口,一般第一步我们......
  • C# 类的继承
    类的继承usingSystem;namespaceMyNameSpace{classAttributes{protecteddoublelength;protecteddoublewidth;//带参数的构造......
  • .net core web api 路由约束
    路由约束在传入URL发生匹配时执行,URL路径标记为路由值。路径约束通常检查通过路径模板关联的路径值,并对该值是否为可接受做出对/错决定。某些路由约束使用路由值以外......
  • 23种设计模式,你学废了嘛?
      23种经典设计模式共分为3种类型,分别是创建型、结构型和行为型。今天,我们把这3种类型分成3个对应的小模块,逐一带你回顾一下每一种设计模式的原理、实现、设计意图和......
  • 腾讯大佬告诉你,写Python到底用什么IDE合适
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • MySQL8.0新特性--新数据字典
    一、简介数据字典(DataDictionary),存储数据库的元数据信息,如database、table、index、column等。由于MySQL数据库是插件式数据库,分为SERVER层和存储引擎层,存储引擎层可以......
  • 计算存储分离在京东云消息中间件JCQ上的应用
    作者:田寄远JCQ全名JDCloudMessageQueue,是京东云自研、具有CloudNative特性的分布式消息中间件。JCQ设计初衷即为适应云特性的消息中间件;具有高可用、数据可靠性......
  • 辗转相除法求最大公约数
    代码#include<stdio.h>intmain(){ inta,b,r,temp; printf("Pleaseentera,b:"); scanf("%d,%d",&a,&b); if(a<b) { temp=a; a=b; b=temp; } r=a%b; ......
  • C 加分题目
    C加分题目用C实现一个函数intgcd(inta,intb)求解两个整数的最大公约数,算法步骤是,用a,b中的大值减去小值得到临时值c,然后再用c和a,b中的最小值进行计算,直到c和a,b......