数据库表空间是什么,其与数据表的关系
发布网友
发布时间:2022-04-23 03:18
我来回答
共3个回答
热心网友
时间:2022-04-10 07:48
没有特别关系。
表空间是物理的文件。为了方便管理数据以及优化系统
,设很多表空间。
表是系统的逻辑单位。
你可以把表转移到不相同的表空间里面。
热心网友
时间:2022-04-10 09:06
表空间就是给用户以及表、数据等一个存储的空间
数据库安装完毕后会有一些默认的表空间,如system、temp等
当然你可以通过
create
tablespace
命令来创建属于自己的表空间。
热心网友
时间:2022-04-10 10:41
系统表空间
在 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:无法做到自动收缩磁盘空间,造成很大的空间浪费。即使它包含的表都被删掉,这部分空间也不会自动释放。
原因 2:扩容时,单表分离速度慢。
系统表空间在无*增大导致磁盘满需要扩容时,无法快速的把表从系统表空间里分离出来,必须得经过停服务;改配置;扩容;重新导入数据;启服务等步骤方才可行。
原因 3:多张表的数据写入顺序写。
对多张表的写入数据依然是顺序写,这就致使 MySQL 发布了单表空间来解决这两个问题。