表空间(TABLESPACE),对数据库的初学者来说,好像不是很友好,概念不好理解。不像表和数据文件,大家的印象会比较深,而表空间是一个逻辑的东西,有点玄乎,不知道表空间是干什么用的。
国际惯例,先来一段“官方”解释:
在 DM 数据库中,表空间由一个或者多个数据文件组成。 DM 数据库中的所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中。
怎么样,是看懂了吗,还是越看越懵?
我们可以这样简化理解:
表空间,类似于操作系统里的一个个文件夹,里面的一个个文件就是表空间的“数据文件”,所有的“表数据”保存在这些文件中。当然,这里的文件夹就不支持嵌套了,毕竟没有“子表空间”。
不只是达梦,其它的常见数据库系统比如Oracle、DB2、MySQL、PostgreSQL等,也都有表空间的概念,作用都差不多。咦,SQL Server,你是从什么时候开始也有表空间的,记得之前没有啊?
达梦数据库有几个自带的表空间,初始化实例后就有了,分别为SYSTEM、ROLL、TEMP和MAIN表空间。其中,SYSTEM表空间很核心很神秘,宛如达梦的大脑,里面保存着数据库的机密;ROLL表空间里面是回滚段,保存着事务操作的数据前镜像,就是数据被真正修改之前,原始数据会复制一份到ROLL表空间去;TEMP表空间看名字就知道是个存放临时信息的地方,用于结果集排序及临时表等功能。还有个SYSAUX表空间,一般情况下见不着,只有启用了达梦数据库的快照功能后才会出现,禁用后随之自动消失。
这4个表空间一般由达梦数据库自行管理,我们就不用去太操心了。业务数据建议放在自建的用户表空间上,自带的MAIN表空间就是这样一个用于存放用户数据的默认地方。
HUGE表空间过于复杂,99%情况下用不着,就不介绍了。
表空间呢,建议专“人”专用喔,不同的业务用户建议自建专属表空间,就不要和其它用户抢地方了,也不要去抢MAIN的地盘。至于一些“老”DBA的经验,比如索引用单独的表空间,分区子表用单独的表空间等等,这些经验是不是还实用,仁者见仁智者见智。
但是分开了总不是个坏事,就是表空间一旦多起来了,管理上稍微麻烦点。
现在的数据库管理系统都比较智能了,再怎么也是经受过千锤百炼的,表空间一旦规划好了,创建好了,真的不需要花太多精力,日常注意下表空间的使用率,切记空间不要爆了。不然,啧啧,小心被拉出去祭天。
文章
阅读量
获赞