为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
【概述】场景+问题概述
pre_split_regions 必须小于或等于 shard_row_id_bits。
测试如下:
让pre_split_regions 大于 shard_row_id_bits,能够成功创建表
mysql> create table t22 (a int, b int) shard_row_id_bits = 9 pre_split_regions=20;
Query OK, 0 rows affected (0.12 sec)
查看表结构,发现自动把PRE_SPLIT_REGIONS的值降低了。
mysql> show create table t22;
±------±-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
±------±-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t22 | CREATE TABLE t22
(
a
int(11) DEFAULT NULL,
b
int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin/*!90000 SHARD_ROW_ID_BITS=9 PRE_SPLIT_REGIONS=9 */ |
±------±-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
但是我通过修改SHARD_ROW_ID_BITS的值,可以变相的让pre_split_regions 大于 shard_row_id_bits。 那此时的结果算正常吗?
mysql> ALTER TABLE t22 SHARD_ROW_ID_BITS = 4;
Query OK, 0 rows affected (0.09 sec)
mysql> show create table t22;
±------±-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
±------±-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t22 | CREATE TABLE t22
(
a
int(11) DEFAULT NULL,
b
int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin/*!90000 SHARD_ROW_ID_BITS=4 PRE_SPLIT_REGIONS=9 */ |
±------±-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
另外一个问题:我把shard_row_id_bits=20,但是创建出来的等于15(32768个分片范围),不能再继续增大了,这个是为什么呢?
mysql> create table t333(a int) shard_row_id_bits=20;
Query OK, 0 rows affected (0.09 sec)
mysql> show create table t333;
±------±---------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
±------±---------------------------------------------------------------------------------------------------------------------------------------------+
| t333 | CREATE TABLE t333
(
a
int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin/*!90000 SHARD_ROW_ID_BITS=15 */ |
±------±---------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
【背景】做过哪些操作
【现象】业务和数据库现象
【业务影响】
【TiDB 版本】
【附件】
- 相关日志 和 监控
-
TiUP Cluster Display 信息
-
TiUP Cluster Edit Config 信息
-
TiDB- Overview 监控
- 对应模块日志(包含问题前后1小时日志)