为何我的表大小还不到自动分裂触发值就分区了呢?

oceanbase 4.3.5.3

根据https://www.oceanbase.com/demo/tablet-split-sql-test 模拟自动分裂,创建了4万条数据,占用了大约100M的空间,但是实际auto_split_tablet_size为2G,为何就会触发自动分裂了呢?

分裂配置:

  1. alter system set enable_auto_split = true;
  2. 默认auto_split_tablet_size为2G

创建表结构:
CREATE TABLE sbtest1(
id int AUTO_INCREMENT,
k INTEGER DEFAULT ‘0’ NOT NULL,
c CHAR(120) DEFAULT ‘’ NOT NULL,
pad CHAR(60) DEFAULT ‘’ NOT NULL,
primary key (id)
) partition by range(id) (
partition p0
values
less than (MAXVALUE)
);

分裂前查看表结构:


分裂后查看表结构:

分裂后的表大小和分区大小:


1 个赞

查询下默认值SHOW PARAMETERS LIKE ‘auto_split_tablet_size’;

通过show create table sbtest1里面的size(‘39MB’),但是我在创建表的时候并没有指定这个size的值,而且默认的auto_split_tablet_size为2G,通过https://www.oceanbase.com/demo/tablet-split-sql-test 模拟复现的,很奇怪这个值怎么出来的?

这边未复现出39mb的场景,建议你使用本地的集群测试下,可能是体验测试环境有差异

应该是模拟环境的问题,在本地环境未能复现