华为云用户手册

  • pgxc_stat_single_table(schema, tablename) 描述:在CN上执行,入参为schema和表名。查询单张表在全库中的统计信息及该表在每个DN上的脏页率。 该函数仅8.1.3及以上集群版本支持。 该函数的统计信息依赖于ANALYZE,为获取该表最准确的信息请先对表进行ANALYZE。 返回值类型:record 返回值字段与函数pg_stat_get_tuple()相同。 1 2 3 4 5 6 7 8 SELECT * FROM pgxc_stat_single_table('public','t1'); nodename | tableid | partid | last_vacuum | last_autovacuum | last_analyze | last_autoanalyze | vacuum_count | autovacuum_count | analyze_count | autoanalyze_count | n_tup_ins | n_ tup_upd | n_tup_del | n_tup_hot_upd | n_tup_change | n_live_tup | n_dead_tup | dirty_rate | last_data_changed -----------+---------+--------+------------------------+------------------------+-------------------------------+------------------------+--------------+------------------+---------------+-------------------+-----------+--- --------+-----------+---------------+--------------+------------+------------+------------+------------------- datanode1 | 1270075 | | 2000-01-01 08:00:00+08 | 2000-01-01 08:00:00+08 | 2023-01-09 09:38:43.220876+08 | 2000-01-01 08:00:00+08 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | (1 row)
  • pgxc_stat_wal_write() 描述:在所有CN上执行,记录各个DN上与CN交互的线程信息,并统计wal日志和数据页导入量及速率。该函数仅8.2.0及以上集群版本支持。 返回值类型:bigint 返回值字段: node_name:实例名。 application_name:应用名。 query_start:当前正在执行语句的起始时间。 datapage_write:当前query导入的数据页总量,单位为bytes。 datapage_write_speed:数据页导入速率,单位为bytes/s。 wal_write:当前query导入的wal日志总量,单位为bytes。 wal_write_speed:wal导入速率,单位为bytes/s。 total_datapage_write:当前线程产生数据页总量,单位为bytes。 total_wal_write:wal总量,单位为bytes。 1 2 3 4 5 6 7 8 9 SELECT * FROM pgxc_stat_wal_write(); node_name | datid | pid | lwtid | usesysid | application_name | state | query_start | backend_start | query_id | datapage_write | datapage_write_speed | wal_write | wal_write_speed | total_datapage_write | total_wal_write -----------+-------+-----------------+-------+----------+------------------------+--------+-------------------------------+-------------------------------+-------------------+----------------+----------------------+-----------+-----------------+----------------------+----------------- datanode1 | 15979 | 140328473442048 | 12408 | 10 | CalculateSpaceInfo | active | 2022-11-15 10:39:45.00219+08 | 2022-11-15 10:39:45.000918+08 | 0 | 0 | 0 | 70697 | 0 | 0 | 0 datanode1 | 0 | 140328075503360 | 12510 | 10 | WalSender to Secondary | idle | | 2022-11-15 10:39:46.708557+08 | 0 | 0 | | 210 | 0 | 0 | 0 datanode1 | 15979 | 140327896741632 | 13612 | 10 | coordinator1 | active | 2022-11-15 10:46:32.832548+08 | 2022-11-15 10:40:20.117516+08 | 72620543991349940 | 586579968 | 17425000 | 11743056 | 348000 | 5337505792 | 107245825 datanode1 | 15979 | 140327583217408 | 13614 | 10 | coordinator1 | active | 2022-11-15 10:46:32.832548+08 | | 72620543991349940 | 0 | 0 | 0 | 0 | 0 | 0 datanode1 | 15979 | 140327485175552 | 27914 | 10 | coordinator1 | active | 2022-11-15 10:47:06.493584+08 | 2022-11-15 10:47:06.489062+08 | 72620543991350020 | 0 | 0 | 0 | 0 | 0 | 8675 (5 rows) 行存不带索引批量导入时,数据页copy导入会产生logical newpage相关的xlog日志,在xlog量大于默认值时同样会触发流控。
  • pg_stat_get_local_analyze_status(oid) 描述:指定表在当前节点上的是否需要analyze的状态,仅在CN端有意义。该函数仅8.1.2及以上版本支持。 如果该表的修改行数超过analyze的阈值(根据autovacuum_analyze_threshold + autovacuum_analyze_scale_factor * reltuples计算,其中reltuples是pg_class中记录的表的估算行数),则返回“Analyze needed”。 如果该表的修改行数不超过analyze的阈值,则返回“Analyze not needed”。 返回值类型:text
  • pgxc_get_wlm_current_instance_info(text, int default null) 描述:在CN节点上查询集群各节点当前的资源使用情况,读取内存中还未存到GS_WLM_INSTANCE_HISTORY系统表的数据。入参分别为:节点名称(可以输入ALL、C、D、实例名称),每个节点返回的最大数量。返回值为GS_WLM_INSTANCE_HISTORY。 返回值类型:setof record
  • pgxc_get_wlm_history_instance_info(text, TIMESTAMP, TIMESTAMP, int default null) 描述:在CN节点上查询集群各节点历史资源使用情况,读取GS_WLM_INSTANCE_HISTORY系统表的数据。入参分别为:节点名称(可以输入ALL、C、D、实例名称),起始区间时间,结束区间时间,每个实例返回的最大数量。返回值为GS_WLM_INSTANCE_HISTORY。 返回值类型:setof record
  • gs_all_nodegroup_control_group_info(text) 描述:提供了所有逻辑集群的控制组信息。该函数在调用的时候需要指定要查询逻辑集群的名称。例如要查询'installation'逻辑集群的控制组信息: 1 SELECT * FROM gs_all_nodegroup_control_group_info('installation'); 返回值类型:record 函数返回字段如下: 名称 类型 描述 name text 控制组的名称 type text 控制组的类型 gid bigint 控制组ID classgid bigint Workload所属Class的控制组ID class text Class控制组 workload text Workload控制组 shares bigint 控制组分配的CPU资源配额 limits bigint 控制组分配的CPU资源限额 wdlevel bigint Workload控制组层级 cpucores text 控制组使用的CPU核的信息
  • gs_control_group_info(pool text) 描述:查看资源池关联的控制组信息 返回值类型:record 返回信息如下: 属性 属性值 描述 name class_a:workload_a1 class和workload名称。 class class_a Class控制组名称。 workload workload_a1 Workload控制组名称。 type DEFWD 控制组类型(Top、CLASS、BAKWD、DEFWD、TSWD)。 gid 87 控制组ID。 shares 30 占父节点CPU资源的百分比。 limits 0 占父节点CPU核数的百分比。 rate 0 Timeshare中的分配比例。 cpucores 0-3 CPU核心数。
  • pgxc_get_wlm_session_info_bytime(text, timestamp without time zone, timestamp without time zone, int) 描述:PGXC_WLM_SESSION_INFO视图在统计数据量很大的场景中性能较差,建议使用该函数进行筛选查询。入参分别为:筛选时间列('start_time', 'finish_time'),起始区间时间,结束区间时间,每个CN返回的最大数量。返回值为GS_WLM_SESSION_HISTORY。 返回值类型:setof record
  • pg_stat_get_last_data_changed_time(oid) 描述:insert/update/delete, exchange/truncate/drop partition在该表上最后一次操作的时间,PG_STAT_ALL_TABLES视图last_data_changed列的数据是通过该函数求值,在表数量很大的场景中,通过视图获取表数据最后修改时间的性能较差,建议直接使用该函数获取表数据的最后修改时间。 返回值类型:timestamptz
  • pg_user_iostat(text) 描述:该函数8.1.2版本中已废弃,当前版本查询无效。8.2.0及以上集群版本中可使用PGXC_TOTAL_USER_RESOURCE_INFO视图查询实例上用户实时资源消耗信息。 返回值类型:record 名称 类型 描述 userid oid 用户ID。 min_curr_iops int4 当前该用户io在各DN中的最小值。 max_curr_iops int4 当前该用户io在各DN中的最大值。 min_peak_iops int4 该用户io峰值中,各DN的最小值。 max_peak_iops int4 该用户io峰值中,各DN的最大值。 io_limits int4 用户指定的资源池所设置的io_limits。 io_priority text 该用户所设io_priority。
  • pg_stat_get_tuple() 描述:在CN和DN上均可以执行,该函数仅8.1.3及以上集群版本支持。 函数无参时,查询CN上所有系统表的统计信息及表在每个CN上的脏页率,查询DN上所有系统表和用户表的统计信息和表在每个DN上的脏页率; 函数带入参时,入参是schema和表名,带入参的函数执行时查询单张表的统计信息和脏页率。 该函数的统计信息依赖于ANALYZE,为获取最准确的信息请先对表进行ANALYZE。 返回值类型:record 函数返回字段如下: 名称 类型 描述 nodename text 节点名。 tableid oid 表的OID。 partid oid 分区表的分区OID。 last_vacuum timestamp with time zone 最后一次手动vacuum时间。 last_autovacuum timestamp with time zone 最后一次autovacuum时间。 last_analyze timestamp with time zone 最后一次手动analyze时间。 last_autoanalyze timestamp with time zone 最后一次autoanalyze时间。 vacuum_count bigint vacuum次数。 autovacuum_count bigint autovacuum次数。 analyze_count bigint analyze次数。 autoanalyze_count bigint autoanalyze_count次数。 n_tup_ins bigint 插入的行数。 n_tup_upd bigint 更新的行数。 n_tup_del bigint 删除的行数。 n_tup_hot_upd bigint HOT更新的行数。 n_tup_change bigint analyze之后改变的行数。 n_live_tup bigint live行估计数。 n_dead_tup bigint dead行估计数。 dirty_rate bigint 单节点的脏页率(单CN或单DN级)。 last_data_changed timestamp with time zone 记录表最后一次数据变化的时间。
  • 示例 本示例假定用户已预先成功创建控制组。 创建一个默认资源池,其控制组为“DefaultClass”组下属的“Medium”Timeshare Workload控制组: 1 CREATE RESOURCE POOL pool1; 创建一个资源池,其控制组指定为“DefaultClass”组下属的“High”Timeshare Workload控制组: 1 CREATE RESOURCE POOL pool2 WITH (CONTROL_GROUP="High");
  • 语法格式 1 2 CREATE RESOURCE POOL pool_name [WITH ({MEM_PERCENT=pct | CONTROL_GROUP="group_name" | ACTIVE_STATEMENTS=stmt | MAX_DOP = dop | MEMORY_LIMIT='memory_size' | io_limits=io_limits | io_priority='priority' | nodegroup='nodegroup_name' | is_foreign = boolean | except_rule='except_rule' | weight=bandwidth_weight}[, ... ])];
  • 参数说明 pool_name 资源池名称。 资源池名称不能和当前数据库里已有的资源池重名。 取值范围:字符串,要符合标识符的命名规范。 group_name 控制组名称。 设置控制组名称时,语法可以使用双引号,也可以使用单引号。 group_name对大小写敏感。 不指定group_name时,默认指定的字符串为“Medium”,代表指定DefaultClass控制组的“Medium”Timeshare控制组。 若数据库管理员指定自定义Class组下的Workload控制组,如control_group的字符串为:“class1:workload1”;代表此资源池指定到class1控制组下的workload1控制组。也可同时指定Workload控制组的层次,如control_group的字符串为:“class1:workload1:1”。 若数据库用户指定Timeshare控制组代表的字符串,即“Rush”、“High”、“Medium”或“Low”其中一种,如control_group的字符串为“High”;代表资源池指定到DefaultClass控制组下的“High”Timeshare控制组。 多租户场景下,组资源池关联的控制组为Class级别,业务资源池关联Workload控制组。且不允许在各种资源池间相互切换。 取值范围:字符串,要符合说明中的规则,其指定已创建的控制组。 stmt 资源池语句执行的最大并发数量。 取值范围:数值型,-1~INT_MAX。 dop 资源池简单语句执行的最大并发数量。 取值范围:数值型,1~INT_MAX memory_size 资源池最大使用内存。 取值范围:字符串,内容范围1KB~2047GB mem_percent 资源池可用内存占全部内存或者组用户内存使用的比例。 在多租户场景下,组用户和业务用户的mem_percent范围1-100,默认为20。 在普通场景下,普通用户的mem_percent范围为0-100,默认值为0。 mem_percent和memory_limit同时指定时,只有mem_percent起作用。 io_limits 该参数8.1.2版本中已废弃,为兼容历史版本保留该参数。 io_priority 该参数8.1.2版本中已废弃,为兼容历史版本保留该参数。 nodegroup 在逻辑集群模式下,指定资源池所属的逻辑集群名称。必须是存在的逻辑集群。 如果逻辑集群名称包含大写字符、特殊符号或以数字开头,SQL语句中对逻辑集群名称需要加双引号。 is_foreign 在逻辑集群模式下,指定当前资源池用于控制没有关联本逻辑集群的普通用户的资源。这里的逻辑集群是由资源池nodegroup字段指定的。 nodegroup必须是存在的逻辑集群,不能是elastic_group和安装的nodegroup (group_version1)。 如果指定了is_foreign为true,则资源池不能再关联用户,即不允许通过CREATE USER ... RESOURCE POOL语句来将该资源池配置给用户。该资源池自动检查用户是否关联到资源池指定的逻辑集群,如果用户没有关联到该逻辑集群,则这些用户在逻辑集群所包含的DN上运行将受到该资源池的资源控制。
  • 参数说明 WITH [ RECURSIVE ] with_query [, ...] 用于声明一个或多个可以在主查询中通过名字引用的子查询,相当于临时表。 如果声明了RECURSIVE,那么允许SELECT子查询通过名字引用它自己。 其中with_query的详细格式为:with_query_name [ ( column_name [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( {select | values | insert | update | delete} ) with_query_name指定子查询生成的结果集名字,在查询中可使用该名称访问子查询的结果集。 默认情况下,被主查询多次引用的with_query通常只被执行一次,并将其结果集进行物化,供主查询多次查询其结果集;被主查询引用一次的with_query,则不再单独执行,而是将其子查询直接替换到主查询中的引用处,随主查询一起执行。显示指定[ NOT ] MATERIALIZED,可改变默认行为: 指定MATERIALIZED时,将子查询执行一次,并将其结果集进行物化。 指定NOT MATERIALIZED时,则将其子查询替换到主查询中的引用处。以下几种情况会忽略NOT MATERIALIZED: 子查询中含有volatile函数。 子查询为含有FOR UPDATE/FOR SHARE的SELECT/VALUES语句。 子查询为INSERT/UPDATE/DELETE等语句。 with_query为RECURSIVE。 被引用次数大于1的with_query2引用了外层自引用的with_query1,则with_query2不能被替换到引用处。 例如下面示例中,tmp2被引用了两次,tmp2因为引用了外层自引用的tmp1,所以即使tmp2指定了NOT MATERIALIZED也会被物化。 1 2 3 4 5 with recursive tmp1(b) as (values(1) union all (with tmp2 as not materialized (select * from tmp1) select tt1.b + tt2.b from tmp2 tt1, tmp2 tt2)) select * from tmp1; column_name指定子查询结果集中显示的列名。 每个子查询可以是SELECT,VALUES,INSERT,UPDATE或DELETE语句。 plan_hint子句 以/*+ */的形式在SELECT关键字后,用于对SELECT对应的语句块生成的计划进行hint调优,详细用法请参见章节:使用Plan Hint进行调优。 ALL 声明返回所有符合条件的行,是默认行为,可以省略该关键字。 DISTINCT [ ON ( expression [, ...] ) ] 从SELECT的结果集中删除所有重复的行,使结果集中的每行都是唯一的。 ON ( expression [, ...] ) 只保留那些在给出的表达式上运算出相同结果的行集合中的第一行。 DISTINCT ON表达式是使用与ORDER BY相同的规则进行解释的。除非使用了ORDER BY来保证需要的行首先出现,否则,"第一行" 是不可预测的。 SELECT列表 指定查询表中列名,可以是部分列或者是全部(使用通配符*表示)。 通过使用子句AS output_name可以为输出字段取个别名,这个别名通常用于输出字段的显示。 列名可以用下面几种形式表达: 手动输入列名,多个列之间用英文逗号(,)分隔。 可以是FROM子句里面计算出来的字段。 FROM子句 为SELECT声明一个或者多个源表。 FROM子句涉及的元素如下所示。 table_name 表名或视图名,名称前可加上模式名,如:schema_name.table_name。 alias 给表或复杂的表引用起一个临时的表别名,以便被其余的查询引用。 别名用于缩写或者在自连接中消除歧义。如果提供了别名,它就会完全隐藏表的实际名字。 column_alias 列别名 PARTITION 查询分区表的某个分区的数据。 partition_name 分区名。 partition_value 指定的分区键值。在创建分区表时,如果指定了多个分区键,可以通过PARTITION FOR子句指定的这一组分区键的值,唯一确定一个分区。 subquery FROM子句中可以出现子查询,创建一个临时表保存子查询的输出。 with_query_name WITH子句同样可以作为FROM子句的源,可以通过WITH查询的名字对其进行引用。 function_name 函数名称。函数调用也可以出现在FROM子句中。 join_type 有5种类型,如下所示。 [ INNER ] JOIN 一个JOIN子句组合两个FROM项。可使用圆括弧以决定嵌套的顺序。如果没有圆括弧,JOIN从左向右嵌套。 在任何情况下,JOIN都比逗号分隔的FROM项绑定得更紧。 LEFT [ OUTER ] JOIN 返回笛卡尔积中所有符合连接条件的行,再加上左表中通过连接条件没有匹配到右表行的那些行。这样,左边的行将扩展为生成表的全长,方法是在那些右表对应的字段位置填上NULL。请注意,只在计算匹配的时候,才使用JOIN子句的条件,外层的条件是在计算完毕之后施加的。 RIGHT [ OUTER ] JOIN 返回所有内连接的结果行,加上每个不匹配的右边行(左边用NULL扩展)。 这只是一个符号上的方便,因为总是可以把它转换成一个LEFT OUTER JOIN,只要把左边和右边的输入互换位置即可。 FULL [ OUTER ] JOIN 返回所有内连接的结果行,加上每个不匹配的左边行(右边用NULL扩展),再加上每个不匹配的右边行(左边用NULL扩展)。 CROSS JOIN CROSS JOIN等效于INNER JOIN ON(TRUE) ,即没有被条件删除的行。这种连接类型只是符号上的方便,因为它们与简单的FROM和WHERE的效果相同。 必须为INNER和OUTER连接类型声明一个连接条件,即NATURAL ON,join_condition,USING (join_column [, ...]) 之一。但是它们不能出现在CROSS JOIN中。 其中CROSS JOIN和INNER JOIN生成一个简单的笛卡尔积,和在FROM的顶层列出两个项的结果相同。 ON join_condition 连接条件,用于限定连接中的哪些行是匹配的。如:ON left_table.a = right_table.a。 USING(join_column[,...]) ON left_table.a = right_table.a AND left_table.b = right_table.b ... 的简写。要求对应的列必须同名。 NATURAL NATURAL是具有相同名称的两个表的所有列的USING列表的简写。 from item 用于连接的查询源对象的名称。 WHERE子句 WHERE子句构成一个行选择表达式,用来缩小SELECT查询的范围。condition是返回值为布尔型的任意表达式,任何不满足该条件的行都不会被检索。 WHERE子句中可以通过指定"(+)"操作符的方法将表的连接关系转换为外连接。但是不建议用户使用这种用法,因为这并不是SQL的标准语法,在做平台迁移的时候可能面临语法兼容性的问题。同时,使用"(+)"有很多限制: "(+)"只能出现在where子句中。 如果from子句中已经有指定表连接关系,那么不能再在where子句中使用"(+)"。 "(+)"只能作用在表或者视图的列上,不能作用在表达式上。 如果表A和表B有多个连接条件,那么必须在所有的连接条件中指定"(+)",否则"(+)"将不会生效,表连接会转化成内连接,并且不给出任何提示信息。 "(+)"作用的连接条件中的表不能跨查询或者子查询。如果"(+)"作用的表,不在当前查询或者子查询的from子句中,则会报错。如果"(+)"作用的对端的表不存在,则不报错,同时连接关系会转化为内连接。 "(+)"作用的表达式不能直接通过"OR"连接。 如果"(+)"作用的列是和一个常量的比较关系, 那么这个表达式会成为join条件的一部分。 同一个表不能对应多个外表。 "(+)"只能出现"比较表达式","NOT表达式",“ANY表达式”,“ALL表达式”,“IN表达式”,“NULLIF表达式”,“IS DISTINCT FROM表达式”,“IS OF”表达式。"(+)"不能出现在其他类型表达式中,并且这些表达式中不允许出现通过“AND”和“OR”连接的表达式。 "(+)"只能转化为左外连接或者右外连接,不能转化为全连接,即不能在一个表达式的两个表上同时指定"(+)" 对于WHERE子句的LIKE操作符,当LIKE中要查询特殊字符“%”、“_”、“\”的时候需要使用反斜杠“\”来进行转义。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 CREATE TABLE tt01 (id int,content varchar(50)); INSERT INTO tt01 values (1,'Jack say ''hello'''); INSERT INTO tt01 values (2,'Rose do 50%'); INSERT INTO tt01 values (3,'Lilei say ''world'''); INSERT INTO tt01 values (4,'Hanmei do 100%'); SELECT * FROM tt01; id | content ----+------------------- 3 | Lilei say 'world' 4 | Hanmei do 100% 1 | Jack say 'hello' 2 | Rose do 50% (4 rows) SELECT * FROM tt01 WHERE content like '%''he%'; id | content ----+------------------ 1 | Jack say 'hello' (1 row) SELECT * FROM tt01 WHERE content like '%50\%%'; id | content ----+------------- 2 | Rose do 50% (1 row) GROUP BY子句 将查询结果按某一列或多列的值分组,值相等的为一组。 ROLLUP ( { expression | ( expression [, ...] ) } [, ...] ) ROLLUP是计算一个有序的分组列在GROUP BY中指定的标准聚集值,然后从右到左进一步创建高层次的部分和,最后创建了累积和。一个分组能够看做一系列的分组集。例如: 1 GROUP BY ROLLUP (a,b,c) 等价于: 1 GROUP BY GROUPING SETS((a,b,c), (a,b), (a), ( )) ROLLUP子句中的元素可以是单独的字段或表达式,也可以是使用括号包含的列表。如果是括号中的列表,产生分组集时它们必须作为一个整体。例如: 1 GROUP BY ROLLUP ((a,b), (c,d)) 等价于: 1 GROUPING SETS ((a,b,c,d), (a,b), (c,d ), ( )) CUBE ( { expression | ( expression [, ...] ) } [, ...] ) CUBE是自动对group by子句中列出的字段进行分组汇总,结果集将包含维度列中各值的所有可能组合,以及与这些维度值组合相匹配的基础行中的聚合值。它会为每个分组返回一行汇总信息, 用户可以使用CUBE来产生交叉表值。比如,在CUBE子句中给出三个表达式(n = 3),运算结果为2n = 23 = 8组。 以n个表达式的值分组的行称为常规行,其余的行称为超级聚集行。例如: 1 GROUP BY CUBE (a,b,c) 等价于: 1 GROUP BY GROUPING SETS((a,b,c), (a,b), (a,c), (b,c), (a), (b), (c), ( )) CUBE子句中的元素可以是单独的字段或表达式,也可以是使用括号包含的列表。如果是括号中的列表,产生分组集时它们必须作为一个整体。例如: 1 GROUP BY CUBE (a, (b, c), d) 等价于: 1 GROUP BY GROUPING SETS ((a,b,c,d), (a,b,c), (a), ( )) GROUPING SETS ( grouping_element [, ...] ) GROUPING SETS子句是GROUP BY子句的进一步扩展,它可以使用户指定多个GROUP BY选项。选项用于定义分组集,每个分组集都需要包含在单独的括号中,空白的括号(())表示将所有数据当作一个组处理。 这样做可以通过裁剪用户不需要的数据组来提高效率。 用户可以根据需要指定所需的数据组进行查询。 如果SELECT列表的表达式中引用了那些没有分组的字段,则会报错,除非使用了聚集函数,因为对于未分组的字段,可能返回多个数值。 HAVING子句 与GROUP BY子句配合用来选择特殊的组。HAVING子句将组的一些属性与一个常数值比较,只有满足HAVING子句中的逻辑表达式的组才会被提取出来。 WINDOW子句 一般形式为WINDOW window_name AS ( window_definition ) [, ...],window_name是可以被随后的窗口定义所引用的名称,window_definition可以是以下的形式: [ existing_window_name ] [ PARTITION BY expression [, ...] ] [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ] [ frame_clause ] frame_clause为窗函数定义一个窗口框架window frame,窗函数(并非所有)依赖于框架,window frame是当前查询行的一组相关行。frame_clause可以是以下的形式: [ RANGE | ROWS ] frame_start [ RANGE | ROWS ] BETWEEN frame_start AND frame_end frame_start和frame_end可以是: UNBOUNDED PRECEDING value PRECEDING(RANGE不支持) CURRENT ROW value FOLLOWING(RANGE不支持) UNBOUNDED FOLLOWING 对列存表的查询目前只支持row_number窗口函数,不支持frame_clause。 UNION子句 UNION计算多个SELECT语句返回行集合的并集。 UNION子句有如下约束条件: 除非声明了ALL子句,否则缺省的UNION结果不包含重复的行。 同一个SELECT语句中的多个UNION操作符是从左向右计算的,除非用圆括弧进行了标识。 FOR UPDATE不能在UNION的结果或输入中声明。 一般表达式: select_statement UNION [ALL] select_statement select_statement可以是任何没有ORDER BY、LIMIT、FOR UPDATE子句的SELECT语句。 如果用圆括弧包围,ORDER BY和LIMIT可以附着在子表达式里。 INTERSECT子句 INTERSECT计算多个SELECT语句返回行集合的交集,不含重复的记录。 INTERSECT子句有如下约束条件: 同一个SELECT语句中的多个INTERSECT操作符是从左向右计算的,除非用圆括弧进行了标识。 当对多个SELECT语句的执行结果进行UNION和INTERSECT操作的时候,会优先处理INTERSECT。 一般形式: select_statement INTERSECT select_statement select_statement可以是任何没有FOR UPDATE子句的SELECT语句。 EXCEPT子句 EXCEPT子句有如下的通用形式: select_statement EXCEPT [ ALL ] select_statement select_statement是任何没有FOR UPDATE子句的SELECT表达式。 EXCEPT操作符计算存在于左边SELECT语句的输出而不存在于右边SELECT语句输出的行。 EXCEPT的结果不包含任何重复的行,除非声明了ALL选项。使用ALL时,一个在左边表中有m个重复而在右边表中有n个重复的行将在结果中出现max(m-n,0) 次。 除非用圆括弧指明顺序,否则同一个SELECT语句中的多个EXCEPT操作符是从左向右计算的。EXCEPT和UNION的绑定级别相同。 目前,不能给EXCEPT的结果或者任何EXCEPT的输入声明FOR UPDATE子句。 MINUS子句 与EXCEPT子句具有相同的功能和用法。 ORDER BY子句 对SELECT语句检索得到的数据进行升序或降序排序。对于ORDER BY表达式中包含多列的情况: 首先根据最左边的列进行排序,如果这一列的值相同,则根据下一个表达式进行比较,以此类推。 如果对于所有声明的表达式都相同,则按随机顺序返回。 ORDER BY中排序的列必须包括在SELECT语句所检索的结果集的列中。 如果未指定ORDER BY,则按数据库系统最快生成的顺序返回。 可以选择在 ORDER BY子句中的任何表达式之后添加关键字ASC(升序)或 DESC(降序)。如果未指定,则默认使用ASC。 如果要支持中文拼音排序和不区分大小写排序,需要在初始化数据库时指定编码格式为UTF-8或GBK。 命令如下: initdb –E UTF8 –D ../data –locale=zh_CN.UTF-8或initdb –E GBK –D ../data –locale=zh_CN.GBK。 [ { [ LIMIT { count | ALL } ] [ OFFSET start [ ROW | ROWS ] ] } | { LIMIT start, { count | ALL } } ] LIMIT子句由两个独立的Limit子句、Offset子句和一个多参Limit子句构成: LIMIT { count | ALL } OFFSET start [ ROW | ROWS ] LIMIT start, { count | ALL } 其中,count声明返回的最大行数,而start声明开始返回行之前忽略的行数。如果这两个参数都指定了,会在开始计算count个返回行之前先跳过start行。多参Limit子句不可和单参的Limit子句或Offset子句共同出现。 FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY 如果不指定count,默认值为1,FETCH子句限定返回查询结果从第一行开始的总行数。 FOR UPDATE子句 FOR UPDATE子句将对SELECT检索出来的行进行加锁。这样避免它们在当前事务结束前被其他事务修改或者删除,即其他企图UPDATE、 DELETE、 SELECT FOR UPDATE这些行的事务将被阻塞,直到当前事务结束。 为了避免操作等待其他事务提交,可使用NOWAIT选项,如果被选择的行不能立即被锁住,执行SELECT FOR UPDATE NOWAIT将会立即汇报一个错误,而不是等待。 FOR SHARE的行为类似,只是它在每个检索出来的行上要求一个共享锁,而不是一个排他锁。一个共享锁阻塞其它事务执行UPDATE、DELETE、SELECT,不阻塞SELECT FOR SHARE。 如果在FOR UPDATE或FOR SHARE中明确指定了表名字,则只有这些指定的表被锁定,其他在SELECT中使用的表将不会被锁定。否则,将锁定该命令中所有使用的表。 如果FOR UPDATE或FOR SHARE应用于一个视图或者子查询,它同样将锁定所有该视图或子查询中使用到的表。 多个FOR UPDATE和FOR SHARE子句可以用于为不同的表指定不同的锁定模式。 如果一个表中同时出现(或隐含同时出现)在FOR UPDATE和FOR SHARE子句中,则按照FOR UPDATE处理。类似的,如果影响一个表的任意子句中出现了NOWAIT,该表将按照NOWAIT处理。 对于for update/share,执行计划不能下推的SQL,直接返回报错信息;对于执行计划可以下推的,下推到DN执行。 对列存表的查询不支持for update/share。 NLS_SORT 指定某字段按照特殊方式排序。目前仅支持中文拼音格式排序和不区分大小写排序。 取值范围: SCHINESE_PINYIN_M,按照中文拼音排序(目前只支持GBK字符集内的一级汉字排序)。如果要支持此排序方式,在创建数据库时需要指定编码格式为“GBK”,否则排序无效。 generic_m_ci,不区分大小写排序。 PARTITION子句 查询某个分区表中相应分区的数据。
  • 语法格式 查询数据 1 2 3 4 5 6 7 8 9 10 11 12 13 [ WITH [ RECURSIVE ] with_query [, ...] ] SELECT [/*+ plan_hint */] [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] { * | {expression [ [ AS ] output_name ]} [, ...] } [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY grouping_element [, ...] ] [ HAVING condition [, ...] ] [ WINDOW {window_name AS ( window_definition )} [, ...] ] [ { UNION | INTERSECT | EXCEPT | MINUS } [ ALL | DISTINCT ] select ] [ ORDER BY {expression [ [ ASC | DESC | USING operator ] | nlssort_expression_clause ] [ NULLS { FIRST | LAST } ]} [, ...] ] [ { [ LIMIT { count | ALL } ] [ OFFSET start [ ROW | ROWS ] ] } | { LIMIT start, { count | ALL } } ] [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ] [ {FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ]} [...] ]; condition和expression中可以使用targetlist中表达式的别名。 只能同一层引用。 只能引用targetlist中的别名。 只能是后面的表达式引用前面的表达式。 不能包含volatile函数。 不能包含Window function函数。 不支持在join on条件中引用别名。 targetlist中有多个要应用的别名则报错。 其中子查询with_query为: 1 2 with_query_name [ ( column_name [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( {select | values | insert | update | delete} ) 其中指定查询源from_item为: 1 2 3 4 5 6 {[ ONLY ] table_name [ * ] [ partition_clause ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ] |( select ) [ AS ] alias [ ( column_alias [, ...] ) ] |with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ] |function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ] |function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] ) |from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]} 其中group子句为: 1 2 3 4 5 6 ( ) | expression | ( expression [, ...] ) | ROLLUP ( { expression | ( expression [, ...] ) } [, ...] ) | CUBE ( { expression | ( expression [, ...] ) } [, ...] ) | GROUPING SETS ( grouping_element [, ...] ) 其中指定分区partition_clause为: 1 2 PARTITION { ( partition_name ) | FOR ( partition_value [, ...] ) } 指定分区只适合普通表。 其中设置排序方式nlssort_expression_clause为: 1 NLSSORT ( column_name, ' NLS_SORT = { SCHINESE_PINYIN_M | generic_m_ci } ' ) 简化版查询语法,功能相当于select * from table_name。 1 TABLE { ONLY {(table_name)| table_name} | table_name [ * ]};
  • 两阶段事务 GaussDB(DWS)属于分布式share-nothing架构,表的数据分布在不同的节点上。客户端的一条或多条语句可能会同时修改多个节点上的数据,这种情况下,会产生分布式事务。GaussDB(DWS)采用两阶段提交事务来保证分布式事务中数据的一致性和事务的原子性。顾名思义,两阶段提交就是将事务提交划分为两个阶段,通常针对的是包含写操作的事务。当写操作将数据写入不同的节点时,需要满足事务的原子性要求,要么全部提交,要么全部回滚。 不支持两阶段的场景如下: 不支持显示的两阶段提交语法PREPARE TRANSACTION。 1 2 BEGIN; PREPARE TRANSACTION 'p1'; 不支持在两阶段事务中修改系统表的文件映射关系。 1 REINDEX TABLE pg_class; 不支持在跨节点的事务中提交导出事务快照。 1 2 3 4 BEGIN; CREATE TABLE t1(a int); SELECT pg_export_snapshot(); END;
  • 隔离级别 Isolation(隔离性)可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离级别,决定多个事务并发操作同一个对象时的处理方式。 GaussDB(DWS)的事务隔离级别,由GUC参数transaction_isolation或SET TRANSACTION语法设置,支持以下隔离级别,默认为读已提交(read committed)。 read committed:读已提交隔离级别,只能读到已经提交的数据,而不会读到未提交的数据。 read uncommitted:读未提交隔离级别,GaussDB(DWS)不支持read uncommitted,如果设置了read uncommitted,实际上使用的是read committed。 repeatable read:可重复读隔离级别,仅仅能看到事务开始之前提交的数据,不能看到未提交的数据,以及在事务执行期间由其它并发事务提交的修改。 serializable:事务可序列化,GaussDB(DWS)不支持serializable,如果设置了serializable,实际上使用的是repeatable read。
  • 事务控制语法 启动事务 GaussDB(DWS)通过START TRANSACTION和BEGIN语法启动事务,请参考START TRANSACTION和BEGIN。 设置事务 GaussDB(DWS)通过SET TRANSACTION或者SET LOCAL TRANSACTION语法设置事务,请参考SET TRANSACTION。 提交事务 GaussDB(DWS)通过COMMIT或者END可完成提交事务的功能,即提交事务的所有操作,请参考COMMIT | END。 回滚事务 回滚是在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销。请参考ROLLBACK。 数据库中收到的一次执行请求(不在事务块中),如果含有多条语句,将会被打包成一个事务,如果其中有一个语句失败,那么整个请求都将会被回滚。 其他事务操作 SAVEPOINT用于在当前事务里建立一个新的保存点。即在一个事务中标记一个位置并且允许做部分回滚。用户可以回滚在一个保存点之后执行的命令但保留该保存点之前执行的命令。请参考SAVEPOINT。 ROLLBACK TO SAVEPOINT回滚事务到一个保存点。隐含地删除所有在该保存点之后建立的保存点。请参考ROLLBACK TO SAVEPOINT。 RELEASE SAVEPOINT删除一个事务内的保存点。请参考RELEASE SAVEPOINT。
  • 事务场景示例 某顾客在商店使用电子支付购买100元的物品,当中至少包括两个操作:1. 该顾客的账户减少100元。2. 商店账户(商户)增加100元。支持事务的数据库管理系统就是要确保以上两个操作(整个“事务”)都能完成,或一起取消。 创建样例数据: 创建一个简单的用户金额表并向表中插入数据(假设商户和顾客的账户上各有500元)。 1 2 3 4 5 CREATE TABLE customer_info ( NAME VARCHAR(32) PRIMARY KEY, MONEY INTEGER ); INSERT INTO customer_info (name, money) VALUES ('buyer', 500), ('shop', 500); 查看表数据显示商户和顾客各有500元。 1 SELECT * FROM customer_info; 普通操作(正常模式)。 模拟正常购买过程,顾客先扣款100元,商户再增加款额100元。 1 2 3 4 UPDATE customer_info SET money = money-100 WHERE name IN (SELECT name FROM customer_info WHERE name = 'buyer'); UPDATE customer_info SET money = money+100 WHERE name IN (SELECT name FROM customer_info WHERE name = 'shop'); SELECT * FROM customer_info; 恢复初始值。 1 2 UPDATE customer_info SET money=500; select * from customer_info; 普通操作(异常模式)。 模拟购买过程出现状况,顾客发生扣款100元,商户没有增加款额。 顾客先扣款100元。 1 UPDATE customer_info SET money = money-100 WHERE name IN (SELECT name FROM customer_info WHERE name = 'buyer'); 商户发现支付有问题,终止了后续交易。商户增加款操作直接报错,终止执行下面的语句。(仅商户觉得支付有问题) 1 UPDATE customer_info SET money = money+100 WHERE name IN (SELECT name FROM customer_info WHERE name = 'shop'); 查询结果发现:消费者已经扣款,但商户没增加款额,这里顾客的金额了100元。 1 SELECT * FROM customer_info; 因此,如果没有事务,一旦SQL语句中间出现异常,整个账户系统的收支就不平衡了。 使用数据库事务,模拟出现异常操作时,进行事务回滚。 恢复初始值: 1 UPDATE customer_info SET money=500; 开启事务后,顾客先扣款100元。 1 2 BEGIN TRANSACTION; UPDATE customer_info SET money = money-100 WHERE name IN (SELECT name FROM customer_info WHERE name = 'buyer'); 商户增加款额操作直接报错,终止执行下面的语句。 1 UPDATE customer_info SET money = money+100 WHERE name IN (SELECT name FROM customer_info WHERE name = 'shop'); 回滚事务,在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销。 1 2 END TRANSACTION; ROLLBACK 查询显示顾客和商户的账户金额仍旧完整一致。即数据库在事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,数据库的完整性没有被破坏。 1 SELECT * FROM customer_info;
  • 事务的属性 事务具有以下四个标准属性,通常根据首字母缩写为ACID。 Atomicity(原子性):事务中的全部操作在数据库中是不可分割的,整个事务中的所有操作要么全部完成,要么全部失败,对于一个事务来说,不能只执行其中的一部分操作。 比如: A给B转账,A扣除500元 ,B增加500元。整个事务的操作要么全部成功,要么全部失败,不能出现A扣钱,但是B不增加的情况。如果原子性不能保证,就会很自然的出现一致性问题。 Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的数据必须完全符合所有的预设规则,这包含数据的精确度、串联性以及后续数据库可以自发性地完成预定的工作。 比如:A给B转账,A扣除500元 ,B增加500元,扣除的钱-500与增加的钱+500,相加应该为0。如从A账户转账500元到B账户,不管操作成功与否,A和B的存款总额是不变的。 Isolation(隔离性):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(serializable)。 Durability(持久性):一旦事务提交,则其所做的修改就会永久保存到数据库中。即使系统故障,已经提交的修改数据也不会丢失。 表1 ACID用途 ACID 属性 用途 Atomicity 原子性 并发控制,故障恢复。 Consistency 一致性 SQL的完整性约束(主键约束、外键约束)。 Isolation 隔离性 并发控制。 Durability 持久性 故障恢复。 常用的并发控制技术有基于锁的并发控制和基于时间戳的并发控制,GaussDB(DWS)数据库针对DDL语句采用两阶段锁技术,而针对DML语句则采用多版本控制技术(Multi-Version Concurrency Control,MVCC)。GaussDB(DWS)数据库的故障恢复采用WAL日志的方式来实现,目前主要支持Redo日志,通过Redo日志和MVCC可以保证事务读写的一致性。
  • 示例 创建一个GBK编码的数据库music(本地环境的编码格式必须也为GBK): 1 CREATE DATABASE music ENCODING 'GBK' template = template0; 创建数据库music2,并指定所有者为jim: 1 CREATE DATABASE music2 OWNER jim; 用模板template0创建数据库music3,并指定所有者为jim: 1 CREATE DATABASE music3 OWNER jim TEMPLATE template0; 创建兼容ORA格式的数据库: 1 CREATE DATABASE ora_compatible_db DBCOMPATIBILITY 'ORA';
  • 语法格式 1 2 3 4 5 6 7 8 9 CREATE DATABASE database_name [ [ WITH ] { [ OWNER [=] user_name ] | [ TEMPLATE [=] template ] | [ ENCODING [=] encoding ] | [ LC_COLLATE [=] lc_collate ] | [ LC_CTYPE [=] lc_ctype ] | [ DBCOMPATIBILITY [=] compatibility_type ] | [ CONNECTION LIMIT [=] connlimit ]}[...] ];
  • 相关操作 添加指标卡:配置后,如需将指标信息保存为卡片,可单击表格右上角“添加指标卡”,并在弹出的对话框中,设置指标卡名称后,单击“保存”。 下载日志:配置后,如需导出当前查询分析数据,可单击表格右上角“下载日志”,系统将下载当前查询分析日志数据至本地。 收起配置:图表配置完成后,在“预览图表”右侧单击“收起配置”,页面将不显示图表配置参数。 展开配置:图标配置收起后,如需再次配置,可在“预览图表”右侧单击“展开配置”。
  • 修订记录 发布日期 修改记录 2024-03-28 第十一次正式发布。 更新策略管理概述、新增/编辑应急策略章节内容,更新约束限制并增加应急策略推荐配置说明。 更新采集数据章节内容,增加ECS、VPC终端节点资源相关说明。 更新安全编排概述、查看实例监控章节内容,更新剧本、流程实例约束限制说明。 更新查看基线检查结果章节内容,增加查看检查结果操作步骤。 更新查看资产信息、查看漏洞详情、查看事件信息、查看告警信息、查看情报指标章节内容,更新查看数据描述信息。 新增一键阻断/解封章节内容。 2024-02-29 第十次正式发布。 更新编辑工作空间章节内容,增加安全云脑对接标签服务资料描述。 更新创建托管章节内容,增加安全云脑对接Organizations资料描述信息。 更新编辑/删除资产章节内容,增加批量编辑资产操作步骤。 更新查看告警信息章节内容,告警详情页面优化,资料更新描述信息。 更新查看基线检查结果章节内容,新增检查结果页面描述。 更新处理基线检查结果章节内容,新增导入、导出检查结果操作指导。 更新支持接入的日志章节内容,新增支持接入安全云脑基线检查数据至安全分析管道中。 更新工作空间概述、安全分析概述章节内容,补充工作空间、安全分析的约束与限制。 更新内置剧本和流程章节内容,新增内置剧本、流程和资产连接。 更新查看资产信息、查看漏洞详情、查看事件信息、查看告警信息、新增/编辑情报指标章节内容,更新页面布局截图。 新增舆情监测功能资料说明。 2023-12-11 第九次正式发布。 更新购买安全云脑章节内容,安全云脑支持对接TMS服务,增加了相关描述内容。 更新创建/复制安全报告、查看安全报告章节内容,新增周报说明信息。 更新总览、态势总览、综合态势感知大屏、值班响应大屏、资产大屏、威胁态势大屏、脆弱性大屏章节内容,补充指标统计周期。 更新查看已处理任务章节内容,更新目录名称。 更新服务委托授权章节内容,补充安全云脑委托权限的说明。 更新内置剧本和流程章节内容,新增内置剧本、流程和资产连接。 新增采集数据章节内容。 删除“购买ECS”、“安装Agent”、“新增节点”、“配置组件”、“新增连接”、“配置解析器”、“新增采集通道”章节内容,优化合入采集数据章节。 删除“批量取消阻断”章节,合入批量阻断/批量取消阻断章节。 优化资料描述。 2023-10-30 第八次正式发布。 更新创建/复制安全报告章节内容,支持配置发送报告相关信息。 更新查看安全报告章节内容,新增月报展示内容说明信息。 新增内置剧本和流程章节内容,补充内置剧本、流程和资产连接信息。 新增支持接入的日志章节内容,补充可接入云服务日志信息。 新增配置防线策略章节内容。 删除“提交流程版本”章节内容,并更新管理流程版本章节内容,合入提交流程版本内容。 更新购买标准版、购买专业版章节内容,更新主机配额描述信息。 调整文档结构并优化资料描述。 2023-09-25 第七次正式发布。 更新资产管理概述章节内容,新增资产来源以及对应的安全防护产品描述信息。 更新日志字段含义章节内容,更新WAF攻击日志字段说明。 更新工作空间概述章节内容,更新工作空间约束限制内容。 新增投递日志数据至LTS章节内容。 优化资料描述。 2023-08-10 第六次正式发布。 更新下载安全报告章节内容,支持下载多种格式报告。 更新查看待办任务章节内容,新增了备注信息。 新增查看已处理任务章节,支持查看已处理任务信息。 新增设置资产订阅章节内容,支持订阅其他region信息。 新增策略管理章节,支持统一管理防线策略和应急策略。 更新查看事件信息章节内容,可以查看受影响咨询信息。 更新关闭/删除事件章节内容,支持批量关闭和删除事件。 更新查看告警信息信息章节内容,可以查看受影响咨询信息。 更新告警转事件或关联事件章节内容,新增告警关联事件操作。 更新关闭/删除告警章节内容,支持批量关闭和删除告警。 新增告警处置建议章节内容,针对TOP告警新增处理建议。 更新日志字段含义章节内容,新增MTD告警字段说明。 更新安全编排使用流程章节内容,系统内置剧本默认已激活,无需手动操作。 新增查看自定义类型章节内容。 更新新增资产连接、管理资产连接章节内容,更新描述信息。 更新数据采集概述章节内容,增加了支持的安装系统。 更新“购买ECS”章节内容,增加了支持的安装系统。 更新管理解析器章节内容,支持自定义导入、导出解析器。 删除“修改资产信息同步策略”章节,系统自动同步资产信息,无需再通过剧本进行同步。 2023-06-30 第五次正式发布。 新增(可选)配置并启用流程、(可选)配置并启用剧本章节内容。 更新安全编排概述、安全编排使用流程章节内容,优化描述信息。 删除“新增剧本”、“新增流程”、“新增布局”、“新增数据类”、“新增数据字段”章节内容。 2023-05-25 第四次正式发布。 新增数据投递、服务委托授权章节内容。 删除“资产管理访问授权”、“基线检查访问授权”章节内容,委托权限功能单独统一管理。 更新综合态势感知大屏、值班响应大屏、资产大屏、威胁态势大屏、脆弱性大屏章节数据详细说明。 优化文档描述。 2023-04-25 第三次正式发布。 新增空间托管章节内容。 新增查看已购资源章节内容,支持统一管理已购资源。 新增脆弱性大屏、资产大屏、威胁态势大屏章节内容。 新增下载安全报告章节内容。 新增导入/导出资产、“配置资产管理策略”章节内容,支持导入资产和管理资产同步策略。 新增修复漏洞、导入/导出漏洞、忽略/取消忽略漏洞章节内容。 新增插件管理章节内容。 新增数据采集章节内容,支持采集数据到安全云脑进行统一管理。 新增导入/导出事件、导入/导出告警、导入/导出情报指标章节内容。 更新购买安全云脑章节内容,新增智能分析增值包内容、版本升级内容。 更新新增工作空间章节内容,更新参数描述信息。 更新创建/复制安全报告章节内容,新增支持创建周报、月报描述。 更新查看安全报告章节内容,新增安全报告模板内容描述信息。 更新查看资产信息章节内容,更新各类资产分类展示描述信息。 更新数据集成章节内容,新增新接入数据源产品描述信息。 2023-02-20 第二次正式发布。 刷新总览、态势总览章节内容,新增“合规检查”数据展示模块。 刷新购买增值包章节内容,新增安排编排支持包周期购买说明。 新增删除工作空间章节内容。 新增值班响应大屏章节内容。 刷新漏洞管理章节内容,新增“增漏洞统计”相关说明。 刷新事件管理、告警管理、情报管理章节内容,新增事件/告警/情报统计情况描述。 刷新“新增流程”章节内容,新增人工审核步骤,可以自定义审核人员。 新增目录定制章节内容。 2022-12-10 第一次正式发布。
  • 等保2.0三级要求—安全建设管理 表28 安全建设管理风险项检查项目 检查子项目 检查项目 云服务提供商选择 应选择安全合规的云服务提供商,其所提供的云计算平台应为其所承载的业务应用系统提供相应等级的安全保护能力。 应在服务水平协议中规定云服务的各项服务内容和具体技术指标。 应在服务水平协议规定云服务提供商的权限与责任,包括管理范围、职责划分、访问授权、隐私保护、行为准则、违约责任等。 应在服务水平协议中规定服务合约到期时,完整提供云服务客户数据,并承诺相关数据在云计算平台上清除。 应与选定的云服务提供商签署保密协议,要求其不得泄漏云服务客户数据。 供应链管理 应确保供应商的选择符合国家有关规定。 应将供应链安全事件信息或安全威胁信息及时传达到云服务客户。 应将供应商的重要变更及时传达到云服务客户,并评估变更带来的安全风险,采取措施对风险进行控制。
  • 等保2.0三级要求—安全运维管理 表22 安全运维管理风险项检查项目 检查子项目 检查项目 环境管理 应指定专门的部门或人员负责机房安全,对机房出入进行管理,定期对机房供配电、空调、温湿度控制、消防等设施进行维护管理。 应建立机房安全管理制度,对有关物理访问、物品带进出和环境安全等方面的管理作出规定。 应不在重要区域接待来访人员,不随意放置含有敏感信息的纸档文件和移动介质等。 资产管理 应编制并保存与保护对象相关的资产清单,包括资产责任部门、重要程度和所处位置等内容。 应根据资产的重要程度对资产进行标识管理,根据资产的价值选择相应的管理措施。 应对信息分类与标识方法作出规定,并对信息的使用、传输和存储等进行规范化管理。 介质管理 应将介质存放在安全的环境中,对各类介质进行控制和保护,实行存储环境专人管理,并根据存档介质的目录清单定期盘点。 应对介质在物理传输过程中的人员选择、打包、交付等情况进行控制,并对介质的归档和查询等进行登记记录。 设备维护管理 应对各种设备(包括备份和冗余设备)、线路等指定专门的部门或人员定期进行维护管理。 应建立配套设施、软硬件维护方面的管理制度,对其维护进行有效的管理,包括明确维护人员的责任、维修和服务的审批、维修过程的监督控制等。 信息处理设备应经过审批才能带离机房或办公地点,含有存储介质的设备带出工作环境时其中重要数据应加密。 含有存储介质的设备在报废或重用前,应进行完全清除或被安全覆盖,保证该设备上的敏感数据和授权软件无法被恢复重用。 漏洞和风险管理 应采取必要的措施识别安全漏洞和隐患,对发现的安全漏洞和隐患及时进行修补或评估可能的影响后进行修补。 应定期开展安全测评,形成安全测评报告,采取措施应对发现的安全问题。 网络和系统安全管理 应划分不同的管理员角色进行网络和系统的运维管理,明确各个角色的责任和权限。 应指定专门的部门或人员进行账户管理,对申请账户、建立账户、删除账户等进行控制。 应建立网络和系统安全管理制度,对安全策略、账户管理、配置管理、日志管理、日常操作、升级与打补丁、口令更新周期等方面作出规定。 应制定重要设备的配置和操作手册,依据手册对设备进行安全配置和优化配置等。 应详细记录运维操作日志,包括日常巡检工作、运行维护记录、参数的设置和修改等内容。 应指定专门的部门或人员对日志、监测和报警数据等进行分析、统计,及时发现可疑行为。 应严格控制变更性运维,经过审批后才可改变连接、安装系统组件或调整配置参数,操作过程中应保留不可更改的审计日志,操作结束后应同步更新配置信息库。 应严格控制运维工具的使用,经过审批后才可接入进行操作,操作过程中应保留不可更改的审计日志,操作结束后应删除工具中的敏感数据。 应严格控制远程运维的开通,经过审批后才可开通远程运维接口或通道,操作过程中应保留不可更改的审计日志,操作结束后立即关闭接口或通道。 应保证所有与外部的连接均得到授权和批准,应定期检查违反规定无线上网及其他违反网络安全策略的行为。 恶意代码防范管理 应提高所有用户的防恶意代码意识,对外来计算机或存储设备接入系统前进行恶意代码检查等。 应定期验证防范恶意代码攻击的技术措施的有效性。 配置管理 应记录和保存基本配置信息,包括网络拓扑结构、各个设备安装的软件组件、软件组件的版本和补丁信息、各个设备或软件组件的配置参数等。 应将基本配置信息改变纳入变更范畴,实施对配置信息改变的控制,并及时更新基本配置信息库。 密码管理 应遵循密码相关国家标准和行业标准。 应使用国家密码管理主管部门认证核准的密码技术和产品。 变更管理 应明确变更需求,变更前根据变更需求制定变更方案,变更方案经过评审、审批后方可实施。 应建立变更的申报和审批控制程序,依据程序控制所有的变更,记录变更实施过程。 应建立中止变更并从失败变更中恢复的程序,明确过程控制方法和人员职责,必要时对恢复过程进行演练。 备份与恢复管理 应识别需要定期备份的重要业务信息、系统数据及软件系统等。 应规定备份信息的备份方式、备份频度、存储介质、保存期等。 应根据数据的重要性和数据对系统运行的影响,制定数据的备份策略和恢复策略、备份程序和恢复程序等。 安全事件处置 应及时向安全管理部门报告所发现的安全弱点和可疑事件。 应制定安全事件报告和处置管理制度,明确不同安全事件的报告、处置和响应流程,规定安全事件的现场处理、事件报告和后期恢复的管理职责等。 应在安全事件报告和响应处理过程中,分析和鉴定事件产生的原因,收集证据,记录处理过程,总结经验教训。 对造成系统中断和造成信息泄漏的重大安全事件应采用不同的处理程序和报告程序。 应急预案管理 应规定统一的应急预案框架,包括启动预案的条件、应急组织构成、应急资源保障、事后教育和培训等内容。 应制定重要事件的应急预案,包括应急处理流程、系统恢复流程等内容。 应定期对系统相关的人员进行应急预案培训,并进行应急预案的演练。 应定期对原有的应急预案重新评估,修订完善。 外包运维管理 应确保外包运维服务商的选择符合国家的有关规定。 应与选定的外包运维服务商签订相关的协议,明确约定外包运维的范围、工作内容。 应保证选择的外包运维服务商在技术和管理方面均应具有按照等级保护要求开展安全运维工作的能力,并将能力要求在签订的协议中明。 应在与外包运维服务商签订的协议中明确所有相关的安全要求,如可能涉及对敏感信息的访问、处理、存储要求,对IT基础设施中断服务的应急保障要求等。
  • 等保2.0三级要求—安全通信网络 表24 安全通信网络风险项检查项目 检查子项目 检查项目 网络架构 应保证云计算平台不承载高于其安全保护等级的业务应用系统。 应实现不同云服务客户虚拟网络之间的隔离。 应具有根据云服务客户业务需求提供通信传输、边界防护、入侵防范等安全机制的能力。 应具有根据云服务客户业务需求自主设置安全策略的能力,包括定义访问路径、选择安全组件、配置安全策略。 应提供开放接口或开放安全服务,允许云服务客户接入第三方安全产品或在云计算平台选择第三方安全服务。
  • 等保2.0三级要求—安全计算环境 表26 安全计算环境风险项检查项目 检查子项目 检查项目 身份鉴别 当远程管理云计算平台的设备时,管理终端和云计算平台之间应建立双向身份验证机制。 访问控制 应保证当虚拟机迁移时,访问控制策略随其迁移。 应允许云服务客户设置不同虚拟机之间的访问控制策略。 入侵防范 应能检测虚拟机之间的资源隔离失效,并进行告警。 应能检测到非授权新建虚拟机或者重新启用虚拟机,并进行告警。 应能检测恶意代码感染及在虚拟机间蔓延情况,并进行告警。 镜像和快照保护 应针对重要业务系统提供加固的操作系统镜像或操作系统安全加固服务。 应提供虚拟机镜像、快照完整性检验功能,防止虚拟机镜像被恶意篡改。 应采取密码技术或其他技术手段防止虚拟机镜像、快照中可能存在的敏感资源被非法访问。 数据完整性和保密性 应确保云服务客户数据、用户个人信息等存储于中国境内,如需出境应遵循国家相关规定。 应确保只有在云服务客户授权下,云服务提供商或第三方才具有云服务客户数据的管理权限。 应确保虚拟机迁移过程中重要数据的完整性,并在检测到完整性受到破坏时采取必要的恢复措施。 应支持云服务客户部署密钥管理解决方案,保证云服务客户自行实现数据的加解密过程。 数据备份恢复 云服务客户应在本地保存其业务数据的备份。 应提供查询云服务客户数据及备份存储位置的能力。 云服务提供商的云存储服务应保证云服务客户数据存在多个可用的副本,各副本之间的内容应保持一致。 应为云服务客户将业务系统及数据迁移到其体云计算平台和本地系统提供技术手段,并协助完成迁移过程。 剩余信息保护 应保证虚拟机所使用的内存和存储空间回收时得到完全清除。 云服务客户删除业务应用数据时,云计算平台将云存储中所有副本删除。
  • 等保2.0三级要求—安全区域边界 表25 安全区域边界风险项检查项目 检查子项目 检查项目 访问控制 应在虚拟化网络边界部署访问控制机制,并设置访问控制规则。 应在不同等级的网络区域边界部署访问控制机制,设备访问控制规则 入侵防范 应能检测到云服务客户发起的网络攻击行为,并能记录攻击类型、攻击时间、攻击流量等。 应能检测到对虚拟网络节点的网络攻击行为,并能记录攻击类型、攻击时间、攻击流量等。 应能检测到虚拟机与宿主机、虚拟机与虚拟机之间的异常流量。 应在检测到网络攻击行为、异常流量情况时进行告警。 安全审计 应对云服务提供商和云服务客户在远程管理时执行的特权命令进行审计,至少包括虚拟机删除、虚拟机重启。 应保证云服务提供商对云服务客户系统和数据的操作可被云服务客户审计。
共100000条