MySQL_13.InonDB表空间

news/2024/11/20 7:14:32/

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.ppmy.cn/news/1273522.html

相关文章

开源 LLM 微调训练指南:如何打造属于自己的 LLM 模型

一、介绍 今天我们来聊一聊关于LLM的微调训练,LLM应该算是目前当之无愧的最有影响力的AI技术。尽管它只是一个语言模型,但它具备理解和生成人类语言的能力,非常厉害!它可以革新各个行业,包括自然语言处理、机器翻译、…

垃圾回收 (GC) 在 .NET Core 中是如何工作的?

提起GC大家肯定不陌生,但是让大家是说一下GC是怎么运行的,可能大多数人都不太清楚,这也很正常,因为GC这东西在.NET基本不用开发者关注,它是依靠程序自动判断来释放托管堆的,我们基本不需要主动调用Collect(…

【Java基础】HashMap 原理

文章目录 1、HashMap 设置值的原理2、HashMap 获取值原理3、HashMap Hash优化4、HashMap 寻址优化5、HashMap 是如何解决Hash冲突的?5.1 get数据的时候,如果定位到指定位置的元素是一个链表,怎么办呢?5.2 红黑树 6、数组扩容6.1 数…

数据仓库与数据挖掘小结

更加详细的只找得到pdf版本 填空10分 判断并改错10分 计算8分 综合20分 客观题 填空10分 判断并改错10分--错的要改 mooc中的--尤其考试题 名词解释12分 4个,每个3分 经常碰到的专业术语 简答题40分 5个,每道8分 综合 画roc曲线 …

什么是计算机网络?计算机网络基础知识

1.网络的组成部分:由主机,路由器,交换机等组成 2.网络结构:网络的网络 3.信息交换方式:电路交换和分组交换 4.网络分层:分清职责,物理层,链路层,网络层,运…

SpringBoot 整合 ExcelEasy

ExcelEasy 是一个基于 Spring Boot 的 Excel 导入导出框架&#xff0c;它提供了简单易用的 API 来操作 Excel 文件&#xff0c;可以轻松实现 Excel 的导入导出。 1. 添加依赖 在 pom.xml 文件中添加 ExcelEasy 的依赖&#xff1a; <dependency><groupId>com.ali…

Linux 之 性能优化

uptime $ uptime -p up 1 week, 1 day, 21 hours, 27 minutes$ uptime12:04:11 up 8 days, 21:27, 1 user, load average: 0.54, 0.32, 0.23“12:04:11” 表示当前时间“up 8 days, 21:27,” 表示运行了多长时间“load average: 0.54, 0.32, 0.23”“1 user” 表示 正在登录…

频谱论文:面向频谱地图构建的频谱态势生成技术研究

#频谱# [1]李竟铭.面向频谱地图构建的频谱态势生成技术研究.2019.南京航空航天大学,MA thesis.doi:10.27239/d.cnki.gnhhu.2019.000556. &#xff08;南京航空航天大学&#xff09; 频谱地图是对无线电环境的抽象表达&#xff0c;它可以直观、多维度地展现频谱态势信息&…