这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

数据库函数

此部分包含特定于 Vertica 的数据库管理函数。

1 - CLEAR_RESOURCE_REJECTIONS

清除 RESOURCE_REJECTIONSDISK_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:

  1. 打开其他 vsql 连接。

  2. 执行查询:

    => 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 和排序顺序检查

这是元函数。您必须在顶级 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 不会删除临时表。

这是元函数。您必须在顶级 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

在指定级别设置或清除配置参数

这是元函数。您必须在顶级 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)

在会话级别将 MaxSessionUDParameterSize 参数设置为 2000。

=> SELECT SET_CONFIG_PARAMETER('MaxSessionUDParameterSize',2000,'SESSION');
    SET_CONFIG_PARAMETER
----------------------------
 Parameter set successfully
(1 row)

另请参阅

12 - SET_SPREAD_OPTION

更改 spread 守护程序设置。此函数主要用于设置 spread 假设节点出现故障之前的超时。

这是元函数。您必须在顶级 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 来执行优雅关闭,此操作会排空客户端连接,然后关闭数据库。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

SHUTDOWN ( [ 'false' | 'true' ] )

参数

false
默认,如果用户已连接并中止关闭,则返回消息。
true
强制数据库关闭,以禁用其他连接。

超级用户

示例

以下命令尝试关闭数据库。由于用户已连接,命令失败:

=> SELECT SHUTDOWN('false');
NOTICE:  Cannot shut down while users are connected
          SHUTDOWN
-----------------------------
 Shutdown: aborting shutdown
(1 row)

另请参阅

SESSIONS