审核数据库大小
您可以一直使用 Vertica 软件,直到列式数据达到许可证协议允许的最大原始数据大小。Vertica 会定期对列式数据大小运行审核,以确认您的数据库是否符合此协议。还可以使用两个函数运行自己的数据库大小审核:
-
AUDIT:估算数据库、架构或表的原始数据大小。
-
AUDIT_FLEX:估算数据库、架构或投影中的一个或多个 Flex 表的大小。
以下两个示例审核数据库和一个架构:
=> SELECT AUDIT('', 'database');
AUDIT
----------
76376696
(1 row)
=> SELECT AUDIT('online_sales', 'schema');
AUDIT
----------
35716504
(1 row)
原始数据大小
AUDIT 和 AUDIT_FLEX 使用统计抽样来估算表中所存储数据(即数据库中存储的未压缩数据)的原始数据大小。对于大部分数据类型,Vertica 在评估原始数据大小时,会假定数据是以文本格式从数据库中导出来的,而不是以压缩数据形式。有关详细信息,请参阅评估数据类型占用空间。
通过使用统计抽样,审核功能会将它对数据库性能的影响降至最低。准确度和性能影响之间只能在一个很小的误差范围内进行权衡。数据库大小报告中包含误差范围,所以您可以对估算的准确性进行评估。
还会审核基于 ORC 和 Parquet 的外部表中的数据,无论它们是存储在本地 Vertica 群集的文件系统中,还是存储在远程 S3 或 Hadoop 群集中。AUDIT 始终使用底层数据文件的文件大小作为表中的数据量。例如,假定您有一个基于存储在 HDFS 中的 1GB ORC 文件的外部表,对该表进行审核后,报告该表的大小为 1GB。
注意
Vertica 审核不会验证这些文件是否包含实际的 ORC 或 Parquet 数据,而只是检查与外部表定义相对应的文件的大小。未经审核的数据
出现在多个投影中的表数据只计数一次。审核也不包括以下数据:
-
临时表数据。
-
SET USING 列中的数据。
-
可通过外部表定义访问的非列式数据。ORC 和 Parquet 等列式格式的数据计入总数。
-
已删除但尚未清除的数据。
-
存储在系统和工作表中的数据,例如,监控表、 数据收集器表以及 Database Designer 表。
-
分隔符。
评估数据类型占用空间
Vertica 按如下方式评估不同数据类型的占用空间:
-
使用 UTF-8 编码的字符串和二进制类型(CHAR、VARCHAR、BINARY、VARBINARY)按实际字节数进行计数。
-
数值数据类型按它们打印时的内容进行求值。每个位数计作一个字节,小数点、符号或科学记数法也是如此。例如,
-123.456
按八个字节(六个数字加一个小数点和一个减号)计数。 -
日期/时间数据类型按它们转换为文本后的内容(包括任何连字符、空格和冒号)进行求值。例如,vsql 将时间戳值
2011-07-04 12:00:00
打印为 19 个字符或 19 个字节。 -
复杂类型的求值结果等于其各个组成部分的大小之和。数组计数为所有元素的总大小,ROW 计数为所有字段的总大小。
控制审核准确度
AUDIT 可以指定审核的容错度和置信度,默认情况下分别设置为 5% 和 99%。例如,可以通过将容错度和置信水平分别设置为 0% 和 100% 来获得高水平的审核准确度。与使用统计抽样估算原始数据大小不同,Vertica 将所有经过审核的数据转储为原始格式计算其大小。
当心
Vertica 不建议在此级别进行数据库范围的审核。这样做会对数据库性能产生显著的不利影响。以下示例以 25% 的容错度审核数据库:
=> SELECT AUDIT('', 25);
AUDIT
----------
75797126
(1 row)
以下示例以 25% 的容错度和 90% 的置信水平审核数据库:
=> SELECT AUDIT('',25,90);
AUDIT
----------
76402672
(1 row)