新建表后加载数据,怎么会和别的表(系统表)共用一个region?

按文档
https://docs.pingcap.com/zh/tidb/v4.0/sql-statement-split-region/#split-region-使用文档
中所述,默认配置会单独为新建表分配region。
目前在v3.0.20环境中新建一个表,然后使用tidb-lightning加载数据(30万行)后,使用show table regions命令找到所在的region id(只有一个region),然后使用curl http://tidb ip:10080/regions/region id,返回结果发现此region包括别的表中数据,请问这是什么原因?

mysql> show table person regions;
±----------±----------±--------±----------±----------------±--------±-----------±--------------±-----------±---------------------±-----------------+
| REGION_ID | START_KEY | END_KEY | LEADER_ID | LEADER_STORE_ID | PEERS | SCATTERING | WRITTEN_BYTES | READ_BYTES | APPROXIMATE_SIZE(MB) | APPROXIMATE_KEYS |
±----------±----------±--------±----------±----------------±--------±-----------±--------------±-----------±---------------------±-----------------+
| 2 | t_60_ | | 6 | 4 | 3, 6, 7 | 0 | 0 | 0 | 45 | 79339 |
±----------±----------±--------±----------±----------------±--------±-----------±--------------±-----------±---------------------±-----------------+
1 row in set (0.01 sec)

[tidb@controller ~]$ curl http://192.168.100.137:10080/regions/2
{
“region_id”: 2,
“start_key”: “dIAAAAAAAAAvX3KAAAAAAAYOSw==”,
“end_key”: null,
“frames”: [
{
“db_name”: “pingcap1”,
“table_name”: “person”,
“table_id”: 60,
“is_record”: true
},
{
“db_name”: “PERFORMANCE_SCHEMA”,
“table_name”: “global_status”,
“table_id”: 9223372036854775300,
“is_record”: true
},
{
“db_name”: “PERFORMANCE_SCHEMA”,
“table_name”: “session_status”,
“table_id”: 9223372036854775297,
“is_record”: true
},
。。。

4 个赞

PERFORMANCE_SCHEMA 是系统库啊
global_status 和session_status 记录一些状态信息

1 个赞

文档你应该参考3.X 的啊
4.X 和3.X 还是有很大差别的,
另外
“db_name”: “pingcap1”,
“table_name”: “person”,

有30W 的记录? 那表的设计结构是什么样的?

最后,你期望是什么样?

1 个赞

3.x一样,系统参数,看这个文档
https://docs.pingcap.com/zh/tidb/v3.0/tidb-configuration-file#split-table

虽然认为和表结构没有什么关系,还是贴一下:
mysql> desc person;
±------------±-------------±-----±-----±--------±---------------+
| Field | Type | Null | Key | Default | Extra |
±------------±-------------±-----±-----±--------±---------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | char(36) | YES | | NULL | |
| description | varchar(255) | YES | | NULL | |
| birthday | date | YES | | NULL | |
±------------±-------------±-----±-----±--------±---------------+
4 rows in set (0.00 sec)

是啊,所以迷惑。。。

按文档中split-table缺省值描述,我的期望是新建的表应该有自己的region,不能和别的表共用,另外有几个副本,相应副本的region也应该可以访问

查询接口显示的问题,那些内存表不存数据,所以实际数据还是只有一个表的。

拿是否可以认为是个缺陷?

是的。