分类: DB2/Informix
2012-12-15 14:01:27
1、创建数据库,使用automatic storage yes作为条件
db2 "create database testdb automatic storage yes on /dbauto dbpath on /database using codeset utf-8 territory cn collate using system";
2、创建完毕后,查看建立的目录中的文件,并和建立的表空间中的文件进行对应:
首先,查看全部的表空间,获得表空间的编号和名称:
其次,查看表空间容器和创建数据库时指定的dbauto和dbpath的对应关系:
系统编目表空间
对应的表空间容器:
临时表空间
对应的表空间容器:
用户表空间
对应的表空间容器:
通过上图的对应关系,可以看到,启用了automatic storage yes 建立的数据库,其默认原始建立的三个表空间,即:
系统编目表空间、系统临时表空间、用户表空间,都是指定在dbauto目录下的。事实上,自动存储管理,底层还是DMS和SMS,即对临时表空间使用SMS,对用户表空间和编目表空间,使用DMS管理。
3、对默认建立的DMS类型的表空间,进行扩容操作
由于SMS类型的表空间的空间控制是由操作系统控制的,所以只能对DMS类型的表空间进行扩容操作:
对用户表空间进行扩容操作:
发现不允许进行类似的操作。
由此证明了,使用automatic storage yes 建立的数据库,其默认建立的DMS表空间是自动管理的,不允许用户进行干预;
4、修改用户表空间,使用自定义的DMS 表空间代替
创建一个DMS类型的用户表空间:
查看目前的用户表空间:
删除原来的用户表空间USERSPACE1:
删除完毕后,查看表空间:
对这个表空间进行扩容:
扩容成功;
5、创建一个catalog编目表空间,并进行原来的编目表空间的替换:
尝试创建一个编目表空间替代原来的编目表空间:
不能 创建,这是因为编目表空间是在创建数据库时同时创建的;
经过以上测试,得出以下结论:
1、使用automatic storage yes创建的数据库,会在指定的dbauto的路径下建立三个默认表空间,且这样建立的DMS类型的表空间不能人为干预其大小(数据库管理);
2、使用automatic storage yes创建的数据库,手动建立的其他的DMS类型的数据库,只要不指定其为自动管理,都可以人工调整其大小;
3、使用automatic storage yes创建的数据库,允许建立自动管理的DMS类型的表空间;
4、使用automatic storage yes创建的数据库,其编目表空间是保存在文件夹下的,其大小会受限于操作系统的文件夹和数据文件的大小限额,所以,建议在创建生产库的时候,将编目表空间使用非自动管理的方式,建立到裸设备上,即得到良好的扩展性,也得到了比较好的性能。
综上,在建立测试库的时候,可以使用automatic storage yes创建的数据库;
但是,在建立生产库的时候,需要使用规划好的存储进行建立。