Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


集群全局存储-SYS_GSTORES

📄字数 2.0K
👁️阅读量 加载中...

功能描述

SYS_GSTORES系统表用于管理虚谷数据库全局存储信息。

  • 全局存储系统表用于管理虚谷数据库拥有存储资源对象全局存储信息,包括存储的状态、分布、密钥等。
  • 全局存储通过链式管理,单向链支持快速定位首尾存储号。
  • 全局存储拥有1-3个版本局部存储,通过{(NODE_ID1,STORE_NO1),(NODE_ID2,STORE_NO2),(NODE_ID3,STORE_NO3)}记载分布信息,(0,0)表示此版本不存在。

字段说明

序号字段名类型说明V11V12
0GSTO_NOINTEGER全局存储号
1HEAD_NOINTEGER当前全局存储对应的头块存储号
2TAIL_NOINTEGER当前全局存储对应的尾块存储号
3NEXT_NOINTEGER当前全局存储对应的下一个全局存储号
4SPLIT_NUMINTEGER分裂计数值
5STORE_STAINTEGER存储状态
6STORE_NUMINTEGER副本个数
7NODE_ID1INTEGER第一版本节点ID
8NODE_ID2INTEGER第二版本节点ID
9NODE_ID3INTEGER第三版本节点ID
10STORE_NO1INTEGER第一版本局部存储号
11STORE_NO2INTEGER第二版本局部存储号
12STORE_NO3INTEGER第三版本局部存储号
13LSNBIGINT存储变更号(同版本号或变更次数)
14DB_IDINTEGER所属库ID
15OBJ_IDINTEGER所属表对象ID(存储为大对象或索引时,此处依然记载所属表ID)
16ENCRY_IDINTEGER密钥ID×
17ZONE_IDINTEGER存储所属区域号×
18NODEIDINTEGER节点ID×

STORE_STA

STORE_STA用于指示所有版本状态,按位使用由低到高标记第一、第二、第三版本状态信息,每个版本存在4态,如下表:

信息状态
00不存在
01主版本
10副版本
11无效版本

存储状态速查表

第三版本第二版本第一版本STORE_STA十进制
0000000
0000011
0000102
0000113
01101127
01111131
10011139
10100141
10110145
11011155
11100157
11111163

gsto_no分配

gsto_no分配V12
系统堆表gsto_no[2,38],[52,54],[57,60]
系统表索引gsto_no[70,96]
大对象字段gsto_no[42,50]
用户表gsto_no(200,~)

注意

用户表gsto从201开始分配。

应用举例

  • 查看哈希分区表的gsto_no
sql
-- 新建一张哈希分区表,共10个分区
SQL> CREATE TABLE tab_hash(id INT PRIMARY KEY,
          c2 CHAR(1),
          c3 VARCHAR,
          c4 INT,
          c5 BIGINT,
          c6 FLOAT,
          c7 DOUBLE,
          c8 NUMERIC(10,2),
          c9 DATE,
          c10 TIME,
          c11 DATETIME,
          c12 TIMESTAMP
      ) PARTITION BY HASH(c2) PARTITIONS 10;

-- 查看各分区的存储号
SQL> SELECT GSTO_NOS, PARTI_NAME FROM SYS_PARTIS t1,SYS_OBJECTS t2 WHERE t1.table_id=t2.obj_id AND t2.obj_name='tab_hash';
+----------+------------+
| GSTO_NOS | PARTI_NAME |
+----------+------------+
| 217      | PART1      |
| 218      | PART2      |
| 219      | PART3      |
| 220      | PART4      |
| 221      | PART5      |
| 222      | PART6      |
| 223      | PART7      |
| 224      | PART8      |
| 225      | PART9      |
| 226      | PART10     |
+----------+------------+

SQL> SELECT GSTO_NO,HEAD_NO,TAIL_NO,NEXT_NO FROM SYS_GSTORES t1,SYS_OBJECTS t2 WHERE t1.obj_id=t2.obj_id AND t2.obj_name='tab_hash';
+---------+---------+---------+---------+
| GSTO_NO | HEAD_NO | TAIL_NO | NEXT_NO |
+---------+---------+---------+---------+
| 217     | 217     | 217     | 0       |
| 218     | 218     | 218     | 0       |
| 219     | 219     | 219     | 0       |
| 220     | 220     | 220     | 0       |
| 221     | 221     | 221     | 0       |
| 222     | 222     | 222     | 0       |
| 223     | 223     | 223     | 0       |
| 224     | 224     | 224     | 0       |
| 225     | 225     | 225     | 0       |
| 226     | 226     | 226     | 0       |
| 227     | 227     | 227     | 0       |
+---------+---------+---------+---------+
-- <由查询结果可知:各分区的存储编号为217~226,tab_hash表结构存储编号为227>
  • 查看数据库存储状态
sql
-- 查看当前数据库中三版本不完整(不存在或无效)的存储数量
SQL> SELECT COUNT(*) FROM SYS_GSTORES WHERE store_sta!=41;
+-------+
| EXPR1 |
+-------+
| 108   |
+-------+
  • 查看某张表的存储状态
sql
-- 三节点集群,使2号节点离线
SQL> CREATE TABLE tab_gstore(c1 INT);

SQL> SELECT store_sta FROM SYS_GSTORES t1,SYS_OBJECTS t2 WHERE t1.obj_id=t2.obj_id AND t2.obj_name='tab_gstore';
+-----------+
| STORE_STA |
+-----------+
| 57        |
+-----------+
-- <57的二进制为“11 10 01”,可知:第一第二版本为有效版本,第三版本为无效版本>
  • 查询某张表存储分布
sql
-- 查询三版本分布状态
SQL> SELECT node_id1,node_id2,node_id3 FROM SYS_GSTORES t1,SYS_OBJECTS t2 WHERE t1.obj_id=t2.obj_id AND t2.obj_name='tab_gstore';
+----------+----------+----------+
| NODE_ID1 | NODE_ID2 | NODE_ID3 |
+----------+----------+----------+
| 1        | 3        | 0        |
+----------+----------+----------+
-- <由查询结果可知:第一版本即主版本分布在1号节点,第二版本即副版本分布在3号节点,第三版本无分布(2号节点死亡)>

相关系统表