文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

mysql5.7 General tablespace使用说明

2024-04-02 19:55

关注

General tablespace

General tablespace 是一种共享的 innodb 表空间,有点类似 ibdata1 。可以在一个表空间数据文件下存储多张表,即使这些表来自不同的 schame 。

 

General tablespace 的优点

            类似系统表空间,可以存储多个 schema 下的多张表。

            与 file_per_table tablespace 相比, General tablespace 有潜在的内存的优点。这种方式存储表空间的元数据到内存中,可以减小内存消耗。

            General tablespace 可以将数据文件存在其它盘上。这样做的好处是,比如说我需要将几张热点表放到更快的存储盘上,就可以在更快的存储盘上创建 general tablespace ,将热点表放过去。

            General 支持所有的行格式,以及相关特性。

            数据表可以在 general tablespace 和 per_file_table  tablespace 之间来回移动。类似 Oracle 数据库的 move  table 。

 

创建 general tablespace 的语法

CREATE TABLESPACE tablespace_name

      ADD DATAFILE 'file_name'

      [FILE_BLOCK_SIZE = value]

        [ENGINE [=] engine_name]

注意为了避免 data directory 冲突,表空间建立在 data directory 子目录下是不被支持的。因为 datadir 子目录会被 mysql 认为是 database 。但是 general tablespace 可以建立在 datadir 下。 General tablespace 建立在非 datadir 目录下后, data directory 下会产生一个 .isl 文件,里面是详细路径。

            例如在 datadir 下面建一个 general tablespace , page_size 是 8k ,默认引擎 innodb :

mysql> create tablespace tbs01 add   datafile 'tbs01.ibd' file_block_size=8192 engine=innodb; 

Query OK, 0 rows affected (0.02 sec)

mysql> create tablespace tbs02 add   datafile '/u01/mysql/3306/general_tbs/tbs02.ibd' engine=innodb;         

Query OK, 0 rows affected (0.01 sec)

Isl 其实是路径:

[root@oradb-2062 data]# more tbs02.isl

/u01/mysql/3306/general_tbs/tbs02.ibd

           

Information_schema 下的 INNODB_SYS_TABLESPACES 表有这些表空间的元数据信息:

mysql> select   space,name,FLAG,FILE_FORMAT,PAGE_SIZE,SPACE_TYPE,FILE_SIZE,ALLOCATED_SIZE   from INNODB_SYS_TABLESPACES where name like 'tbs%'\G

*************************** 1. row   ***************************

           space: 61

            name: tbs01

            FLAG: 2089

     FILE_FORMAT: Barracuda

       PAGE_SIZE: 16384

      SPACE_TYPE: General

       FILE_SIZE: 65536

ALLOCATED_SIZE: 16384

*************************** 2. row   ***************************

           space: 63

            name: tbs02

            FLAG: 2048

     FILE_FORMAT: Any

       PAGE_SIZE: 16384

      SPACE_TYPE: General

       FILE_SIZE: 65536

ALLOCATED_SIZE: 32768

2 rows in set (0.00 sec)

 

General 表空间的使用

Tbs01 建表空间时指定 FILE_BLOCK_SIZE=8k

Tbs02 建表空间时没有指定 FILE_BLOCK_SIZE

FILE_BLOCK_SIZE 只有在存储压缩表的时候才能在建表空间的时候使用。否则建非压缩表会报错。也就是说 压缩表和非压缩表无法在同一个表空间中 。

mysql> create table tt(a int)   tablespace=tbs01;

ERROR 1478 (HY000): InnoDB: Tablespace   `tbs01` uses block size 8192 and cannot contain a table with physical page   size 16384

建压缩表是可以的。

mysql> create table tt(a int) tablespace=tbs01 ROW_FORMAT=COMPRESSED;

Query OK, 0 rows affected (0.02 sec)

同样地,也不能在 tbs02 中建压缩表

mysql> create table tt01(a int)   tablespace=tbs02 ROW_FORMAT=COMPRESSED;

ERROR 1478 (HY000): InnoDB: Tablespace   `tbs02` cannot contain a COMPRESSED table

mysql> create table tt01(a int)   tablespace=tbs02;

Query OK, 0 rows affected (0.01 sec)

将表空间中到的表移动到 file_per_table tablespace 。

mysql> alter table tt   tablespace=innodb_file_per_table;

Query OK, 0 rows affected (0.06 sec)

Records: 0  Duplicates: 0  Warnings: 0

 

mysql> alter table tt01   tablespace=innodb_file_per_table;

Query OK, 0 rows affected (0.04 sec)

Records: 0  Duplicates: 0  Warnings: 0

 

将一张 250 万的表从 file_per_table tablespace 移动到 general tablespace

mysql> alter table test02   tablespace=tbs02;

Query OK, 0 rows affected ( 9.41 sec )

Records: 0  Duplicates: 0  Warnings: 0

花了 9 秒多,说明这种移动大表还是很花时间的。

附,将表移动到系统表空间

ALTER TABLE test01 TABLESPACE  innodb_system;

 

删除表空间,注意表空间中有表的时候不能删除成功。

mysql> drop tablespace tbs02;

ERROR 1529 (HY000): Failed to drop   TABLESPACE tbs02

 

General tablespace 的限制

General tablespace 不支持临时表。

与系统表空间类似, truncate 或 drop table 只是标记空间为可用,但是不会还给操作系统。

MySQL 5.7.24 版本及之后的版本,不在支持将分区放到 general tablespace 中去了。

ALTER TABLE ... DISCARD TABLESPACE and ALTER TABLE ...IMPORT TABLESPACE 不支持 general tablespace 。



阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯