评估排序顺序错误

如果 ROS 数据未按投影的顺序正确排序,则依赖于已排序数据的查询结果就会不正确。如果您怀疑有或已经发现不正确的查询结果,则可以使用索引工具来检查 ROS 排序顺序。索引工具会对每个 ROS 行进行评估,以确定其排序是否正确。如果检查发现某行的顺序不正确,则它会向日志文件中写入一条错误消息以及未排序行的行号和内容。

查看错误

  1. 打开 indextool.log 文件。例如:

    $ cd VMart/v_check_node0001_catalog
    
  2. 查看包含 OID 编号和字符串 Sort Order Violation 的错误消息。例如:

    <INFO> ...on oid 45035996273723545: Sort Order Violation:
    
  3. 通过对 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
    --
    
  4. 通过查询 STORAGE_CONTAINERS 系统表,查找发生排序顺序违规的投影。使用等于 indextool.log 中所列 OID 值的 storage_oid。例如:

    => SELECT * FROM storage_containers WHERE storage_oid = 45035996273723545;