Postgresql:表空间

postgresql对表空间的说明很简单,基于两点理由:

  • 扩展存储空间,跳出os对文件系统的大小限制,不断扩充可以空间
  • 让数据库管理员针对系统的应用特点....优化系统的性能。

 

postgresql的tablespace就是让postgresq使用的专用os目录(路径)。并没有什么神秘的地方。在一个逻辑文件系统上建立多个表空间没有多少意义,因为你不能控制逻辑文件系统里的单个文件

 

create tablespace tbl_name location 'os_dir_path_str';  --os_path必须是空的、postgresql帐号有权的目录。创建表空间的用户必须是superuser,创建完表空间之后,可以将表空间的create权限赋给普通用户使用!

 

指定表空间、默认表空间

  • 表空间的使用对象:表、index、数据库:在创建这些对象时,可以显式的指定tablespace tals_name子句指示对象使用的表空间;
  • 如果不指定,系统会使用当前有效的默认表空间。
  • 类似的,临时表和临时表的index、内部临时表:也有默认的临时表空间。指定临时表空间系统参数时,可以指定多个表空间,postgresql会随机使用它们
  • initdb.exe初始化的两个默认表空间pg_global、pg_default
  • 数据库默认的表空间pg_default 是用来存储系统目录对象、用户表、用户表index、和临时表、临时表index、内部临时表的默认空间。他是模板数据库template0和template1的默认表空间
  • 数据库默认的表空间pg_global是用来存储共享系统目录的默认空间
  • 数据库默认表空间可以在create database是通过 tablespace tbs_anme 子句来改变

 

 

表空间是和单个数据库无关的,他被所有的数据库使用。因此,表空间只有没有任何对象使用时,才能drop掉!

 

postgresql允许 通过符号链接 简化表空间的实施,那在不支持符号链接的os上就无法简化,只能显式的创建所需的表空间了!

posted on 2009-06-29 14:17  jinzhenshui  阅读(1686)  评论(0编辑  收藏  举报