此部分包含用于监控 Vertica 许可证状态和合规性的函数。
许可证函数
- 1: AUDIT
- 2: AUDIT_FLEX
- 3: AUDIT_LICENSE_SIZE
- 4: AUDIT_LICENSE_TERM
- 5: DISPLAY_LICENSE
- 6: GET_AUDIT_TIME
- 7: GET_COMPLIANCE_STATUS
- 8: SET_AUDIT_TIME
1 - AUDIT
返回在审核数据库大小时计算的数据库、架构或表的原始数据大小(以字节为单位)。除非指定容错为 0,置信水平为 100%,否则 AUDIT
将仅返回可能随多次迭代不断变化的近似结果。
AUDIT
使用与 Vertica 相同的数据采样方法估计 Vertica 表中的数据大小,以确定数据库是否符合许可的数据库大小限额。Vertica 不使用这些结果来确定数据库的大小是否符合 Vertica 许可证的数据限额。有关详细信息,请参阅审核数据库大小。
对于基于 ORC 或 Parquet 格式存储在外部表中的数据,AUDIT 使用数据文件的总大小。永远不会估计此值,此值是从存储 ORC 或 Parquet 文件的文件系统(或者 Vertica 节点的本地文件系统、S3 或 HDFS)中读取的。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
AUDIT('[[[database.]schema.]scope ]'[, 'granularity'] [, error‑tolerance[, confidence‑level]] )
参数
-
[database.]schema
数据库和架构。默认架构为
public
。如果指定一个数据库,它必须是当前数据库。-
scope
- 指定审核范围:
-
空字符串 (
''
) 将审核整个数据库。 -
要审核的架构或表的名称。
要审核的架构或表。要审核数据库,请将此参数设置为空字符串。
-
-
granularity
- 审核报告其结果的级别,为以下字符串之一:
-
database
-
schema
-
table
粒度级别必须等于或小于 scope 的粒度。如果忽略此参数,粒度将设置为与 scope 相同的级别。因此,如果
online_sales
为架构,则以下语句相同:AUDIT('online_sales', 'schema'); AUDIT('online_sales');
如果
AUDIT
将粒度设置为低于目标对象的级别,则会返回一条消息,推荐您使用系统表USER_AUDITS
。有关详细信息,请参阅下文的查询 V_CATALOG.USER_AUDITS。 -
-
error‑tolerance
- 指定审核评估中允许的误差幅度百分比。以 0 与 100 之间的十进制数输入一个公差值。对于 5% 的误差幅度,默认值为 5。
此实参不会影响基于 ORC 或 Parquet 文件的外部表的审核。对这些表的审核始终返回底层数据文件的实际大小。
将此值设置为 0 将导致全面数据库审核,由于
AUDIT
会分析整个数据库,因此会占用大量资源。Vertica 不建议对生产数据库执行全面的数据库审核,这会显著影响性能。当心
由于审核过程会使用迭代采样,将容错设置为占一个百分点的一小部分(例如,0.00001)会导致AUDIT
运行的周期比全面数据库审核更长。指定的此值越低,执行的数据采样越多,审核使用的资源也会越多。 -
confidence‑level
- 指定估计的统计置信水平百分比。以 0 与 100 之间的十进制数输入置信值。默认值为 99,表示置信水平为 99%。
此实参不会影响基于 ORC 或 Parquet 文件的外部表的审核。对这些表的审核始终返回底层数据文件的实际大小。
置信度值越高,执行的数据采样越多,函数使用的资源也会越多。将此值设置为 100 将导致全面数据库审核,由于该函数会分析所有数据库,因此会占用大量资源。Vertica 不建议对生产数据库执行全面的数据库审核,这会显著影响性能。
特权
超级用户,或以下权限:
-
对目标表的 SELECT 权限
-
对目标架构的 USAGE 权限
注意
如果审核架构或数据库,Vertica 将仅返回您在审核对象中有权访问的所有对象的大小,如上所述。查询 V_CATALOG.USER_AUDITS
如果 AUDIT
将粒度设置为低于目标对象的级别,则会返回一条消息,推荐您使用系统表
USER_AUDITS
。要获取指定粒度对象的审核数据,请查询该表。例如,以下查询试图审核 store
架构中的所有表:
=> SELECT AUDIT('store', 'table');
AUDIT
-----------------------------------------------------------
See table sizes in v_catalog.user_audits for schema store
(1 row)
下一个查询将查询 USER_AUDITS
并获取这些表的最新审核结果:
=> SELECT object_name, AVG(size_bytes)::int size_bytes, MAX(audit_start_timestamp::date) audit_start
FROM user_audits WHERE object_schema='store'
GROUP BY rollup(object_name) HAVING GROUPING_ID(object_name) < 1 ORDER BY GROUPING_ID();
object_name | size_bytes | audit_start
-------------------+------------+-------------
store_dimension | 22067 | 2017-10-26
store_orders_fact | 27201312 | 2017-10-26
store_sales_fact | 301260170 | 2017-10-26
(3 rows)
示例
请参阅审核数据库大小。
2 - AUDIT_FLEX
返回 __raw__
列的估计 ROS 大小,等同于审核对象中 Flex 数据的导出大小。您可以审核数据库中的所有 Flex 数据,或将审核范围缩小到特定的 Flex 表、投影或架构。Vertica 将审核结果存储在系统表
USER_AUDITS
中。
审核不包括以下内容:
-
Flex 键
-
审核表中的其他列。
-
临时 Flex 表
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
AUDIT_FLEX ('[scope]')
参数
- scope
- 指定审核范围:
-
空字符串 (
''
) 表示将审核数据库中的所有 Flex 表。 -
架构、投影或 Flex 表的名称。
-
特权
超级用户,或以下权限:
-
对目标表的 SELECT 权限
-
对目标架构的 USAGE 权限
注意
如果审核架构或数据库,Vertica 将仅返回您在审核对象中有权访问的所有对象的大小,如上所述。示例
审核当前数据库中的所有 Flex 表:
dbs=> select audit_flex('');
audit_flex
------------
8567679
(1 row)
审核架构 public
中的 Flex 表:
dbs=> select audit_flex('public');
audit_flex
------------
8567679
(1 row)
审核投影 bakery_b0
中的 Flex 数据:
dbs=> select audit_flex('bakery_b0');
audit_flex
------------
8566723
(1 row)
审核 Flex 表 bakery
:
dbs=> select audit_flex('bakery');
audit_flex
------------
8566723
(1 row)
为了报告 USER_AUDITS
中保存的所有审核的结果,下面显示系统表中的扩展显示部分,其中显示在名为 test
的架构以及整个数据库 dbs
上运行的审核:
dbs=> \x
Expanded display is on.
dbs=> select * from user_audits;
-[ RECORD 1 ]-------------------------+------------------------------
size_bytes | 0
user_id | 45035996273704962
user_name | release
object_id | 45035996273736664
object_type | SCHEMA
object_schema |
object_name | test
audit_start_timestamp | 2014-02-04 14:52:15.126592-05
audit_end_timestamp | 2014-02-04 14:52:15.139475-05
confidence_level_percent | 99
error_tolerance_percent | 5
used_sampling | f
confidence_interval_lower_bound_bytes | 0
confidence_interval_upper_bound_bytes | 0
sample_count | 0
cell_count | 0
-[ RECORD 2 ]-------------------------+------------------------------
size_bytes | 38051
user_id | 45035996273704962
user_name | release
object_id | 45035996273704974
object_type | DATABASE
object_schema |
object_name | dbs
audit_start_timestamp | 2014-02-05 13:44:41.11926-05
audit_end_timestamp | 2014-02-05 13:44:41.227035-05
confidence_level_percent | 99
error_tolerance_percent | 5
used_sampling | f
confidence_interval_lower_bound_bytes | 38051
confidence_interval_upper_bound_bytes | 38051
sample_count | 0
cell_count | 0
-[ RECORD 3 ]-------------------------+------------------------------
...
3 - AUDIT_LICENSE_SIZE
触发数据库大小的立即审核,以确定它是否符合 Vertica 许可证中的原始数据存储限额。
如果使用存储在 HDFS 中的 ORC 或 Parquet 数据,则仅当您以有权访问所有 HDFS 数据的用户身份运行此函数时,结果才准确。使用对所有此类数据具有读取权限的主体,或使用授予此访问权限的 Hadoop 委派令牌运行查询。有关使用委派令牌的详细信息,请参阅访问已进行 Kerberize 的 HDFS 数据。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
AUDIT_LICENSE_SIZE()
超级用户
示例
=> SELECT audit_license_size();
audit_license_size
--------------------
Raw Data Size: 0.00TB +/- 0.00TB
License Size : 10.00TB
Utilization : 0%
Audit Time : 2015-09-24 12:19:15.425486-04
Compliance Status : The database is in compliance with respect to raw data size.
License End Date: 2015-11-23 00:00:00 Days Remaining: 60.53
(1 row)
4 - AUDIT_LICENSE_TERM
触发立即审核,以确定 Vertica 许可证是否已过期。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
AUDIT_LICENSE_TERM()
超级用户
示例
=> SELECT audit_license_term();
audit_license_term
--------------------
Raw Data Size: 0.00TB +/- 0.00TB
License Size : 10.00TB
Utilization : 0%
Audit Time : 2015-09-24 12:19:15.425486-04
Compliance Status : The database is in compliance with respect to raw data size.
License End Date: 2015-11-23 00:00:00 Days Remaining: 60.53
(1 row)
5 - DISPLAY_LICENSE
返回 Vertica 许可证的期限。此函数显示的信息为:
-
许可证的有效期开始日期和结束日期(如果许可证没有到期日,则显示“永久”(Perpetual))。
-
许可证期限到期后,可继续使用 Vertica 的天数(宽限期)
-
在许可证包含数据限额的情况下,数据库可以存储的数据量。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
DISPLAY_LICENSE()
特权
无
示例
=> SELECT DISPLAY_LICENSE();
DISPLAY_LICENSE
---------------------------------------------------
Vertica Systems, Inc.
2007-08-03
Perpetual
500GB
(1 row)
6 - GET_AUDIT_TIME
报告自动审核数据库大小的时间。如果您的 Vertica 许可证包含数据大小限额,Vertica 将执行此审核。有关此审核的详细信息,请参阅《管理员指南》中的管理许可证。要更改审核运行的时间,请使用 SET_AUDIT_TIME 函数。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
GET_AUDIT_TIME()
特权
无
示例
=> SELECT get_audit_time();
get_audit_time
-----------------------------------------------------
The audit is scheduled to run at 11:59 PM each day.
(1 row)
7 - GET_COMPLIANCE_STATUS
显示您的数据库是否符合 Vertica 许可证协议要求。此信息包括 Vertica 最近对数据库大小的审核结果(如果您的许可证条款中具有数据限额)、许可证期限(如果您的许可证具有结束日期)和节点数(如果您的许可证具有节点限制)。
GET_COMPLIANCE_STATUS
按 TB 衡量数据限额(其中 1 TB 等于 10244 字节)。
GET_COMPLIANCE_STATUS
显示的信息包括:
-
数据库的估计大小(有关大小估计的说明,请参阅审核数据库大小)。
-
Vertica 许可证所允许的原始数据大小。
-
您的数据库目前使用的限额百分比。
-
节点数和许可证限制。
-
上次审核的日期和时间。
-
您的数据库是否符合许可证协议的数据限额条款。
-
许可证的结束日期。
-
许可证到期之前的天数。
注意
如果您的许可证未设置数据限额、结束日期或节点限制,某些值可能不会显示在GET_COMPLIANCE_STATUS
的输出中。
如果审核显示您的许可证不符合数据限额要求,应该删除数据以使数据库大小低于许可的数量,或升级您的许可证。如果您的许可证已到期,应该立即联系 Vertica 以续订许可证。有关更多详细信息,请参阅管理许可证。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
GET_COMPLIANCE_STATUS()
特权
无
示例
=> SELECT GET_COMPLIANCE_STATUS();
get_compliance_status
--------------------
Raw Data Size: 0.00TB +/- 0.00TB
License Size : 10.00TB
Utilization : 0%
Audit Time : 2015-09-24 12:19:15.425486-04
Compliance Status : The database is in compliance with respect to raw data size.
License End Date: 2015-11-23 00:00:00 Days Remaining: 60.53
(1 row)
以下示例显示了 Vertica for SQL on Apache Hadoop 群集的输出。
=> SELECT GET_COMPLIANCE_STATUS();
get_compliance_status
--------------------
Node count : 4
License Node limit : 5
No size-compliance concerns for an Unlimited license
No expiration date for a Perpetual license
(1 row)
8 - SET_AUDIT_TIME
设置 Vertica 执行自动数据库大小审核的时间,以确定数据库大小是否符合 Vertica 许可证中的原始数据限额。如果当前计划在数据库活动高峰期进行审核,请使用此函数。这通常不是问题,因为自动审核对数据库性能几乎没有影响。
审核是由上一次审核计划的,因此更改审核时间不会影响下一次计划的审核。例如,如果您计划在晚上 11:59 进行下一次审核,然后您使用 SET_AUDIT_TIME 将审核计划更改为凌晨 3 点,则之前计划的晚上 11:59 的审核仍会运行。该审核完成后,它将计划在凌晨 3 点进行下一次审核。
即使使用 SET_AUDIT_TIME 更改审核时间,然后通过发出语句 SELECT AUDIT_LICENSE_SIZE 触发自动审核,Vertica 也会始终执行下一次计划的审核。只有在下一次计划的审核完成之后,Vertica 才会在您使用 SET_AUDIT_TIME 设置的新时间开始审核。此后,Vertica 在新时间进行审核。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
SET_AUDIT_TIME(time)
time
- 包含
'HH:MM AM/PM'
格式的时间的字符串(例如,'1:00 AM'
),表示审核每天的运行时间。
超级用户
示例
=> SELECT SET_AUDIT_TIME('3:00 AM');
SET_AUDIT_TIME
-----------------------------------------------------------------------
The scheduled audit time will be set to 3:00 AM after the next audit.
(1 row)