MySQL5.6开始可以使用独立表空间, innodb_file_per_table=1
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,MySQL5.6开始可以使用独立表空间: MySQL5.6 innodb_file_per_table=1 #使用独立表空间,动态参数。(5.6默认OFF,5.7默认ON)1、drop/truncat
千家信息网最后更新 2025年11月13日MySQL5.6开始可以使用独立表空间, innodb_file_per_table=1MySQL5.6开始可以使用独立表空间: MySQL5.6 innodb_file_per_table=1 #使用独立表空间,动态参数。(5.6默认OFF,5.7默认ON)
1、drop/truncate table方式操作表空间能自动回收(磁盘空间)
1)、创建procedure,循环insert一定量数据 ##use test ##drop procedure pro1;
DELIMITER // create procedure pro1() begin declare i int; set i=1; while i<100000 do insert into test.cc(id,name) values(i, "aa"); set i=i+1; end while; end;//
2)、调用procedure : mysql> call pro1();
3)、查看表大小、数据量: select table_name, (data_length+index_length)/1024/1024 as total_mb, table_rows from information_schema.tables where table_schema='test' and table_name='CC';
+------------+------------+------------+ | table_name | total_mb | table_rows | +------------+------------+------------+ | cc | 3.51562500 | 100246 | +------------+------------+------------+ 1 row in set (0.31 sec)
4)、truncate清表: mysql> truncate table test.cc; Query OK, 0 rows affected (0.73 sec)
5)、再次查看表空间已经回收:
cc.ibd 由 11264KB 回收到96KB 。
mysql> select table_name, (data_length+index_length)/1024/1024 as total_mb, table_rows -> from information_schema.tables where table_schema='test' and table_name='CC'; +------------+------------+------------+ | table_name | total_mb | table_rows | +------------+------------+------------+ | cc | 0.01562500 | 0 | +------------+------------+------------+ 1 row in set (0.00 sec)
mysql>
mysql> select version(); +------------+ | version() | +------------+ | 5.7.11-log | +------------+ 1 row in set (0.08 sec)
mysql>
注:drop table test.cc ; 物理文件cc.ibd也会同时被删除。
2、独立表空间下,可以自定义表的存储位置,(有时将部分热表放在不同的磁盘可有效地提升IO性能)
create table test(id int) data directory='c:/software'; create table test1(id int,name varchar(20),primary key (id)) data directory='c:/software';
3、独立表空间下,可以回收表空间碎片(比如一个非常大的delete操作之后释放的空间)
1)创建测试表
DELIMITER // create procedure pro_test1() begin declare i int; set i=1; while i<10000 do insert into test.test1(id,name) values(i, "aa"); set i=i+1; end while; end;//
##call pro_test1();
表大小:test1.ibd 368KB
2)delete后表大小: mysql> delete from test1; test1.ibd 384KB
3)回收表空间 mysql> alter table test1 engine=innodb; test1.ibd 96KB
mysql> select table_name, (data_length+index_length)/1024/1024 as total_mb, table_rows from information_schema.tables where table_schema='test' and table_name='TEST1';
+------------+------------+------------+
| table_name | total_mb | table_rows |
+------------+------------+------------+
| test1 | 0.01562500 | 0 |
+------------+------------+------------+
1 row in set (0.00 sec)
1、drop/truncate table方式操作表空间能自动回收(磁盘空间)
1)、创建procedure,循环insert一定量数据 ##use test ##drop procedure pro1;
DELIMITER // create procedure pro1() begin declare i int; set i=1; while i<100000 do insert into test.cc(id,name) values(i, "aa"); set i=i+1; end while; end;//
2)、调用procedure : mysql> call pro1();
3)、查看表大小、数据量: select table_name, (data_length+index_length)/1024/1024 as total_mb, table_rows from information_schema.tables where table_schema='test' and table_name='CC';
+------------+------------+------------+ | table_name | total_mb | table_rows | +------------+------------+------------+ | cc | 3.51562500 | 100246 | +------------+------------+------------+ 1 row in set (0.31 sec)
4)、truncate清表: mysql> truncate table test.cc; Query OK, 0 rows affected (0.73 sec)
5)、再次查看表空间已经回收:
cc.ibd 由 11264KB 回收到96KB 。
mysql> select table_name, (data_length+index_length)/1024/1024 as total_mb, table_rows -> from information_schema.tables where table_schema='test' and table_name='CC'; +------------+------------+------------+ | table_name | total_mb | table_rows | +------------+------------+------------+ | cc | 0.01562500 | 0 | +------------+------------+------------+ 1 row in set (0.00 sec)
mysql>
mysql> select version(); +------------+ | version() | +------------+ | 5.7.11-log | +------------+ 1 row in set (0.08 sec)
mysql>
注:drop table test.cc ; 物理文件cc.ibd也会同时被删除。
2、独立表空间下,可以自定义表的存储位置,(有时将部分热表放在不同的磁盘可有效地提升IO性能)
create table test(id int) data directory='c:/software'; create table test1(id int,name varchar(20),primary key (id)) data directory='c:/software';
3、独立表空间下,可以回收表空间碎片(比如一个非常大的delete操作之后释放的空间)
1)创建测试表
DELIMITER // create procedure pro_test1() begin declare i int; set i=1; while i<10000 do insert into test.test1(id,name) values(i, "aa"); set i=i+1; end while; end;//
##call pro_test1();
表大小:test1.ibd 368KB
2)delete后表大小: mysql> delete from test1; test1.ibd 384KB
3)回收表空间 mysql> alter table test1 engine=innodb; test1.ibd 96KB
mysql> select table_name, (data_length+index_length)/1024/1024 as total_mb, table_rows from information_schema.tables where table_schema='test' and table_name='TEST1';
+------------+------------+------------+
| table_name | total_mb | table_rows |
+------------+------------+------------+
| test1 | 0.01562500 | 0 |
+------------+------------+------------+
1 row in set (0.00 sec)
空间
独立
大小
数据
磁盘
不同
有效
一定量
位置
再次
动态
参数
同时
性能
文件
方式
物理
碎片
部分
存储
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
关于网络安全宣传信息
手机版比较好玩的打怪服务器
软件开发要要游戏本吗
hadoop分布式数据库
c 窗口数据库
网络安全应用具有哪些特征
社保的管理客户端服务器连接异常
杭州宝咖网络技术有限公司
进销存管理数据库课程设计
电信防诈骗网络安全题库
关于农村养老的数据库
数据库n对n的关系
软件开发转网络运维工程师
池州通信软件开发定制
无线数据终端无服务器
没有电脑怎么学习网络技术
制作app数据库怎么解决
数据库 主键 自增
e4a怎么连接易语言服务器
宝山区专业软件开发包括什么
网络安全概念股真的吗
嘉昆太网络安全战略合作协议
数据库多副本不停机更新
redis淘汰前存储数据库
数据库全码的例子
江苏常规软件开发特点
网络安全日常事务
易语言树形框读数据库
软件开发 阶段
基于权限管理的文件服务器