首页 > 数据库 > MySQL > 正文

MySQL5.6开始可以运用独立表空间 innodb_file_per_table=1

2024-07-24 12:34:37
字体:
来源:转载
供稿:网友
  MySQL5.6开始可以使用独立表空间:
  MySQL5.6
  innodb_file_per_table=1 #使用独立表空间,动态参数。(5.6默认OFF,5.7默认ON)
  
  1、drop/truncate table方式操作表空间能自动回收(磁盘空间)
 
   创建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、独立表空间下,可以自定义表的存储位置,(有时将部分热表放在不同的磁盘可有效地提升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;
 
  表大小: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';

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表