查看数据库中都有哪些表空间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查看数据库中都有哪些表空间相关的知识,希望对你有一定的参考价值。

一、系统表空间
mysql 数据目录下有一个名为 ibdata1 的文件,可以保存一张或者多张表。
923275 12M -rw-r----- 1 mysql mysql 12M 3月 18 10:42 ibdata1
这个文件就是 MySQL 的系统表空间文件,默认为 1 个,可以有多个,只需要在配置文件 my.cnf 里面这样定义即可。
innodb_data_file_path=ibdata1:200M;ibdata2:200M:autoextend:max:800M系统表空间不仅可以是文件系统组成的文件,也可以是非文件系统组成的磁盘块,比如裸设备,定义也很简单innodb_data_file_path=/dev/nvme0n1p1:3Gnewraw;/dev/nvme0n1p2:2Gnewraw
系统表空间里都有些啥内容?
具体内容包括:double writer buffer、 change buffer、数据字典(MySQL 8.0 之前)、表数据、表索引。
那 MySQL 为什么现在主流版本默认都不是系统表空间?
究其原因,系统表空间有三个最大的缺点:原因 1:无法做到自动收缩磁盘空间,造成很大的空间浪费。即使它包含的表都被删掉,这部分空间也不会自动释放。
二、单表空间
单表空间不同于系统表空间,每个表空间和表是一一对应的关系,每张表都有自己的表空间。具体在磁盘上表现为后缀为 .ibd 的文件。比如表 t1,对应的表空间文件为 t1.ibd917107 96K -rw-r----- 1 mysql mysql 96K 3月 18 16:13 t1.ibd

单表空间如何应用到具体的表呢?
有两种方式:方式 1:在配置文件中开启。在配置文件中开启单表空间设置参数 innodb_filer_per_table,这样默认对当前库下所有表开启单表空间。innodb_file_per_table=1另外也可以直接建表时指定单表空间mysql> create table t1 (id int, r1 char(36)) tablespace innodb_file_per_table;
Query OK, 0 rows affected (0.04 sec)
单表空间除了解决之前说的系统表空间的几个缺点外,还有其他的优点,详细如下:
1. truncate table 操作比其他的任何表空间都快;
2. 可以把不同的表按照使用场景指定在不同的磁盘目录;
比如日志表放在慢点的磁盘,把需要经常随机读的表放在 SSD 上等。
mysql> create table ytt_dedicated (id int) data directory = '/var/lib/mysql-files';
Query OK, 0 rows affected (0.04 sec)3. 可以用 optimize table 来收缩或者重建经常增删改查的表。一般过程是这样的:建立和原来表一样的表结构和数据文件,把真实数据复制到临时文件,再删掉原始表定义和数据文件,最后把临时文件的名字改为和原始表一样的。
三、通用表空间
通用表空间先是出现在 MySQL Cluster 里,也就是 NDB 引擎。从 MySQL 5.7 引入到 InnoDB 引擎。通用表空间和系统表空间一样,也是共享表空间。每个表空间可以包含一张或者多张表,也就是说通用表空间和表之间是一对多的关系。
参考技术A use
数据库名
show
tables就能看到这个库中所有的表
或者更直接一点,你到mysql
的data文件夹下看看,有多少个文件夹就有多少个库,看看有多少个不同的文件名,就有多少个表

如何查看SQL表中都存在哪些约束?

比如查看数据库中存在哪些表可以用 use master select * FROM SYSOBJECTS;
那么查询表A都有哪些约束,该如何查找?求教,谢谢!

参考技术A select c.* from sys.sysobjects o,sys.sysconstraints c where o.name='A' and o.id=c.id 参考技术B select c.* from sys.sysobjects o,sys.sysconstraints c where o.name='A' and o.id=c.id 参考技术C alt+F1就可以查看该表的表结构以及各种约束 参考技术D SQL语句是没有的 只有通过工具来查看 第5个回答  2011-11-28 打开数据库设计就看到了啊

以上是关于查看数据库中都有哪些表空间的主要内容,如果未能解决你的问题,请参考以下文章

oracle怎么查看表空间里都有哪些表

查看db2数据库都有哪些表空间i

oracle创建表空间的方法都有哪些

hive中如何查看A库中都有哪些表?这表里都有哪些列?

如何查看mysql数据库中都有哪些表

如何查看mysql数据库中都有哪些表?