此部分包含特定于 Vertica 的数据库管理函数。
数据库函数
- 1: CLEAR_RESOURCE_REJECTIONS
- 2: COMPACT_STORAGE
- 3: DUMP_LOCKTABLE
- 4: DUMP_PARTITION_KEYS
- 5: GET_CONFIG_PARAMETER
- 6: KERBEROS_CONFIG_CHECK
- 7: MEMORY_TRIM
- 8: RUN_INDEX_TOOL
- 9: PURGE
- 10: SECURITY_CONFIG_CHECK
- 11: SET_CONFIG_PARAMETER
- 12: SET_SPREAD_OPTION
- 13: SHUTDOWN
1 - CLEAR_RESOURCE_REJECTIONS
清除 RESOURCE_REJECTIONS 和 DISK_RESOURCE_REJECTIONS 系统表的内容。通常,只能在节点重新启动期间清除这些表。通过此函数,您可以在需要时随时清除这些表。例如,您可能想在解决导致磁盘资源拒绝的磁盘空间问题后清除系统表。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
不可变语法
CLEAR_RESOURCE_REJECTIONS();
超级用户
示例
以下命令可以清除 RESOURCE_REJECTIONS 和 DISK_RESOURCE_REJECTIONS 系统表的内容:
=> SELECT clear_resource_rejections();
clear_resource_rejections
---------------------------
OK
(1 row)
另请参阅
2 - COMPACT_STORAGE
将现有数据 (.fdb
) 和索引 (.pidx
) 文件捆绑为 .gt
文件格式。默认情况下,为使用 7.2 或更高版本创建的数据文件启用 .gt
格式。如果要升级早期版本的数据库,请使用 COMPACT_STORAGE
将存储文件捆绑为 .gt
格式。您的数据库可以继续以混合文件存储格式运行。
如果为 COMPACT_STORAGE
指定的设置与在配置参数 MaxBundleableROSSizeKB
中指定的限值不同,则 Vertica 不会更改自动创建的捆绑包的大小。
注意
请在需求小的期间运行此函数。这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
SELECT COMPACT_STORAGE ('[[[database.]schema.]object‑name]', min‑ros‑filesize‑kb, 'small‑or‑all‑files', 'simulate');
参数
-
[database.]schema
数据库和架构。默认架构为
public
。如果指定一个数据库,它必须是当前数据库。- object‑name
- 指定要捆绑的表或投影。如果设置为空字符串,COMPACT_STORAGE 将评估数据库中所有投影的数据以进行捆绑。
- min‑ros‑filesize‑kb
- 整数 ≥ 1,指定独立 ROS 文件的最小大小(以 KB 为单位)。COMPACT_STORAGE 可将低于此大小的存储容器 ROS 文件捆绑成一个文件。
- small‑or‑all‑files
- 以下几项之一:
-
small
:仅捆绑小于 min‑ros‑filesize‑kb 中所指定限值的文件 -
all
:捆绑小于 min‑ros‑filesize‑kb 中所指定限值的文件,并捆绑大型存储容器的.fdb
和.pidx
文件。
-
- simulate
- 指定是否模拟存储设置并生成描述这些设置的影响的报告。
-
true
:生成有关指定捆绑包设置(未实际捆绑存储文件)的影响的报告。 -
false
:按指定执行捆绑。
-
特权
超级用户存储和性能影响
捆绑可使文件系统中的文件数至少减少 50%,并提高文件密集型操作的性能。增强的操作包括备份、还原以及合并。
Vertica 创建小文件的原因包括以下几点:
-
表包含数百列。
-
分区范围较小(按分钟分区)。
-
启用了局部分段且系数设置为较高的值。
示例
以下示例描述了捆绑表 EMPLOYEES
的影响:
=> SELECT COMPACT_STORAGE('employees', 1024,'small','true');
Task: compact_storage
On node v_vmart_node0001:
Projection Name :public.employees_b0 | selected_storage_containers :0 |
selected_files_to_compact :0 | files_after_compact : 0 | modified_storage_KB :0
On node v_vmart_node0002:
Projection Name :public.employees_b0 | selected_storage_containers :1 |
selected_files_to_compact :6 | files_after_compact : 1 | modified_storage_KB :0
On node v_vmart_node0003:
Projection Name :public.employees_b0 | selected_storage_containers :2 |
selected_files_to_compact :12 | files_after_compact : 2 | modified_storage_KB :0
On node v_vmart_node0001:
Projection Name :public.employees_b1 | selected_storage_containers :2 |
selected_files_to_compact :12 | files_after_compact : 2 | modified_storage_KB :0
On node v_vmart_node0002:
Projection Name :public.employees_b1 | selected_storage_containers :0 |
selected_files_to_compact :0 | files_after_compact : 0 | modified_storage_KB :0
On node v_vmart_node0003:
Projection Name :public.employees_b1 | selected_storage_containers :1 |
selected_files_to_compact :6 | files_after_compact : 1 | modified_storage_KB :0
Success
(1 row)
3 - DUMP_LOCKTABLE
返回关于死锁的客户端及其等待的资源的信息。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
DUMP_LOCKTABLE()
特权
无
注意
如果 Vertica 失去响应,请使用 DUMP_LOCKTABLE:
-
打开其他 vsql 连接。
-
执行查询:
=> SELECT DUMP_LOCKTABLE();
输出被写入到 vsql。请参阅监控日志文件。
您还可以使用以下命令查看连接方:
=> SELECT * FROM SESSIONS;
使用以下命令关闭所有会话:
=> SELECT CLOSE_ALL_SESSIONS();
使用以下命令关闭单个会话:
=> SELECT CLOSE_SESSION('session_id');
您可以从 V_MONITOR.SESSIONS 系统表中获取到 session_id 值。
另请参阅
4 - DUMP_PARTITION_KEYS
转储系统中所有投影的分区键。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
DUMP_PARTITION_KEYS( )
特权
用户必须具有表的选择权限或架构的使用权限。
示例
=> SELECT DUMP_PARTITION_KEYS( );
Partition keys on node v_vmart_node0001
Projection 'states_b0'
Storage [ROS container]
No of partition keys: 1
Partition keys: NH
Storage [ROS container]
No of partition keys: 1
Partition keys: MA
Projection 'states_b1'
Storage [ROS container]
No of partition keys: 1
Partition keys: VT
Storage [ROS container]
No of partition keys: 1
Partition keys: ME
Storage [ROS container]
No of partition keys: 1
Partition keys: CT
另请参阅
5 - GET_CONFIG_PARAMETER
获取指定级别的配置参数的值。如果在该级别未设置任何值,此函数将返回一个空行。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
GET_CONFIG_PARAMETER( 'parameter-name' [, 'level' | NULL] )
参数
- parameter‑name
- 要获取的配置参数值的名称。
- 级别
- 要获取的 parameter‑name 设置的级别,为以下字符串值之一:
-
user
:当前用户 -
session
:当前会话 -
node-name:数据库节点的名称
如果 level 被忽略或设置为 NULL,则 GET_CONFIG_PARAMETER 将返回数据库设置。
-
特权
无
示例
获取数据库级别的 AnalyzeRowCountInterval 参数:
=> SELECT GET_CONFIG_PARAMETER ('AnalyzeRowCountInterval');
GET_CONFIG_PARAMETER
----------------------
3600
获取会话级别的 MaxSessionUDParameterSize 参数:
=> SELECT GET_CONFIG_PARAMETER ('MaxSessionUDParameterSize','session');
GET_CONFIG_PARAMETER
----------------------
2000
(1 row)
获取用户级别的 UseDepotForReads 参数:
=> SELECT GET_CONFIG_PARAMETER ('UseDepotForReads', 'user');
GET_CONFIG_PARAMETER
----------------------
1
(1 row)
另请参阅
6 - KERBEROS_CONFIG_CHECK
测试 Vertica 群集的 Kerberos 配置。如果此函数可以同时使用 keytab 文件和当前用户的凭据调用 kinit,则此函数将成功,否则将报告错误。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
KERBEROS_CONFIG_CHECK( )
参数
此函数没有参数。
特权
此函数不需要权限。
示例
以下示例显示了 Kerberos 配置有效时的结果。
=> SELECT KERBEROS_CONFIG_CHECK();
kerberos_config_check
-----------------------------------------------------------------------------
ok: krb5 exists at [/etc/krb5.conf]
ok: Vertica Keytab file is set to [/etc/vertica.keytab]
ok: Vertica Keytab file exists at [/etc/vertica.keytab]
[INFO] KerberosCredentialCache [/tmp/vertica_D4/vertica450676899262134963.cc]
Kerberos configuration parameters set in the database
KerberosServiceName : [vertica]
KerberosHostname : [data.hadoop.com]
KerberosRealm : [EXAMPLE.COM]
KerberosKeytabFile : [/etc/vertica.keytab]
Vertica Principal: [vertica/data.hadoop.com@EXAMPLE.COM]
[OK] Vertica can kinit using keytab file
[OK] User [bob] has valid client authentication for kerberos principal [bob@EXAMPLE.COM]]
(1 row)
7 - MEMORY_TRIM
调用 glibc 函数
malloc_trim()
,以从 malloc 中回收可用内存并将其返回给操作系统。删除操作的详细信息将被写入系统表
MEMORY_EVENTS
。
除非关闭内存轮询,否则 Vertica 会自动检测 glibc 在其分配区域中积累过量可用内存的情况。发生这种情况时,Vertica 会整合大部分内存并将其返回给操作系统。如果禁用内存轮询并希望手动减少 glibc 分配的内存,请调用此函数。
有关详细信息,请参阅内存修剪。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
MEMORY_TRIM()
特权
超级用户
示例
=> SELECT memory_trim();
memory_trim
-----------------------------------------------------------------
Pre-RSS: [378822656] Post-RSS: [372129792] Benefit: [0.0176675]
(1 row)
8 - RUN_INDEX_TOOL
在 Vertica 数据库上运行索引工具以执行以下任务之一:
-
对数据存储运行每块循环冗余检查 (CRC),以验证数据完整性。
-
检查 ROS 容器中的排列顺序是否正确。
此函数会将有关其操作的摘要信息写入标准输出;将结果的详细信息记录在当前节点的 vertica.log
中。有关评估工具输出的详细信息,请参阅:
您还可以通过 Linux 命令行对已关闭的数据库运行索引工具。有关详细信息,请参阅CRC 和排序顺序检查。
当心
请仅在 Vertica 支持的指导下使用此函数。这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
RUN_INDEX_TOOL ( 'taskType', global, '[projFilter]' [, numThreads ] );
参数
-
taskType
- 指定要运行的操作,为以下之一:
-
checkcrc
:对现有数据存储上的每个块运行循环冗余检查 (CRC),以检查 ROS 数据块的数据完整性。 -
checksort
:评估每个 ROS 行,以确定其排序是否正确。如果 ROS 数据未按投影的顺序正确排序,则依赖于已排序数据的查询结果就会不正确。
-
-
global
- 布尔值,指定在所有节点 (true) 还是当前节点 (false) 上运行指定任务。
-
projFilter
- 指定操作的范围:
-
空字符串 (
''
):对所有投影运行检查。 -
一个字符串,指定一个或多个投影,如下所示:
-
projection‑name:对此投影运行检查
-
projection‑prefix*
:对所有以字符串projection‑prefix
开头的投影运行检查。
-
-
-
numThreads
- 一个无符号(正)或带符号(负)整数,指定用于运行此操作的线程数:
-
n:线程数,≥1
-
-n
:负整数,表示所有 CPU 内核的一部分,如下所示:num‑cores / n
因此,
-1
表示所有内核,-2
表示一半内核,-3
表示所有内核的三分之一,依此类推。默认值: 1
-
特权
超级用户
优化性能
您可以通过设置以下两个参数来优化元函数性能:
-
projFilter:将操作范围缩小到一个或多个投影。
-
numThreads:指定用于执行函数的线程数。
9 - PURGE
从 ROS 存储容器中永久移除删除向量,以便可以重新使用磁盘空间。 PURGE
移除
Ancient History Mark 时期(含)之前的所有历史数据。
PURGE
不会删除临时表。
当心
PURGE
可以暂时使用大量磁盘空间。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
SELECT PURGE()
特权
-
表所有者
-
对架构的 USAGE 权限
示例
从 Vertica 表中删除数据后,该数据将被标记为删除。要查看标记为待删除的数据,请查询
DELETE_VECTORS
系统表。
运行 PURGE
以从 ROS 容器中移除删除向量。
=> SELECT * FROM test1;
number
--------
3
12
33
87
43
99
(6 rows)
=> DELETE FROM test1 WHERE number > 50;
OUTPUT
--------
2
(1 row)
=> SELECT * FROM test1;
number
--------
43
3
12
33
(4 rows)
=> SELECT node_name, projection_name, deleted_row_count FROM DELETE_VECTORS;
node_name | projection_name | deleted_row_count
------------------+-----------------+-------------------
v_vmart_node0002 | test1_b1 | 1
v_vmart_node0001 | test1_b1 | 1
v_vmart_node0001 | test1_b0 | 1
v_vmart_node0003 | test1_b0 | 1
(4 rows)
=> SELECT PURGE();
...
(Table: public.test1) (Projection: public.test1_b0)
(Table: public.test1) (Projection: public.test1_b1)
...
(4 rows)
Ancient History Mark (AHM) 推进后:
=> SELECT * FROM DELETE_VECTORS;
(No rows)
另请参阅
10 - SECURITY_CONFIG_CHECK
返回各种安全相关参数的状态。使用此函数可验证您的 TLS 配置的完整性。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
SECURITY_CONFIG_CHECK( 'db-component' )
参数
-
db-component
- 要检查的组件。目前,
NETWORK
是唯一受支持的组件。NETWORK
:返回 spread 加密、节点间 TLS 和客户端-服务器 TLS 的状态和参数。
示例
在此示例中,SECURITY_CONFIG_CHECK 显示已禁用 spread 加密和数据通道 TLS,因为 EncryptSpreadComm 已禁用且未配置 data_channel TLS CONFIGURATION。
同样,客户端-服务器 TLS 也被禁用,因为 TLS CONFIGURATION“服务器”具有服务器证书,但其 TLSMODE 被禁用。将 TLSMODE 设置为“Enable”可启用服务器模式客户端-服务器 TLS。有关详细信息,请参阅TLS 协议。
=> SELECT SECURITY_CONFIG_CHECK('NETWORK');
SECURITY_CONFIG_CHECK
----------------------------------------------------------------------------------------------------------------------
Spread security details:
* EncryptSpreadComm = []
Spread encryption is disabled
It is NOT safe to set/change other security config parameters while spread is not encrypted!
Please set EncryptSpreadComm to enable spread encryption first
Data Channel security details:
TLS Configuration 'data_channel' TLSMODE is DISABLE
TLS on the data channel is disabled
Please set EncryptSpreadComm and configure TLS Configuration 'data_channel' to enable TLS on the data channel
Client-Server network security details:
* TLS Configuration 'server' TLSMODE is DISABLE
* TLS Configuration 'server' has a certificate set
Client-Server TLS is disabled
To enable Client-Server TLS set a certificate on TLS Configuration 'server' and/or set the tlsmode to 'ENABLE' or higher
(1 row)
另请参阅
11 - SET_CONFIG_PARAMETER
在指定级别设置或清除配置参数。
重要
您只能使用此函数来设置具有字符串或整数值的配置参数。要设置接受其他数据类型的配置参数,请使用相应的 ALTER 语句。这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
SET_CONFIG_PARAMETER( 'param‑name', { param‑value | NULL}, ['level'| NULL])
参数
- param‑name
- 要设置的配置参数的名称。
- param‑value
- 要为 param‑name 设置的值,可以是字符串,也可以是整数。如果是字符串,则用单引号括起来;如果是整数,则单引号是可选的。
要在指定级别清除 param‑name,请将其设置为 NULL。
- 级别
- 要设置 param‑name 的级别,为以下字符串值之一:
-
user
:当前用户。 -
session
:当前会话,将覆盖数据库设置。 -
node-name:数据库节点的名称,将覆盖会话和数据库设置。
如果 level 被忽略或设置为 NULL,则会在数据库级别设置 param‑name。
-
注意
某些参数需要重新启动才能使参数值生效。特权
超级用户示例
在数据库级别将 AnalyzeRowCountInterval 参数设置为 3600:
=> SELECT SET_CONFIG_PARAMETER('AnalyzeRowCountInterval',3600);
SET_CONFIG_PARAMETER
----------------------------
Parameter set successfully
(1 row)
注意
使用 ALTER DATABASE 可以获得相同的结果:
ALTER DATABASE DEFAULT SET PARAMETER AnalyzeRowCountInterval = 3600;
在会话级别将 MaxSessionUDParameterSize 参数设置为 2000。
=> SELECT SET_CONFIG_PARAMETER('MaxSessionUDParameterSize',2000,'SESSION');
SET_CONFIG_PARAMETER
----------------------------
Parameter set successfully
(1 row)
另请参阅
12 - SET_SPREAD_OPTION
更改 spread 守护程序设置。此函数主要用于设置 spread 假设节点出现故障之前的超时。
注意
使用 SET_SPREAD_OPTION 更改 Spread 设置对群集的影响很小,因为当新设置在整个群集中传播时,它会暂停。正是由于这种延迟,因此 Spread 超时的更改不会立即在系统表SPREAD_STATE
中可见。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
SET_SPREAD_OPTION( option‑name, option‑value )
参数
- option‑name
- 包含要更改的 spread 守护程序设置的字符串。
目前,此函数仅支持一个选项:
TokenTimeout
. 此设置控制 spread 在假设消息丢失之前等待节点响应消息的时间。有关详细信息,请参阅调整虚拟环境的 Spread 守护程序超时。 - option‑value
- option‑name 的新设置。
示例
=> SELECT SET_SPREAD_OPTION( 'TokenTimeout', '35000');
NOTICE 9003: Spread has been notified about the change
SET_SPREAD_OPTION
--------------------------------------------------------
Spread option 'TokenTimeout' has been set to '35000'.
(1 row)
=> SELECT * FROM V_MONITOR.SPREAD_STATE;
node_name | token_timeout
------------------+---------------
v_vmart_node0001 | 35000
v_vmart_node0002 | 35000
v_vmart_node0003 | 35000
(3 rows);
另请参阅
13 - SHUTDOWN
关闭 Vertica 数据库。默认情况下,如果有任何用户连接,则关闭失败。您可以在
vertica.log
文件中查看关闭操作的状态。
在 Eon 模式下,您可以调用 SHUTDOWN_WITH_DRAIN 来执行优雅关闭,此操作会排空客户端连接,然后关闭数据库。
提示
在调用 SHUTDOWN 之前,您可以关闭所有当前用户连接并阻止其他的连接尝试,如下所示:
-
暂时将配置参数 MaxClientSessions 设置为 0。
-
调用 CLOSE_ALL_SESSIONS 以关闭所有非 dbamin 连接。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
SHUTDOWN ( [ 'false' | 'true' ] )
参数
- false
- 默认,如果用户已连接并中止关闭,则返回消息。
- true
- 强制数据库关闭,以禁用其他连接。
超级用户
示例
以下命令尝试关闭数据库。由于用户已连接,命令失败:
=> SELECT SHUTDOWN('false');
NOTICE: Cannot shut down while users are connected
SHUTDOWN
-----------------------------
Shutdown: aborting shutdown
(1 row)