MySQL5.6开始可以使用独立表空间:
MysqL5.6
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清表:
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> select version();
+------------+
| version() |
+------------+
| 5.7.11-log |
+------------+
1 row in set (0.08 sec)
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后表大小:
2)delete后表大小:
MysqL> delete from test1;
test1.ibd 384KB
3)回收表空间
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)
| table_name | total_mb | table_rows |
+------------+------------+------------+
| test1 | 0.01562500 | 0 |
+------------+------------+------------+
1 row in set (0.00 sec)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。