我可以发出 sql 查询来检测数据库是否支持托管吗?我想检查一下数据库或表是否将共置属性设置为 ON 或 OFF、true/false…我目前有一个脚本创建 3 个表,其中一个通常会失败,结果告诉我是否数据库支持coloc(目前,甚至不确定它是否万无一失......)。是否可以将此属性“外部化”到某些 SQL 表或视图,或者可能已经是这种情况了。
有一个名为
yb_table_properties
的函数应该会有所帮助(请参阅下面的 is_colocated
列)
yugabyte=# CREATE DATABASE c with COLOCATION = true;
CREATE DATABASE
yugabyte=# \c c
You are now connected to database "c" as user "yugabyte".
c=# CREATE TABLE t (c1 INT);
CREATE TABLE
c=# SELECT * FROM yb_table_properties('t'::regclass);
num_tablets | num_hash_key_columns | is_colocated | tablegroup_oid | colocation_id
-------------+----------------------+--------------+----------------+---------------
1 | 0 | t | 16392 | 1639512673
(1 row)
还有一个函数
yb_is_database_colocated
,您可以运行它来确定您连接的数据库是否位于同一位置:
c=# SELECT yb_is_database_colocated();
yb_is_database_colocated
--------------------------
t
(1 row)
c=# \c yugabyte
You are now connected to database "yugabyte" as user "yugabyte".
yugabyte=# SELECT yb_is_database_colocated();
yb_is_database_colocated
--------------------------
f
(1 row)