评估排序顺序错误
如果 ROS 数据未按投影的顺序正确排序,则依赖于已排序数据的查询结果就会不正确。如果您怀疑有或已经发现不正确的查询结果,则可以使用索引工具来检查 ROS 排序顺序。索引工具会对每个 ROS 行进行评估,以确定其排序是否正确。如果检查发现某行的顺序不正确,则它会向日志文件中写入一条错误消息以及未排序行的行号和内容。
查看错误
-
打开
indextool.log
文件。例如:$ cd VMart/v_check_node0001_catalog
-
查看包含 OID 编号和字符串
Sort Order Violation
的错误消息。例如:<INFO> ...on oid 45035996273723545: Sort Order Violation:
-
通过对
indextool.log
运行grep
,查找有关排序顺序违规字符串的详细信息。例如,以下命令将返回每个字符串前面的行 (-B1
) 以及后面的四行 (-A4
) :[15:07:55][vertica-s1]: grep -B1 -A4 'Sort Order Violation:' /my_host/databases/check/v_check_node0001_catalog/indextool.log
2012-06-14 14:07:13.686 unknown:0x7fe1da7a1950 [EE] <INFO> An error occurred when running index tool thread on oid 45035996273723537: Sort Order Violation: Row Position: 624 Column Index: 0 Last Row: 2576000 This Row: 2575000 -- 2012-06-14 14:07:13.687 unknown:0x7fe1dafa2950 [EE] <INFO> An error occurred when running index tool thread on oid 45035996273723545: Sort Order Violation: Row Position: 3 Column Index: 0 Last Row: 4 This Row: 2 --
-
通过查询
STORAGE_CONTAINERS
系统表,查找发生排序顺序违规的投影。使用等于indextool.log
中所列 OID 值的storage_oid
。例如:=> SELECT * FROM storage_containers WHERE storage_oid = 45035996273723545;