返回首页

gbase数据、南大通用产品文档:GBase8s磁盘布局准则

更新日期:2024年09月11日

有效磁盘布局具有以下典型目标:

限制磁盘头的移动

减少磁盘争用

平衡负载

最大化可用性
您必须在设计磁盘布局时对这些目标作一些折中。例如,将系统目录表、逻辑日志和物理
日志分开可以帮助减少对这些资源的争用。然而,此操作也会增加必须执行系统复原的机
率。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 179 -
数据库空间和块准则
本主题列出了磁盘布局的一些常规策略,这些策略不需要有关特定数据库特征的任何信
息:

将磁盘分区与块关联并为根数据库空间分配至少一个附加块。
已经分区的磁盘可能需要使用偏移量。 有关详细信息,请参阅在 UNIX 上分配原
始磁盘空间。
提示: 有了块的 4 太字节的最大大小的限制,您可以通过为每个磁盘驱动器指定
块来避免进行分区。

为关键数据库空间(根数据库空间、包含逻辑日志和逻辑日志文件的数据库空间)
建立镜像。还可为使用率高的数据库和表建立镜像。
可以在数据库空间级别上指定镜像。对于所有属于数据库空间的块来说,镜像可以
打开也可以关闭。在不同的磁盘上定位主要和镜像数据库空间。理论上,不同的控
制器将处理不同的磁盘。

在多个磁盘上分布临时表并将文件排序。
要为临时表和排序文件定义数个数据库空间,可使用 onspaces -t。 当在不同的磁盘
上放置这些数据库空间并将它们列在 DBSPACETEMP 配置参数中时,可以展开与
临时表相关联的 I/O 并在多个磁盘上对文件进行排序。有关使用 DBSPACETEMP
配置参数或环境变量的信息,请参阅《GBase 8s 管理员参考》中有关配置参数的章
节。

将物理日志保留在根数据库空间中,而将逻辑日志从根数据库空间移出。然而,如
果您计划将系统目录存储在根数据库空间中,请将物理日志移至另一个数据库空
间。
有关日志存储的位置的建议,请参阅指定物理日志的位置和逻辑日志文件的位置。
另请参阅将逻辑日志文件移至另一个数据库空间和更改物理日志的位置和大小。

要提高备份与复原的性能,请执行以下操作:
o
将系统目录与它们跟踪的数据集群起来。
o
如果使用 ON-Bar 对高速磁带机执行并行备份,请将这些数据库存储在多个小
数据库空间中。
有关附加的性能建议,请参阅《GBase 8s 备份与复原指南》。
表位置准则
本主题将列出用于优化磁盘布局的一些策略,前提是数据库中存在有关表的某些特征。您
可以使用表分段存储通过更高程度的控制来实现这些策略中的许多策略:

隔离独立磁盘上使用率高的表。
要在其自身的磁盘设备上隔离使用率高的表,请将该设备指定给一个块,然后将
同一个块指定给数据库空间。最后,将使用频繁的表放置在刚使用 CREAT
TABLE 的 IN dbspace 选项创建的数据库空间中。
要显示对每个块的 I/O 操作级别,请运行 onstat -g iof 选项。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 180 -

将使用率高的表在多个磁盘上分段。

将有关的表在数据库空间中分组。
如果包含数据库空间的设备发生故障,该数据库空间中的所有表都是不可访问
的。然而,其他数据库空间中的表将仍然可以访问。尽管在包含关键信息的数据
库空间发生故障时必须执行冷复原,然而如果只是非关键的数据库空间发生故
障,那么只须执行热复原即可。

将使用率高的表放置在磁盘的中间分区上。

优化表扩展数据块的大小。
有关 onstat 选项的信息,请参阅《GBase 8s 管理员参考》。

功能描述
修改表空间的属性。
注意事项
只有表空间的所有者或者被授予了表空间ALTER 权限的用户有权限执行ALTER
TABLESPACE 命令,系统管理员默认拥有此权限。但要修改表空间的所有者,当前用户必
须是该表空间的所有者或系统管理员,且该用户是新所有者角色的成员。
要修改表空间的所有者A 为B,则A 必须是B 的直接或者间接成员。
说明:如果new_owner 与old_owner 一致,
此处不再校验当前执行操作的用户是
否具有修改权限,而直接显示ALTER 成功。
语法格式

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
779
重命名表空间的语法。
ALTER TABLESPACE tablespace_name
RENAME TO new_tablespace_name;
设置表空间所有者的语法。
ALTER TABLESPACE tablespace_name
OWNER TO new_owner;
设置表空间属性的语法。
ALTER TABLESPACE tablespace_name
SET ( {tablespace_option = value} [, ... ] );
重置表空间属性的语法。
ALTER TABLESPACE tablespace_name
RESET ( { tablespace_option } [, ...] );
设置表空间限额的语法。
ALTER TABLESPACE tablespace_name
RESIZE MAXSIZE { UNLIMITED | 'space_size'};
参数说明

tablespace_name
要修改的表空间。
取值范围:已存在的表空间名。

new_tablespace_name
表空间的新名称。
新名称不能以“PG_”开头。
取值范围:字符串,符合标识符命名规范。

new_owner
表空间的新所有者。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
780
取值范围:已存在的用户名。

tablespace_option
设置或者重置表空间的参数。
取值范围:
seq_page_cost:设置优化器计算一次顺序获取磁盘页面的开销。缺省为1.0。
random_page_cost:设置优化器计算一次非顺序获取磁盘页面的开销。缺省为4.0。
说明:
random_page_cost 是相对于seq_page_cost 的取值,等于或者小于
seq_page_cost 时毫无意义。
默认值为4.0 的前提条件是,优化器采用索引来扫描表数据,并且表数据在cache 中命
中率可以90%左右。
如果表数据空间要比物理内存小,那么减小该值到一个适当水平;相反地,如果表数据
在cache 中命中率要低于90%,那么适当增大该值。
如果采用了类似于SSD 的随机访问代价较小的存储器,可以适当减小该值,以反映真
正的随机扫描代价。
value 的取值范围:正的浮点类型。

RESIZE MAXSIZE
重新设置表空间限额的数值。
取值范围:
UNLIMITED,该表空间不设置限额。
由space_size 来确定,其格式参考CREATE TABLESPACE。
说明:若调整后的限额值比当前表空间实际使用的值要小,调整操作可以执行成
功,
后续用户需要将该表空间的使用值降低到新限额值之下,
才能继续往该表空间中写入数
据。
修改参数MAXSIZE 时也可使用:
ALTER TABLESPACE tablespace_name RESIZE MAXSIZE
{ 'UNLIMITED' | 'space_size'};

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
781

示例
请参考CREATE TABLESPACE 的示例。
相关命令
CREATE TABLESPACE,DROP TABLESPACE

这个参数被传给所有3 个函数,它指向一个UDF_INIT 结构,被用来在函数之间
传递信息。UDF_INIT 结构成员列在下面。初始化函数应该初始化它想要改变的
任何成员。对一个成员使用缺省值,不改变它。
my_bool maybe_null
如果func()能返回NULL,func_init()应该设置maybe_null 为1。如果任何一个参
数被声明为maybe_null,缺省值是1。
unsigned int decimals
小数位数目。缺省值是在被传给主函数的参数中小数位的最大数目。(例如,如
果函数传递1.11、1.111 和1.1,缺省值将是3,因为1.111 有3 个小数位。
unsigned int max_length
返回结果的最大长度。缺省值不同,取决于函数的结果类型。对字符串函数,缺
省是最长的参数的长度。对整数函数,缺省是21 位。对实数函数,缺省是13 加
上由initid->decimals 指出的小数位数。对数字函数,长度包括任何符号位或小数
点字符。
char *ptr
函数可以自己使用的一个指针。例如,函数能使用initid->ptr 在函数之间传递分
配的内存。在func_init()中,分配内存并将它赋给这个指针:

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1394
initid->ptr = allocated_memory;
说明
在func()和func_deinit()中,使用initid->ptr 并释放内存。