MySQL_13.InonDB表空间

InnoDB 表空间介绍以及管理
1.mysql表空间类型
        

system tablespace                系统表空间        
file-per-table tablespace        独立表空间
temporary tablespace             临时表空间
undo tablespace                  UNDO表空间
general tablespace               通用表空间
transportable tablespace         传输表空间

2.扩展IBDATA系统表空间案例,加多一个1G的ibdata4的系统表空间文件

show global variables like '%innodb_data_file_path%';


修改my.cnf文件 innodb_data_file_path 参数
                

innodb_data_file_path=ibdata1:1024M;ibdata2:1024M;ibdata3:1024M:autoextend:max:20G

 修改成:              

innodb_data_file_path= ibdata1:1024M;ibdata2:1024M;ibdata3:1024M;ibdata4:1024M:autoextend:max:20G


重启mysql、初始化:

systemctl restart mysql;


3.收缩ibdata系统表空间innodb system tablespace 案例

场景:原来是共享表空间,转换成独立表空间以后,数据和索引迁移出ibdata,原来的ibdata占用500G空间不会自动缩小。

(1)导出所有的数据(逻辑备份):

mysqldump --all-databases --flush-privileges \
--quick --routines --triggers -uroot -p > mysqldump_all_database.sql

(2)查询 mysql 系统数据下所有innodb表、导出内容、删掉表结构 :

SELECT 
CONCAT('ls -lah /mysql/data/3306/data/mysql/',table_name,'.frm') "查看.frm路径",
CONCAT('rm -rf /mysql/data/3306/data/mysql/',table_name,'.frm') "删除.FRM"
FROM information_schema.tables 
WHERE table_schema='mysql' AND ENGINE='innodb';

(3)停止mysql数据库 :

systemctl stop mysql; 

(4)冷备打包mysql datadir目录 :
                    

cd /mysql/data/3306/
tar zcvf data.tar.gz data 

(5)删除所有的表空间文件 
删除ibdata、ib_log*、undo*、mysql目录下面的*.ibd文件、以及mysql中innodb表的.frm文件。

find /mysql/data/3306/data/  -name "ibdata*"  -exec rm -rf {} \;
find /mysql/data/3306/data/  -name "ib_logfile*"  -exec rm -rf {} \;
find /mysql/data/3306/data/  -name "undo*"  -exec rm -rf {} \;
find /mysql/data/3306/data/  -name "*.ibd"  -exec rm -rf {} \;

(6)修改my.cnf参数文件
将innodb_data_file_path 参数改小,生产如果是500G大小,改成100M。

innodb_data_file_path=ibdata1:500G;ibdata2:500G;ibdata3:500G:autoextend:max:500G

修改成:

innodb_data_file_path=ibdata1:100M;ibdata2:100M;ibdata3:100M;ibdata4:100M:autoextend:max:20G

(7)启动mysql、恢复数据库、查询数据

systemctl start mysql; 
mysql -uroot -p123456 
source /root/mysqldump/mysqldump_all_database.sql;
commit;
select count(*) from scott.emp;
select count(*) from yzjtestdb.yzjtest_m1;


4.临时表空间
临时表空间:主要用于临时排序/非压缩的临时表,默认12M的文件。
mysql 5.7 之前 : 临时表都放在 ibdata 里面
mysql 5.7之后 : 临时表放在临时表空间
相关参数

show variables like '%innodb_temp_data_file_path%';

# 临时表空间优化案例

问:临时表空间主要用于临时排序、分组作用,而临时表空间路径不允许修改,只能放在$datadir目录内,如果SQL语句有大量的排序分组操作,然而磁盘IO又跟不上,对数据库造成阻塞,我们改怎么优化数据库?

答:我们可以将临时表空间存放在/dev/shm目录(内存)下。

ln -sf /dev/shm /mysql/data/3306/data/temp
chown -R mysql:mysql /mysql
vi /mysql/data/3306/my.cnf
innodb_temp_data_file_path=ibtmp1:500M;ibtmp2:500M:autoextend:max:20G

修改成:

innodb_temp_data_file_path=temp/ibtmp1:500M;temp/ibtmp2:500M:autoextend:max:20G
systemctl restart mysql
ls -l /mysql/data/3306/data/temp/*
*/

5.UNDO回滚表空间
mysql5.7 以后,从系统表空间独立出来的 undo 回滚表空间
相关的参数

show variables like '%undo%';


6.mysql常用空间信息查询SQL
(1)查看数据库大小

select SUM( data_length + index_length ) / 1024 / 1024 "Database Size in MB" from information_schema.TABLES;

(2)查看各数据库大小

select table_schema "Database Name", 
SUM( data_length + index_length ) /1024 / 1024 "Database Size in MB" 
from information_schema.TABLES group by table_schema;

(3)查看索引大小

select CONCAT(ROUND(SUM(index_length)/(1024*1024), 2), ' MB') 
as 'Total Index Size' from information_schema.TABLES 
where table_schema like 'scott';

(4)查看数据库中所有表和索引的空间信息

select CONCAT(table_schema,'.',table_name) as 'Table Name', CONCAT(ROUND(table_rows,2)) 
as 'Number of Rows', CONCAT(ROUND(data_length/(1024*1024*1024),2),'G') 
as 'Data Size', CONCAT(ROUND(index_length/(1024*1024*1024),2),'G') 
as 'Index Size', CONCAT(ROUND((data_length+index_length)/(1024*1024*1024),2),'G')
as 'Total' 
from information_schema.TABLES where table_schema like 'scott';

(5)查看表空间大小

select CONCAT(TRUNCATE(SUM(data_length)/1024/1024,2),'MB') 
as data_size, CONCAT(TRUNCATE(SUM(max_data_length)/1024/1024,2),'MB') 
as max_data_size, CONCAT(TRUNCATE(SUM(data_free)/1024/1024,2),'MB') 
as data_free, CONCAT(TRUNCATE(SUM(index_length)/1024/1024,2),'MB') 
as index_size from information_schema.tables where TABLE_SCHEMA = 'scott';
select CONCAT(ROUND(SUM(data_length/1024/1024),2),'MB') 
as data_length_MB, CONCAT(ROUND(SUM(index_length/1024/1024),2),'MB') 
as index_length_MB from information_schema.tables 
where table_schema='scott' and table_name = 'emp';

(6)找出占用空间前10的表大小

select CONCAT(table_schema, '.', table_name), 
CONCAT(table_rows) rows, CONCAT(ROUND(data_length / ( 1024 * 1024 * 1024 ), 2), 'G') data,
CONCAT(ROUND(index_length / ( 1024 * 1024 * 1024 ), 2), 'G') idx,
CONCAT(ROUND(( data_length + index_length ) / ( 1024 * 1024 * 1024 ), 2), 'G') total_size,ROUND(index_length / data_length, 2) idxfrac
from information_schema.TABLES order by data_length + index_length desc limit 10;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React中props 和 state异同初探

在 React 中,props 和 state 是两个非常重要的概念,它们决定了组件的行为和渲染方式。 Props props(属性)是父组件传递给子组件的数据。它们类似于函数的参数,可以在组件内部被访问和使用,但不能被修改。…

鸿蒙4.0核心技术-WebGL开发

场景介绍 WebGL主要帮助开发者在前端开发中完成图形图像的相关处理,比如绘制彩色图形等。 接口说明 表1 WebGL主要接口列表 接口名描述canvas.getContext获取canvas对象上下文。webgl.createBuffer(): WebGLBuffernullwebgl.bindBuffer(target: GLenum, buffer: …

饥荒Mod 开发(十三):木牌传送

饥荒Mod 开发(十二):一键制作 饥荒Mod 开发(十四):制作屏幕弹窗 一键传送源码 饥荒的地图很大,跑地图太耗费时间和饥饿值,如果大部分时间都在跑图真的是很无聊,所以需要有一个能够传送的功能,不仅可以快速…

Web前端-JavaScript(js表达式)

文章目录 JavaScript基础第01天1.编程语言概述1.1 编程1.2 计算机语言1.2.1 机器语言1.2.2 汇编语言1.2.3 高级语言 1.4 翻译器 2.计算机基础2.1 计算机组成2.2 数据存储2.3 数据存储单位2.4 程序运行 3.初始JavaScript3.1 JavaScript 是什么3.2 JavaScript的作用3.3 HTML/CSS/…

《点云处理》平面拟合

前言 在众多点云处理算法中,其中关于平面拟合的算法十分广泛。本篇内容主要是希望总结归纳各类点云平面拟合算法,并且将代码进行梳理保存。 环境: VS2019 PCL1.11.1 1.RANSAC 使用ransac对平面进行拟合是非常常见的用法,PCL…

医疗智能化革命:AI技术引领医疗领域的创新进程

一、“AI”医疗的崛起 随着人工智能(AI)技术的崛起,"AI"医疗正在以惊人的速度改变着医疗行业的面貌。AI作为一种强大的工具,正在为医疗领域带来前所未有的创新和突破。它不仅在医学影像诊断、病理学分析和基因组学研究等…

Linux ls命令教程:如何有效地列出文件和目录(附案例详解和注意事项)

Linux ls命令介绍 ls是Linux中的基本命令之一,任何Linux用户都应该知道。ls命令列出文件系统中的文件和目录,并显示有关它们的详细信息。它是所有Linux发行版都安装的GNU核心实用程序包的一部分。 Linux ls命令适用的Linux版本 ls命令在所有Linux发行…

vertx写sip服务器

Vert.x SIP 模块默认使用 TCP 协议进行通信。如果您需要支持 UDP 协议,您需要自定义 SIP 协议栈,并在其中实现 UDP 传输。 以下是一个示例代码,演示如何在 Vert.x 中创建一个支持 UDP 的 SIP 服务器: import io.vertx.core.net.…

设计模式——状态模式

引言 状态模式是一种行为设计模式, 让你能在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。 问题 状态模式与有限状态机 的概念紧密相关。 其主要思想是程序在任意时刻仅可处于几种有限的状态中。 在任何一个特定状态中…

手拉手EasyExcel极简实现web上传下载(全栈)

环境介绍 技术栈 springbootmybatis-plusmysqleasyexcel 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 1.8 Spring Boot 2.7.13 mybatis-plus 3.5.3.2 EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。 他能让你在不用考虑性…

【shell脚本实战案例】sed替换文本中指定数据所在的行

目录 问题背景: 解决方法: 1.sed替换每行第一个出现的关键字 2.sed替换某一行出现的关键字 3.sed替换某一行第N次出现的关键字 4.sed替换文件中所有的关键字 5.sed将文件中所有关键字替换成空(即关键字全部删除的另一种方式&#xff09…

19.Oracle 中count(1) 、count(*) 和count(列名) 函数的区别

count(1) and count(字段) 两者的主要区别是 count(1) 会统计表中的所有的记录数,包含字段为null 的记录。count(字段) 会统计该字段在表中出现的次数,忽略字段为null 的情况。 即不统计字段为null 的记录。 count(*) 和 count(1)和count(列名)区别 …

CentOS7安装教程

1.准备工作 安装虚拟机软件 VMware Workstation 17 Player下载CentOS7 镜像 2. 安装VMware Workstation 17 Player 官网 下载链接 下载好了安装包,双击安装包,傻瓜式安装一直下一步,安装即可。 3. 安装CentOS7 官网 推荐下载地址&…

Tekton 构建容器镜像

Tekton 构建容器镜像 介绍如何使用 Tektonhub 官方 kaniko task 构建docker镜像,并推送到远程dockerhub镜像仓库。 kaniko task yaml文件下载地址:https://hub.tekton.dev/tekton/task/kaniko 查看kaniko task yaml内容: 点击Install&…

RabbitMQ 消息持久化

默认情况下,exchange、queue、message 等数据都是存储在内存中的,这意味着如果 RabbitMQ 重启、关闭、宕机时所有的信息都将丢失。 RabbitMQ 提供了持久化来解决这个问题,持久化后,如果 RabbitMQ 发送 重启、关闭、宕机&#xff…

05 动态渲染数据

概述 实际上动态渲染数据&#xff0c;在《使用CDN开发Vue3项目》中就已经学习过了&#xff0c;核心代码如下&#xff1a; <div id"vue-app">{{text}}</div> <script src"https://cdn.staticfile.org/vue/3.0.5/vue.global.js"></sc…

【运维笔记】Hyperf正常情况下Xdebug报错死循环解决办法

问题描述 在使用hyperf进行数据库迁移时&#xff0c;迁移报错&#xff1a; 查看报错信息&#xff0c;错误描述是Xdebug检测到死循环&#xff0c;可是打印的堆栈确实正常堆栈&#xff0c;没看到死循环。 寻求解决 gpt 说的跟没说一样。。 google一下 直接把报错信息粘贴上去…

I.MX RT1170双核学习(3):多核管理之MCMGR源码分析详解

本文通过SDK中最简单的hello_world例程来说明一下双核程序如何运行。在CM7和CM4的工程中都有一个MCMGR(Multicore Manager)文件夹&#xff0c;它是用来管理多核之间的操作的&#xff0c;当然也包括我们前面提到的那些寄存器的设置。 文章目录 1 MCMGR_EarlyInit1.1 MCMGR_Trigg…

Java面试题一

1、JDK 和 JRE 有什么区别&#xff1f; JDK是Java的开发工具包&#xff1b;而JRE是Java的运行环境 其中JDK中包含JRE、JDK中有一个名为jre的目录&#xff0c;里面包含两个文件夹bin和lib&#xff0c;bin就是JVM&#xff0c; lib就是JVM工作所需要的类库 2、 和 equals 的区别是…

MFC 程序执行流程

目录 MFC 程序启动 MFC 入口函数 程序执行流程总结 在Win32课程中WinMain由程序员自己实现&#xff0c;那么流程是程序员安排&#xff0c;但到了MFC中&#xff0c;由于MFC库实现WinMain&#xff0c;也就意味着MFC负责安排程序的流程。 MFC 程序启动 程序的启动&#xff0c;…