表存储在哪个数据节点,如何在postgres-xl中查询



创建表时,不使用distribute子语句。

如果有2个节点,我如何查询表实际存储在哪里?

如果有两个表,并且它们属于同一个模式,它们会存储在不同的数据节点中吗?

来自文档:

If DISTRIBUTE BY is not specified, columns with UNIQUE constraint
will be chosen as the distribution key. If no such column is
specified, distribution column is the first eligible column 
in the definition. If no such column is found, then the table 
will be distributed by ROUNDROBIN.

在您的用例场景中,在不使用TO NODE nodename指令或指定分发方法的情况下创建表时,会在所有数据节点中创建该表,并通过哈希或循环在数据节点之间分发行。

您可以使用EXECUTE DIRECT(Postgres XL特有的SQL命令)查看数据节点中的行:

test_db=# CREATE TABLE test (id integer UNIQUE, name varchar(30) NULL);
CREATE TABLE
test_db=# insert into test (id, name) values (0,'0test');
INSERT 0 1
test_db=# insert into test (id, name) values (1,'1test');
INSERT 0 1
test_db=# insert into test (id, name) values (2,'2test');
INSERT 0 1
test_db=# insert into test (id, name) values (3,'3test');
INSERT 0 1
test_db=# EXECUTE DIRECT ON (datanode1) 'select * from test';
 id | name
----+-------
  1 | 1test
  2 | 2test
(2 rows)
test_db=# EXECUTE DIRECT ON (datanode2) 'select * from test';
 id | name
----+-------
  0 | 0test
  3 | 3test
(2 rows)

正如我刚才提到的,如果您使用TO NODE nodenameTO GROUP groupname

相关内容

  • 没有找到相关文章

最新更新