ALTER_LOCATION_SIZE
仅限 Eon 模式
调整子群集中一个节点或所有节点或者数据库中所有节点的 存储库大小。
重要
减小存储库的大小可能会增加对存储库的争用,并且需要进行频繁的逐出操作。此行为可能会增加路由到公共存储以进行处理的查询和加载操作的数量,这可能会导致性能下降和访问费用增加。这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
不可变语法
ALTER_LOCATION_SIZE( 'location', '[target]', 'size')
参数
-
location
- 指定要调整大小的位置,为以下之一:
-
depot
:调整节点当前存储库的大小。 -
存储库在 Linux 文件系统中的绝对路径。如果更改多个节点上的存储库大小并指定路径,则所有受影响节点上的路径必须相同。默认情况下,并非如此,因为节点的名称通常是此路径。例如,
verticadb
数据库中节点 1 的默认存储库路径为/vertica/data/verticadb/v_verticadb_node0001_depot
。
-
-
目标值
- 要更改存储库的一个或多个节点,为以下之一:
-
节点名称:调整指定节点的大小。
-
子群集名称:调整指定子群集中所有节点的存储库大小。
-
空字符串:调整数据库中所有存储库的大小。
-
-
size
仅当存储位置使用类型设置为
DEPOT
时才有效,指定存储库可以从存储位置的文件系统中分配的最大磁盘空间量。您可以通过两种方式指定 size:
-
integer%
:存储位置的磁盘大小所占的百分比。 -
integer{K|M|G|T}
:以千字节、兆字节、千兆字节或太字节为单位的存储位置的磁盘大小。
重要
存储库大小不能超过其所在文件系统磁盘空间的 80%。如果指定的值太大,Vertica 会发出警告并自动将该值更改为文件系统大小的 80%。-
特权
超级用户示例
将所有节点的存储库大小增加到文件系统的 80%:
=> SELECT node_name, location_label, location_path, max_size, disk_percent FROM storage_locations WHERE location_usage = 'DEPOT' ORDER BY node_name;
node_name | location_label | location_path | max_size | disk_percent
------------------+-----------------+-------------------------+-------------+--------------
v_vmart_node0001 | auto-data-depot | /home/dbadmin/verticadb | 36060108800 | 70%
v_vmart_node0002 | auto-data-depot | /home/dbadmin/verticadb | 36059377664 | 70%
v_vmart_node0003 | auto-data-depot | /home/dbadmin/verticadb | 36060108800 | 70%
(3 rows)
=> SELECT alter_location_size('depot', '','80%');
alter_location_size
---------------------
depotSize changed.
(1 row)
=> SELECT node_name, location_label, location_path, max_size, disk_percent FROM storage_locations WHERE location_usage = 'DEPOT' ORDER BY node_name;
node_name | location_label | location_path | max_size | disk_percent
------------------+-----------------+-------------------------+-------------+--------------
v_vmart_node0001 | auto-data-depot | /home/dbadmin/verticadb | 41211552768 | 80%
v_vmart_node0002 | auto-data-depot | /home/dbadmin/verticadb | 41210717184 | 80%
v_vmart_node0003 | auto-data-depot | /home/dbadmin/verticadb | 41211552768 | 80%
(3 rows)
将 analytics 子群集中所有节点的存储库大小更改为文件系统大小的 75%:
=> SELECT subcluster_name, subclusters.node_name, storage_locations.max_size, storage_locations.disk_percent FROM subclusters INNER JOIN storage_locations ON subclusters.node_name = storage_locations.node_name WHERE storage_locations.location_usage='DEPOT';
subcluster_name | node_name | max_size | disk_percent
--------------------+----------------------+----------------------------
default_subcluster | v_verticadb_node0001 | 25264737485 | 60%
default_subcluster | v_verticadb_node0002 | 25264737485 | 60%
default_subcluster | v_verticadb_node0003 | 25264737485 | 60%
analytics | v_verticadb_node0004 | 25264737485 | 60%
analytics | v_verticadb_node0005 | 25264737485 | 60%
analytics | v_verticadb_node0006 | 25264737485 | 60%
analytics | v_verticadb_node0007 | 25264737485 | 60%
analytics | v_verticadb_node0008 | 25264737485 | 60%
analytics | v_verticadb_node0009 | 25264737485 | 60%
(9 rows)
=> SELECT ALTER_LOCATION_SIZE('depot','analytics','75%');
ALTER_LOCATION_SIZE
---------------------
depotSize changed.
(1 row)
=> SELECT subcluster_name, subclusters.node_name, storage_locations.max_size, storage_locations.disk_percent FROM subclusters INNER JOIN storage_locations ON subclusters.node_name = storage_locations.node_name WHERE storage_locations.location_usage='DEPOT';
subcluster_name | node_name | max_size | disk_percent
--------------------+----------------------+----------------------------
default_subcluster | v_verticadb_node0001 | 25264737485 | 60%
default_subcluster | v_verticadb_node0002 | 25264737485 | 60%
default_subcluster | v_verticadb_node0003 | 25264737485 | 60%
analytics | v_verticadb_node0004 | 31580921856 | 75%
analytics | v_verticadb_node0005 | 31580921856 | 75%
analytics | v_verticadb_node0006 | 31580921856 | 75%
analytics | v_verticadb_node0007 | 31580921856 | 75%
analytics | v_verticadb_node0008 | 31580921856 | 75%
analytics | v_verticadb_node0009 | 31580921856 | 75%
(9 rows)