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)
示例
请参阅审核数据库大小。