region如何查看数据散发情况

1、请问下:tidb如何查看region上存放那些数据?

2、我现在一个表有四个region,但是我想知道这一万数据是不是都散发到不同的region上了呢

可以看下 show table regions 的命令或者 curl http://{TiDBIP}:{TiDB_PORT}/tables/{db}/{table}/regions 能否满足你的需求。

您好,通过这些命令只能查看region分布情况,其实我想看每个region上存储了那些数据或者是否有数据,通过那个属性可以看出来呢

1、查看 region 存储了哪些数据,可以通过每个 region 的 start_key 和 end_key 来确定数据是否在这个 region 区间内,但是没有没有提供相应的视图来查看。可以通过下述的命令简单的来确定,示例如下:

1)通过curl http://{TiDBIP}:10080/schema/{db}/{table}得到tableID

2)得到handle

3)把tableID和handle都转换成8字节的十六进制表示

tableID = 1935 => \x80\x00\x00\x00\x00\x00\x07\x8f

handle = 539578 => \x80\x00\x00\x00\x00\x08\x3b\xba

然后拼成t\x80\x00\x00\x00\x00\x00\x07\x8f_r\x80\x00\x00\x00\x00\x08\x3b\xba

4)然后用pd-ctl

region key --format=raw “t\x80\x00\x00\x00\x00\x00\x07\x8f_r\x80\x00\x00\x00\x00\x08\x3b\xba”

2、查看是否有数据目前没有相应的数据库视图,可以通过下面的命令简单的确认下:

pd-ctl --pd “http://pd_ip:pd_port” -d region | jq “.regions | map(select(.approximate_size < 20 and .approximate_keys < 200000)) | length”

查看 region 中 key 小于 2w 或者 region 小于 20M 的 region

您好:我通过执行命令:curl http://{TiDBIP}:10080/schema/{db}/{table},得到结果如下: { “id”: 55, “name”: { “O”: “emp_test2”, “L”: “emp_test2” }, “charset”: “utf8mb4”, “collate”: “utf8mb4_bin”, “cols”: [ { “id”: 1, “name”: { “O”: “id”, “L”: “id” }, “offset”: 0, “origin_default”: null, “default”: null, “default_bit”: null, “generated_expr_string”: “”, “generated_stored”: false, “dependences”: null, “type”: { “Tp”: 8, “Flag”: 4101, “Flen”: 64, “Decimal”: 0, “Charset”: “binary”, “Collate”: “binary”, “Elems”: null }, “state”: 5, “comment”: “唯一id”, “version”: 2 }, { “id”: 2, “name”: { “O”: “user_id”, “L”: “user_id” }, “offset”: 1, “origin_default”: null, “default”: null, “default_bit”: null, “generated_expr_string”: “”, “generated_stored”: false, “dependences”: null, “type”: { “Tp”: 8, “Flag”: 0, “Flen”: 20, “Decimal”: 0, “Charset”: “binary”, “Collate”: “binary”, “Elems”: null }, “state”: 5, “comment”: “用户id”, “version”: 2 }, { “id”: 3, “name”: { “O”: “user_name”, “L”: “user_name” }, “offset”: 2, “origin_default”: null, “default”: null, “default_bit”: null, “generated_expr_string”: “”, “generated_stored”: false, “dependences”: null, “type”: { “Tp”: 15, “Flag”: 0, “Flen”: 200, “Decimal”: 0, “Charset”: “utf8mb4”, “Collate”: “utf8mb4_bin”, “Elems”: null }, “state”: 5, “comment”: “用户名称”, “version”: 2 }, { “id”: 4, “name”: { “O”: “room_id”, “L”: “room_id” }, “offset”: 3, “origin_default”: null, “default”: null, “default_bit”: null, “generated_expr_string”: “”, “generated_stored”: false, “dependences”: null, “type”: { “Tp”: 15, “Flag”: 0, “Flen”: 150, “Decimal”: 0, “Charset”: “utf8mb4”, “Collate”: “utf8mb4_bin”, “Elems”: null }, “state”: 5, “comment”: “房间号”, “version”: 2 }, { “id”: 5, “name”: { “O”: “room_name”, “L”: “room_name” }, “offset”: 4, “origin_default”: null, “default”: null, “default_bit”: null, “generated_expr_string”: “”, “generated_stored”: false, “dependences”: null, “type”: { “Tp”: 15, “Flag”: 0, “Flen”: 200, “Decimal”: 0, “Charset”: “utf8mb4”, “Collate”: “utf8mb4_bin”, “Elems”: null }, “state”: 5, “comment”: “房间名称”, “version”: 2 }, { “id”: 6, “name”: { “O”: “target_id”, “L”: “target_id” }, “offset”: 5, “origin_default”: null, “default”: null, “default_bit”: null, “generated_expr_string”: “”, “generated_stored”: false, “dependences”: null, “type”: { “Tp”: 8, “Flag”: 0, “Flen”: 20, “Decimal”: 0, “Charset”: “binary”, “Collate”: “binary”, “Elems”: null }, “state”: 5, “comment”: “目标id”, “version”: 2 }, { “id”: 7, “name”: { “O”: “target_name”, “L”: “target_name” }, “offset”: 6, “origin_default”: null, “default”: null, “default_bit”: null, “generated_expr_string”: “”, “generated_stored”: false, “dependences”: null, “type”: { “Tp”: 15, “Flag”: 0, “Flen”: 200, “Decimal”: 0, “Charset”: “utf8mb4”, “Collate”: “utf8mb4_bin”, “Elems”: null }, “state”: 5, “comment”: “目标名称”, “version”: 2 }, { “id”: 8, “name”: { “O”: “status”, “L”: “status” }, “offset”: 7, “origin_default”: null, “default”: null, “default_bit”: null, “generated_expr_string”: “”, “generated_stored”: false, “dependences”: null, “type”: { “Tp”: 3, “Flag”: 0, “Flen”: 2, “Decimal”: 0, “Charset”: “binary”, “Collate”: “binary”, “Elems”: null }, “state”: 5, “comment”: “1、待审核 2、审核通过 3审核失败 4已隐藏 5作废”, “version”: 2 }, { “id”: 9, “name”: { “O”: “message”, “L”: “message” }, “offset”: 8, “origin_default”: null, “default”: null, “default_bit”: null, “generated_expr_string”: “”, “generated_stored”: false, “dependences”: null, “type”: { “Tp”: 15, “Flag”: 0, “Flen”: 2000, “Decimal”: 0, “Charset”: “utf8mb4”, “Collate”: “utf8mb4_bin”, “Elems”: null }, “state”: 5, “comment”: “弹幕信息”, “version”: 2 }, { “id”: 10, “name”: { “O”: “send_time”, “L”: “send_time” }, “offset”: 9, “origin_default”: null, “default”: “CURRENT_TIMESTAMP”, “default_bit”: null, “generated_expr_string”: “”, “generated_stored”: false, “dependences”: null, “type”: { “Tp”: 12, “Flag”: 128, “Flen”: 19, “Decimal”: 0, “Charset”: “binary”, “Collate”: “binary”, “Elems”: null }, “state”: 5, “comment”: “发送弹幕时间”, “version”: 2 }, { “id”: 11, “name”: { “O”: “sensitivity_level”, “L”: “sensitivity_level” }, “offset”: 10, “origin_default”: null, “default”: null, “default_bit”: null, “generated_expr_string”: “”, “generated_stored”: false, “dependences”: null, “type”: { “Tp”: 3, “Flag”: 0, “Flen”: 2, “Decimal”: 0, “Charset”: “binary”, “Collate”: “binary”, “Elems”: null }, “state”: 5, “comment”: “敏感度级别: 1一级 2二级 3三级 4四级”, “version”: 2 }, { “id”: 12, “name”: { “O”: “create_id”, “L”: “create_id” }, “offset”: 11, “origin_default”: null, “default”: null, “default_bit”: null, “generated_expr_string”: “”, “generated_stored”: false, “dependences”: null, “type”: { “Tp”: 8, “Flag”: 0, “Flen”: 20, “Decimal”: 0, “Charset”: “binary”, “Collate”: “binary”, “Elems”: null }, “state”: 5, “comment”: “创建人id”, “version”: 2 }, { “id”: 13, “name”: { “O”: “create_time”, “L”: “create_time” }, “offset”: 12, “origin_default”: null, “default”: “CURRENT_TIMESTAMP”, “default_bit”: null, “generated_expr_string”: “”, “generated_stored”: false, “dependences”: null, “type”: { “Tp”: 12, “Flag”: 128, “Flen”: 19, “Decimal”: 0, “Charset”: “binary”, “Collate”: “binary”, “Elems”: null }, “state”: 5, “comment”: “创建时间”, “version”: 2 }, { “id”: 14, “name”: { “O”: “update_id”, “L”: “update_id” }, “offset”: 13, “origin_default”: null, “default”: null, “default_bit”: null, “generated_expr_string”: “”, “generated_stored”: false, “dependences”: null, “type”: { “Tp”: 8, “Flag”: 0, “Flen”: 20, “Decimal”: 0, “Charset”: “binary”, “Collate”: “binary”, “Elems”: null }, “state”: 5, “comment”: “修改人id”, “version”: 2 }, { “id”: 15, “name”: { “O”: “update_time”, “L”: “update_time” }, “offset”: 14, “origin_default”: null, “default”: “CURRENT_TIMESTAMP”, “default_bit”: null, “generated_expr_string”: “”, “generated_stored”: false, “dependences”: null, “type”: { “Tp”: 12, “Flag”: 128, “Flen”: 19, “Decimal”: 0, “Charset”: “binary”, “Collate”: “binary”, “Elems”: null }, “state”: 5, “comment”: “更新时间”, “version”: 2 }, { “id”: 16, “name”: { “O”: “message_uniq_id”, “L”: “message_uniq_id” }, “offset”: 15, “origin_default”: null, “default”: null, “default_bit”: null, “generated_expr_string”: “”, “generated_stored”: false, “dependences”: null, “type”: { “Tp”: 15, “Flag”: 0, “Flen”: 200, “Decimal”: 0, “Charset”: “utf8mb4”, “Collate”: “utf8mb4_bin”, “Elems”: null }, “state”: 5, “comment”: “消息唯一id”, “version”: 2 } ], “index_info”: [ { “id”: 1, “idx_name”: { “O”: “id_uniq_index”, “L”: “id_uniq_index” }, “tbl_name”: { “O”: “”, “L”: “” }, “idx_cols”: [ { “name”: { “O”: “id”, “L”: “id” }, “offset”: 0, “length”: -1 } ], “is_unique”: true, “is_primary”: false, “state”: 5, “comment”: “”, “index_type”: 1 } ], “fk_info”: null, “state”: 5, “pk_is_handle”: false, “comment”: “弹幕信息表”, “auto_inc_id”: 0, “max_col_id”: 16, “max_idx_id”: 1, “update_timestamp”: 413422351452209160, “ShardRowIDBits”: 5, “max_shard_row_id_bits”: 5, “pre_split_regions”: 5, “partition”: null, “compression”: “”, “view”: null, “version”: 3 }

我想问下:tableid对应的是id,哪个handle对应的是哪个呢?

  • handle 是指:
    • 如果主键是 int 类型,则是主键
    • 如果不是,则是我们的隐藏字段,_tidb_rowid

嗯嗯,我们表不是主键id,用的就是隐藏_tidb_rowid,这个_tidb_rowid如何查询呢?

  • select _tidb_rowid from test; 这种。

你好,烦请问下: 把tableID和handle都转换成8字节的十六进制表示

tableID = 1935 => \x80\x00\x00\x00\x00\x00\x07\x8f

这个有工具在线转化吗?或者有对应的java程序可否丢一个,谢谢!

参考

通过工具可以直接转换,目前没有直接提供 java 的转换程序

能否给个工具地址,我试试,谢谢!

:+1::+1::+1: