LightDB-X 在 13.8-22.4 版本中引入了一个新的 GUC 参数:lightdb_arch_mode
。这个参数是为了方便分布式模式的 LightDB-X 在使用 CREATE TABLE
时自动创建分布式表而设计的。
这个参数的基本信息:
属性 | 说明 |
---|---|
取值范围 | classic 或 dist |
默认值 | classic |
生效级别 | user (可通过 SET 直接更改,无需重启实例,立即影响当前 Session) |
取值说明 | classic : CREATE TABLE 建立本地表;dist : CREATE TABLE 会直接建立分布式表;在此模式下,要使用 CREATE LOCAL TABLE 建立本地表 |
关于生效级别可参考链接 pg_settings ,关于 context
字段取值的说明。
为了验证功能,在一套分布式 LightDB-X
中执行以下 SQL
语句:
set lightdb_arch_mode='dist';
-- set lightdb_arch_mode='classic';
create table test_dist (
id bigint not null primary key,
name varchar(32)
);
select
(select setting from pg_settings where name = 'lightdb_arch_mode') as lightdb_arch_mode,
(select count(*) from canopy_tables ct where table_name = 'test_dist'::regclass) as is_dist;
drop table test_dist;
当 set lightdb_arch_mode='dist'
时,我们得到的结果是:
lightdb_arch_mode is_dist
dist 1
说明创建了一个分布式的表。
当 set lightdb_arch_mode='classic'
,也就是默认的时候,我们得到的是:
lightdb_arch_mode is_dist
classic 0
说明创建了本地表。
当我们设置 set lightdb_arch_mode='dist'
,并且使用 CREATE LOCAL TABLE
进行建表的时候,我们会创建一个本地表,修改上述 SQL 并运行后得到:
lightdb_arch_mode is_dist
dist 0
说明我们创建的是本地表。