华为云用户手册

  • Redis 6.0企业版主备实例架构设计 Redis 6.0企业版主备实例架构设计如图3所示。 图3 Redis 6.0企业版主备实例示意图 图说明如下: VPC 虚拟私有云。实例的内部所有服务器节点,都运行在相同VPC中。 VPC内访问,客户端需要与Redis 6.0企业版主备实例处于相同VPC,并且配置安全组访问规则。如何选择和配置Redis实例以及客户端的安全组。 客户应用 运行在E CS 上的客户应用程序,即Redis的客户端。 Redis实例兼容开源协议,可直接使用开源客户端进行连接,关于多语言客户端连接示例,请参考用户指南的连接缓存实例。 DCS缓存实例 DCS实例。主备实例包含了Master和Replica两个节点。 Redis 6.0企业版主备实例使用哨兵模式(Sentinel)进行管理,Sentinel会一直监控主备节点是否正常运行,当主节点出现故障时,进行主备倒换。 Sentinel对用户不可见,仅在服务内部中使用。Sentinel的详细介绍可参考什么是哨兵。 Redis的访问端口默认为6379。
  • 主备实例特点 DCS的主备实例在单机实例基础上,增强服务高可用以及数据高可靠性。 主备实例具有以下特性: 持久化,确保数据高可靠 实例包含一个主节点和一个备节点,都默认开启数据持久化。 Redis 3.0主备实例的备节点对用户不可见,不支持客户端直接读写数据。 Redis 4.0、Redis 5.0和Redis 6.0基础版主备实例的备节点对用户可见,用户可以通过只读地址连接到备节点上读取数据。 数据同步 主备节点通过增量数据同步的方式保持缓存数据一致。 当网络发生异常或有节点故障时,主备实例会在故障恢复后进行一次全量同步,保持数据一致性。 故障后自动切换主节点,服务高可用 当主节点故障后,连接会有秒级中断、不可用,备节点在30秒内自动完成主备切换,切换完成后恢复正常访问,无需用户操作,保证业务平稳运行。 多种容灾策略 跨AZ部署(可用区):DCS支持将主备实例的主备副本部署在不同的AZ内,节点间电力与网络均物理隔离。您可以将应用程序也进行跨AZ部署,从而达到数据与应用全部高可用。 读写分离 Redis 4.0、Redis 5.0和Redis 6.0基础版主备实例支持客户端读写分离,分别提供可读写的连接地址(主节点)和只读地址(备节点),客户端连接时,可分别选择主节点或备节点。 主备实例实现客户端读写分离,需要在客户端做配置。如需使用读写分离功能,推荐使用读写分离实例。
  • Redis 3.0主备实例架构设计 DCS的Redis 3.0主备实例架构,如图1所示。 图1 Redis 3.0主备实例示意图 示意图说明: VPC 虚拟私有云。实例的内部所有服务器节点,都运行在相同VPC中。 VPC内访问,客户端需要与主备实例处于相同VPC,并且配置安全组访问规则。 Redis 3.0主备实例除了VPC内访问,还支持公网访问,客户端可以部署在外部网络,并通过实例绑定的弹性公网ip地址访问Redis主备实例。Redis 4.0和5.0主备及Redis 6.0主备实例暂不支持公网访问。 相关参考:公网连接Redis3.0实例,如何选择和配置Redis实例以及客户端的安全组。 客户应用 运行在ECS上的客户应用程序,即Redis的客户端。 Redis实例兼容开源协议,可直接使用开源客户端进行连接,关于多语言客户端连接示例,请参考用户指南的连接缓存实例。 DCS缓存实例 DCS实例。主备实例包含了Master和Replica两个节点。默认开启数据持久化功能,同时保持节点间数据同步。 DCS实时探测实例可用性,当主节点故障后,备节点升级为主节点,恢复业务。 Redis的访问端口默认为6379。
  • Redis 4.0/5.0/6.0基础版主备实例架构设计 Redis 4.0/5.0/6.0基础版主备实例的架构设计,如下图所示。 图2 Redis 4.0/5.0/6.0基础版主备实例示意图 图说明如下: Redis 4.0/5.0/6.0基础版主备实例,分别提供可读写的域名连接地址(用于连接主节点)和只读地址(用于连接备节点)。 连接地址和只读地址,可通过控制台的实例详情页面获取。 Redis 4.0/5.0/6.0基础版主备实例使用哨兵模式(Sentinel)进行管理,Sentinel会一直监控主备节点是否正常运行,当主节点出现故障时,进行主备倒换。 Sentinel对用户不可见,仅在服务内部中使用。Sentinel的详细介绍可参考什么是哨兵。 只读节点和读写节点规格一致,用户创建主备实例时,默认包含一个主节点和一个备节点。 Redis 4.0/5.0/6.0基础版实例支持定义端口,如果不自定义端口,则使用默认端口6379。图中以默认端口6379为例,如果已自定义端口,请根据实际情况替换。 Redis 4.0/5.0/6.0基础版主备实例在只读域名不带负载均衡,对于可靠性和时延敏感的应用场景,建议使用集群或读写分离类型的实例。 Redis 4.0/5.0/6.0基础版主备实例的只读域名在从节点发生故障场景下会出现请求失败的情况,对于可靠性和时延敏感的应用场景,建议使用读写分离类型的实例。
  • DCS权限 默认情况下,管理员创建的 IAM 用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 DCS部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京四)对应的项目(cn-north-4)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问DCS时,需要先切换至授权区域。 权限根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对DCS服务,管理员能够控制IAM用户仅能对DCS实例进行指定的管理操作。权限策略以API接口为粒度进行权限拆分,DCS服务支持的API授权项请参见权限策略支持的授权项。 如表1所示,包括了DCS的所有系统权限。 表1 DCS系统策略 系统角色/策略名称 描述 类别 依赖关系 DCS FullAccess 分布式缓存服务所有权限,拥有该权限的用户可以操作所有分布式缓存服务的功能。 系统策略 购买包周期实例需要配置如下授权项: bss:order:update bss:order:pay 购买企业版实例需要配置如下授权项:iam:permissions:listRolesForAgencyOnProject iam:agencies:listAgenciesiam:roles:listRoles iam:permissions:grantRoleToAgencyOnProject iam:agencies:createAgency iam:agencies:deleteAgency DCS UserAccess 分布式缓存服务普通用户权限(无实例创建、修改、删除、扩容和缩容的权限)。 系统策略 无 DCS ReadOnlyAccess 分布式缓存服务的只读权限,拥有该权限的用户仅能查看分布式缓存服务数据。 系统策略 无 DCS Administrator 分布式缓存服务管理员权限,拥有该权限的用户可以操作所有分布式缓存服务的功能。 系统角色 依赖Server Administrator和Tenant Guest角色,在同项目中勾选依赖的角色。 DCS AgencyAccess 分布式缓存服务申请创建租户委托时需要授权的操作权限。 该权限为租户委托权限,用于租户在需要时委托DCS服务对租户资源做以下相关操作,与授权用户操作无关。 查询子网 查询子网列表 查询端口 查询端口列表 更新端口 创建端口 系统策略 无 由于DCS UserAccess策略和DCS FullAccess策略存在差异,如果您同时配置了这两个系统策略,由于DCS UserAccess策略存在Deny,根据Deny优先原则,您无法执行实例创建、修改、删除、扩容和缩容操作。 表2列出了DCS常用操作与系统策略的授权关系,您可以参照该表选择合适的系统策略。 表2 常用操作与系统策略的关系 操作 DCS FullAccess DCS UserAccess DCS ReadOnlyAccess DCS Administrator 修改实例配置参数 √ √ × √ 删除实例后台任务 √ √ × √ Web CLI √ √ × √ 修改实例运行状态 √ √ × √ 缓存实例扩容 √ × × √ 修改实例访问密码 √ √ × √ 修改缓存实例 √ × × √ 实例主备倒换 √ √ × √ 备份实例数据 √ √ × √ 分析实例的大key或者热key √ √ × √ 创建缓存实例 √ × × √ 删除实例数据备份文件 √ √ × √ 恢复实例数据 √ √ × √ 重置实例访问密码 √ √ × √ 迁移实例数据 √ √ × √ 下载备份实例数据 √ √ × √ 删除缓存实例 √ × × √ 查询实例配置参数 √ √ √ √ 查询实例数据恢复日志 √ √ √ √ 查询实例数据备份日志 √ √ √ √ 查询缓存实例信息 √ √ √ √ 查询实例后台任务 √ √ √ √ 查询实例列表 √ √ √ √ 操作慢查询 √ √ √ √
  • EVAL和EVALSHA相关命令使用限制 使用EVAL和EVALSHA命令时,命令参数中必须带有至少1个key。否则客户端会提示“ERR eval/evalsha numkeys must be bigger than zero in redis cluster mode”的错误。 使用EVAL和EVALSHA命令时,DCS Redis集群实例使用第一个key来计算slot,用户代码需要保证操作的key是在同一个slot,具体请参考Redis命令。 使用EVAL命令时: 建议使用前先了解Redis的lua脚本特性,具体可参考Lua脚本。 lua脚本的执行超时时间为5秒钟,建议不要在lua脚本中使用比较耗时的代码,比如长时间的sleep、大的循环等语句。 调用lua脚本时,建议不要使用随机函数去指定key,否则在主备节点上执行结果不一致,从而导致主备节点数据不一致。
  • 其他限制 单个Redis命令处理时长限制为15秒左右,超过15秒未处理完,会导致客户的其它业务失败,因此内部会触发主从倒换。 2018年7月10日前创建的Redis集群实例需要升级才支持以下命令: SINTER、 SDIFF、SUNION、PFCOUNT、PFMERGE、SINTERSTORE、SUNIONSTORE、SDIFFSTORE、SMOVE、ZUNIONSTORE、ZINTERSTORE、EVAL、EVALSHA、BITOP、RENAME、RENAMENX、RPOPLPUSH、MSETNX、SCRIPT LOAD、SCRIPT KILL、SCRIPT EXISTS、SCRIPT FLUSH。
  • Redis 4.0禁用的命令 以下列出了Redis 4.0实例禁用的命令。 表7 Redis 4.0单机和主备禁用命令 Generic (Key) Server MIGRATE SLAVEOF - SHUTDOWN - LASTSAVE - DEBUG相关类 - COMMAND - SAVE - BGSAVE - BGREWRITEAOF - SYNC - PSYNC 表8 Redis 4.0 Proxy集群实例禁用命令 Generic (Key) Server Sorted Set MIGRATE BGREWRITEAOF BZPOPMAX MOVE BGSAVE BZPOPMIN WAIT CLIENT相关命令 ZPOPMAX - DEBUG OBJECT ZPOPMIN - DEBUG SEGFAULT - - LASTSAVE - - PSYNC - - SAVE - - SHUTDOWN - - SLAVEOF - - LATENCY相关命令 - - MODULE相关命令 - - LOLWUT - - SWAPDB - - REPLICAOF - - SYNC - 表9 Redis 4.0 Cluster集群禁用命令 Generic (Key) Server Cluster MIGRATE SLAVEOF CLUSTER MEET - SHUTDOWN CLUSTER FLUSHSLOTS - LASTSAVE CLUSTER ADDSLOTS - DEBUG相关类 CLUSTER DELSLOTS - COMMAND CLUSTER SETSLOT - SAVE CLUSTER BUMPEPOCH - BGSAVE CLUSTER SAVECONFIG - BGREWRITEAOF CLUSTER FORGET - SYNC CLUSTER REPLICATE - PSYNC CLUSTER COUNT-FAILURE-REPORTS - - CLUSTER FAILOVER - - CLUSTER SET-CONFIG-EPOCH - - CLUSTER RESET 表10 Redis 4.0读写分离禁用命令 Generic Server Sorted Set MIGRATE BGREWRITEAOF BZPOPMAX WAIT BGSAVE BZPOPMIN - DEBUG OBJECT ZPOPMAX - DEBUG SEGFAULT ZPOPMIN - LASTSAVE - - LOLWUT - - MODULE LIST/LOAD/UNLOAD - - PSYNC - - REPLICAOF - - SAVE - - SHUTDOWN [NOSAVE|SAVE] - - SLAVEOF - - SWAPDB - - SYNC -
  • Redis 4.0支持的命令 表1和表2列举了华为云Redis 4.0单机/主备/Cluster集群实例支持的Redis命令。 表3和表4列举了华为云Redis 4.0 Proxy集群支持的Redis命令。 表5和表6列举了华为云Redis 4.0读写分离支持的Redis命令。 各个命令的具体详细语法请前往Redis官方网站(中文网站为:http://www.redis.cn/commands.html)查看,例如您想了解SCAN命令的使用,可在Redis官方网站中搜索框中输入“SCAN”查询详细介绍。 Redis高版本的命令,在低版本中不被兼容。判断DCS Redis是否支持某个命令,可通过在Redis-cli执行该命令,如果得到(error)ERR unknown command ‘xxx’的提示,则说明不支持该命令。 Redis 4.0 Cluster版本集群实例使用pipeline时,要确保管道中的命令都能在同一分片执行。 表1 Redis 4.0 单机/主备/Cluster集群支持的命令清单1 Generic (Key) String Hash List Set Sorted Set Server DEL APPEND HDEL BLPOP SADD ZADD FLUSHALL DUMP BITCOUNT HEXISTS BRPOP SCARD ZCARD FLUSHDB EXISTS BITOP HGET BRPOPLRUSH SDIFF ZCOUNT DBSIZE EXPIRE BITPOS HGETALL LINDEX SDIFFSTORE ZINCRBY TIME MOVE DECR HINCRBY LINSERT SINTER ZRANGE INFO PERSIST DECRBY HINCRBYFLOAT LLEN SINTERSTORE ZRANGEBYSCORE CLIENT KILL PTTL GET HKEYS LPOP SISMEMBER ZRANK CLIENT LIST RANDOMKEY GETRANGE HMGET LPUSHX SMEMBERS ZREMRANGEBYRANK CLIENT GETNAME RENAME GETSET HMSET LRANGE SMOVE ZREMRANGEBYCORE CLIENT SETNAME RENAMENX INCR HSET LREM SPOP ZREVRANGE CONFIG GET RESTORE INCRBY HSETNX LSET SRANDMEMBER ZREVRANGEBYSCORE MONITOR SORT INCRBYFLOAT HVALS LTRIM SREM ZREVRANK SLOW LOG TTL MGET HSCAN RPOP SUNION ZSCORE ROLE TYPE MSET HSTRLEN RPOPLPU SUNIONSTORE ZUNIONSTORE SWAPDB SCAN MSETNX HLEN RPOPLPUSH SSCAN ZINTERSTORE MEMORY OBJECT PSETEX - RPUSH - ZSCAN CONFIG PEXPIRE SET - RPUSHX - ZRANGEBYLEX - PEXPIREAT SETBIT - LPUSH - ZLEXCOUNT - KEYS SETEX - - - ZREMRANGEBYSCORE - - SETNX - - - ZREM - - SETRANGE - - - - - - STRLEN - - - - - - BITFIELD - - - - - 表2 Redis 4.0 单机/主备/Cluster集群支持的命令清单2 HyperLoglog Pub/Sub Transactions Connection Scripting Geo PFADD PSUBSCRIBE DISCARD AUTH EVAL GEOADD PFCOUNT PUBLISH EXEC ECHO EVALSHA GEOHASH PFMERGE PUBSUB MULTI PING SCRIPT EXISTS GEOPOS - PUNSUBSCRIBE UNWATCH QUIT SCRIPT FLUSH GEODIST - SUBSCRIBE WATCH SELECT(Cluster集群实例不支持) SCRIPT KILL GEORADIUS - UNSUBSCRIBE - - SCRIPT LOAD GEORADIUSBYMEMBER 表3 Redis 4.0 proxy集群支持的命令清单1 Generic (Key) String Hash List Set Sorted Set Server DEL APPEND HDEL BLPOP SADD ZADD FLUSHALL (不支持FLUSHALL SYNC) DUMP BITCOUNT HEXISTS BRPOP SCARD ZCARD FLUSHDB EXISTS BITOP HGET BRPOPLRUSH SDIFF ZCOUNT DBSIZE EXPIRE BITPOS HGETALL LINDEX SDIFFSTORE ZINCRBY TIME MOVE DECR HINCRBY LINSERT SINTER ZRANGE INFO PERSIST DECRBY HINCRBYFLOAT LLEN SINTERSTORE ZRANGEBYSCORE ROLE PTTL GET HKEYS LPOP SISMEMBER ZRANK MEMORY RENAME GETRANGE HMGET LPUSHX SMEMBERS ZREMRANGEBYRANK COMMAND RENAMENX GETSET HMSET LRANGE SMOVE ZREMRANGEBYCORE COMMAND COUNT RESTORE INCR HSET LREM SPOP ZREVRANGE COMMAND GETKEYS SORT INCRBY HSETNX LSET SRANDMEMBER ZREVRANGEBYSCORE COMMAND INFO TTL INCRBYFLOAT HVALS LTRIM SREM ZREVRANK CONFIG GET TYPE MGET HSCAN RPOP SUNION ZSCORE CONFIG RESETSTAT SCAN MSET HSTRLEN RPOPLPUSH SUNIONSTORE ZUNIONSTORE CONFIG REWRITE OBJECT MSETNX HLEN RPUSH SSCAN ZINTERSTORE CONFIG SET PEXPIRE PSETEX HKEYS RPUSHX - ZSCAN - PEXPIREAT SET - LPUSH - ZRANGEBYLEX - EXPIREAT SETBIT - - - ZLEXCOUNT - KEYS SETEX - - - ZREMRANGEBYSCORE - TOUCH SETNX - - - ZREM - UNLINK SETRANGE - - - ZREMRANGEBYLEX - RANDOMKEY STRLEN - - - ZREVRANGEBYLEX - - BITFIELD - - - - - - GETBIT - - - - - 表4 Redis 4.0 proxy集群支持的命令清单2 HyperLoglog Pub/Sub Transactions Connection Scripting Geo Cluster PFADD PSUBSCRIBE DISCARD AUTH EVAL GEOADD CLUSTER INFO PFCOUNT PUBLISH EXEC ECHO EVALSHA GEOHASH CLUSTER NODES PFMERGE PUBSUB MULTI PING SCRIPT EXISTS GEOPOS CLUSTER SLOTS - PUNSUBSCRIBE UNWATCH QUIT SCRIPT FLUSH GEODIST CLUSTER ADDSLOTS - SUBSCRIBE WATCH SELECT SCRIPT KILL GEORADIUS ASKING - UNSUBSCRIBE - CLIENT KILL SCRIPT LOAD GEORADIUSBYMEMBER READONLY - - - CLIENT LIST SCRIPT DEBUG YES|SYNC|NO GEOSEARCH READWRITE - - - CLIENT GETNAME - GEOSEARCHSTORE - - - - CLIENT SETNAME - - - 上表中的Cluster类命令,仅2022/9/1日及之后创建的proxy集群实例支持。 表5 Redis 4.0读写分离支持的命令清单1 Generic (Key) String Hash List Set Sorted Set Server DEL APPEND HDEL BLPOP SADD ZADD FLUSHALL (不支持FLUSHALL SYNC) DUMP BITCOUNT HEXISTS BRPOP SCARD ZCARD FLUSHDB EXISTS BITOP HGET BRPOPLRUSH SDIFF ZCOUNT DBSIZE EXPIRE BITPOS HGETALL LINDEX SDIFFSTORE ZINCRBY TIME MOVE DECR HINCRBY LINSERT SINTER ZRANGE INFO PERSIST DECRBY HINCRBYFLOAT LLEN SINTERSTORE ZRANGEBYSCORE MONITOR PTTL GET HKEYS LPOP SISMEMBER ZRANK SLOWLOG RANDOMKEY GETRANGE HMGET LPUSHX SMEMBERS ZREMRANGEBYRANK ROLE RENAME GETSET HMSET LRANGE SMOVE ZREMRANGEBYCORE SWAPDB RENAMENX INCR HSET LREM SPOP ZREVRANGE MEMORY RESTORE INCRBY HSETNX LSET SRANDMEMBER ZREVRANGEBYSCORE COMMAND SORT INCRBYFLOAT HVALS LTRIM SREM ZREVRANK COMMAND COUNT TTL MGET HSCAN RPOP SUNION ZSCORE COMMAND GETKEYS TYPE MSET HSTRLEN RPOPLPUSH SUNIONSTORE ZUNIONSTORE COMMAND INFO SCAN MSETNX HLEN RPUSH SSCAN ZINTERSTORE CONFIG GET OBJECT PSETEX - RPUSHX - ZSCAN CONFIG RESETSTAT PEXPIRE SET - LPUSH - ZRANGEBYLEX CONFIG REWRITE PEXPIREAT SETBIT - - - ZLEXCOUNT CONFIG SET EXPIREAT SETEX - - - ZREMRANGEBYSCORE - KEYS SETNX - - - ZREM - TOUCH SETRANGE - - - ZREMRANGEBYLEX - UNLINK STRLEN - - - ZREVRANGEBYLEX - - BITFIELD - - - - - - GETBIT - - - - - 表6 Redis 4.0读写分离支持的命令清单2 HyperLoglog Pub/Sub Transactions Connection Scripting Geo PFADD PSUBSCRIBE DISCARD AUTH EVAL GEOADD PFCOUNT PUBLISH EXEC ECHO EVALSHA GEOHASH PFMERGE PUBSUB MULTI PING SCRIPT EXISTS GEOPOS - PUNSUBSCRIBE UNWATCH QUIT SCRIPT FLUSH GEODIST - SUBSCRIBE WATCH SELECT SCRIPT KILL GEORADIUS - UNSUBSCRIBE - CLIENT KILL SCRIPT LOAD GEORADIUSBYMEMBER - - - CLIENT LIST SCRIPT DEBUG YES|SYNC|NO GEOSEARCH - - - CLIENT GETNAME - GEOSEARCHSTORE - - - CLIENT SETNAME - -
  • 数据保护技术 DCS通过多种数据保护手段和特性,保障DCS的数据安全可靠。 表1 DCS的数据保护手段和特性 数据保护手段 简要说明 详细介绍 容灾和多活 根据对数据与服务的不同可靠性要求,您可以选择将缓存实例部署在单可用区内(单机房),或者跨可用区(同城灾备)。 容灾多活策略 副本冗余 副本通过增量数据同步的方式保持缓存数据一致,当网络发生异常或节点故障时,通过冗余副本自动故障切换,并且故障恢复后进行一次全量同步,保持数据一致性。 数据复制 数据持久化 业务系统日常运行中可能出现一些小概率的异常事件。部分可靠性要求非常高的业务系统,除了要求缓存实例高可用,还要求缓存数据安全、可恢复,甚至永久保存,以便在缓存实例发生异常后能够使用备份数据进行恢复,保障业务正常运行。 备份与恢复 父主题: 安全
  • 参数说明 IF EXISTS 如果不存在相同名称的表,不会抛出一个错误,而会发出一个通知,告知表不存在。 table_name [*] | ONLY table_name | ONLY ( table_name ) table_name是需要修改的表名。 若声明了ONLY选项,则只有那个表被更改。若未声明ONLY,该表及其所有子表都将会被更改。另外,可以在表名称后面显示地增加*选项来指定包括子表,即表示所有后代表都被扫描,这是默认行为。 constraint_name 要删除的现有约束的名字。 index_name 索引名称。 storage_parameter 表的存储参数的名字。 分区管理新增的两个选项: PERIOD(interval类型) 设置分区管理中自动创建分区的周期。 PERIOD的范围要求以及开启该功能的约束请参考CREATE TABLE PARTITION。 在建表时,如果没有设置该参数,可以通过set的方式添加该参数,并开启自动创建分区功能;如果之前已经设置该参数,则通过set的方式修改该参数。 用户可以通过reset该参数的方式关闭自动创建分区功能,但是在自动删除分区功能存在的情况下,不支持关闭自动创建分区功能。 TTL(interval类型) 设置分区管理中自动删除分区的分区过期时间。 TTL的范围要求以及开启该功能的约束请参考CREATE TABLE PARTITION。 在建表时,如果没有设置该参数,可以通过set的方式添加该参数,并开启自动删除分区功能;如果之前已经设置该参数,则通过set的方式修改该参数。 用户可以通过reset该参数的方式关闭自动删除分区功能。 new_owner 表新拥有者的名字。 new_tablespace 表所属新的表空间名字。 column_name,column_1_name, column_2_name 现存的或新字段的名称。 data_type 新字段的类型,或者现存字段的新类型。 compress_mode 表字段的压缩可选项,当前仅对行存表有效。该子句指定该字段优先使用的压缩算法。 collation 字段排序规则名称。可选字段COLLATE指定了新字段的排序规则,如果省略,排序规则为新字段的默认类型。 USING expression USING子句声明如何从旧的字段值里计算新的字段值;如果省略,缺省从旧类型向新类型的赋值转换。如果从旧数据类型到新类型没有隐含或者赋值的转换,则必须提供一个USING子句。 ALTER TYPE的USING选项实际上可以声明涉及该行旧值的任何表达式,即它可以引用除了正在被转换的字段之外其他的字段。这样,就可以用ALTER TYPE语法做非常普遍性的转换。因为这个灵活性,USING表达式并没有作用于该字段的缺省值(如果有的话),结果可能不是缺省表达式要求的常量表达式。这就意味着如果从旧类型到新类型没有隐含或者赋值转换的话,即使存在USING子句,ALTER TYPE也可能无法把缺省值转换成新的类型。在这种情况下,应该用DROP DEFAULT先删除缺省,执行ALTER TYPE,然后使用SET DEFAULT增加一个合适的新缺省值。类似的考虑也适用于涉及该字段的索引和约束。 NOT NULL | NULL 设置列是否允许空值。 integer 带符号的整数常值。当使用PERCENT时表示按照表数据的百分比收集统计信息,integer的取值范围为0-100。 attribute_option 属性选项。 PLAIN | EXTERNAL | EXTENDED | MAIN 字段存储模式。 PLAIN必需用于定长的数值(比如integer)并且是内联的、不压缩的。 MAIN用于内联、可压缩的数据。 EXTERNAL用于外部保存、不压缩的数据。使用EXTERNAL将令在text和bytea字段上的子字符串操作更快,但付出的代价是增加了存储空间。 EXTENDED用于外部的压缩数据,EXTENDED是大多数支持非PLAIN存储的数据的缺省。 CHECK ( expression ) 每次将要插入的新行或者将要被更新的行必须使表达式结果为真才能成功,否则会抛出一个异常并且不会修改数据库。 声明为字段约束的检查约束应该只引用该字段的数值,而在表约束里出现的表达式可以引用多个字段。 目前,CHECK表达式不能包含子查询也不能引用除当前行字段之外的变量。 DEFAULT default_expr 给字段指定缺省值。 缺省表达式的数据类型必须和字段类型匹配。 缺省表达式将被用于任何未声明该字段数值的插入操作。如果没有指定缺省值则缺省值为NULL 。 default_expr中若使用后缀操作符(如!),需使用括号括起来。 UNIQUE [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] index_parameters UNIQUE ( column_name [, ... ] ) [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] index_parameters UNIQUE约束表示表里的一个或多个字段的组合必须在全表范围内唯一。 其中[ NULLS [ NOT ] DISTINCT | NULLS IGNORE ]字段用来指定Unique唯一索引中索引列NULL值的处理方式。 默认取值:该参数默认取值为空,即NULL值可重复插入。 在对插入的新数据和表中原始数据进行列的等值比较时,对于NULL值有以下三种处理方式: NULLS DISTINCT:NULL值互不相等,即NULL值可重复插入。 NULLS NOT DISTINCT:NULL值相等。若索引列全为NULL,则NULL值不可重复插入;部分索引列为NULL,只有非NULL值不相等,才可成功插入数据。 NULLS IGNORE:在等值比较时跳过NULL值。若索引列全为NULL,则NULL值可重复插入;部分索引列为NULL,只有非NULL值不相等,才可成功插入数据。 三种处理方式具体的行为如下表所示: 表1 唯一索引中索引列NULL值的处理方式 字段控制 索引列全为NULL 部分索引列为NULL NULLS DISTINCT 可重复插入 可重复插入 NULLS NOT DISTINCT 不可重复插入 非NULL值相等,不可插入;非NULL值不相等,则插入成功 NULLS IGNORE 可重复插入 非NULL值相等,不可插入;非NULL值不相等,则插入成功 PRIMARY KEY index_parameters PRIMARY KEY ( column_name [, ... ] ) index_parameters 主键约束表明表中的一个或者一些字段只能包含唯一(不重复)的非NULL值。 DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE 设置该约束是否可推迟,列存暂不支持。 DEFERRABLE:可以推迟到事务结尾使用SET CONSTRAINTS命令检查。 NOT DEFERRABLE:在每条命令之后马上检查。 INITIALLY IMMEDIATE:那么每条语句之后就立即检查它。 INITIALLY DEFERRED:只有在事务结尾才检查它。 WITH ( {storage_parameter = value} [, ... ] ) 为表或索引指定一个可选的存储参数。 COMPRESS|NOCOMPRESS NOCOMPRESS:如果指定关键字NOCOMPRESS则不会修改表的现有压缩特性。 COMPRESS:如果指定COMPRESS关键字,则对该表进行批量插入元组时触发该特性。 new_table_name 修改后新的表名称。 new_column_name 表中指定列修改后新的列名称。 new_constraint_name 修改后表约束的新名称。 new_schema 修改后新的模式名称。 CASCADE 级联删除依赖于被依赖字段或者约束的对象(比如引用该字段的视图)。 RESTRICT 如果字段或者约束还有任何依赖的对象,则拒绝删除该字段。这是缺省行为。 schema_name 表所在的模式名称。 cache_policy 表缓存策略,仅云原生3.0版本支持,具体取值参见▪cache_policy(仅云原生3.0版本支...
  • 表操作示例 重命名表: 1 ALTER TABLE CUSTOMER RENAME TO CUSTOMER_t; 给表增加一个新的约束: 1 ALTER TABLE customer_address ADD PRIMARY KEY(ca_address_sk); 根据已有唯一索引为表增加主键约束或唯一约束。 先给表CUSTOMER创建唯一索引CUSTOMER_constraint1,然后根据已有唯一索引增加主键约束,并对前面创建的索引rename: 1 2 CREATE UNIQUE INDEX CUSTOMER_constraint1 ON CUSTOMER(C_CUSTKEY); ALTER TABLE CUSTOMER ADD CONSTRAINT CUSTOMER_constraint2 PRIMARY KEY USING INDEX CUSTOMER_constraint1; 重命名表约束: 1 ALTER TABLE CUSTOMER RENAME CONSTRAINT CUSTOMER_constraint2 TO CUSTOMER_constraint; 删除表约束: 1 ALTER TABLE CUSTOMER DROP CONSTRAINT CUSTOMER_constraint; 给表增加一个索引: 1 ALTER TABLE CUSTOMER ADD INDEX CUSTOMER_index(C_CUSTKEY); 删除表索引: 1 2 ALTER TABLE CUSTOMER DROP INDEX CUSTOMER_index; ALTER TABLE CUSTOMER DROP KEY CUSTOMER_index; 向在一个列存表中添加局部聚簇列: 1 ALTER TABLE customer_address ADD CONSTRAINT customer_address_cluster PARTIAL CLUSTER KEY(ca_address_sk); 删除一个列存表中的局部聚簇列: 1 ALTER TABLE customer_address DROP CONSTRAINT customer_address_cluster; 切换列存表的存储格式: 1 ALTER TABLE customer_address SET (COLVERSION = 1.0); 修改表的分布方式: 1 ALTER TABLE customer_address DISTRIBUTE BY REPLICATION; 修改表模式: 1 ALTER TABLE customer_address SET SCHEMA tpcds; 单表冷热切换: 1 ALTER TABLE cold_hot_table REFRESH STORAGE; 修改表缓存策略(仅云原生3.0版本支持): ALTER TABLE orders SET (cache_policy = 'NONE');
  • 注意事项 只有表的所有者或者被授予了表ALTER权限的用户有权限执行ALTER TABLE命令,系统管理员默认拥有此权限。若要修改表的所有者或者修改表的模式,当前用户必须是该表的所有者或者系统管理员。 不支持修改存储参数ORIENTATION。 SET SCHEMA操作不支持修改为系统内部模式,当前仅支持用户模式之间的修改。 列存表支持PARTIAL CLUSTER KEY,不支持外键表级约束。列存表从8.1.1版本开始支持主键和唯一表级约束。 列存表只支持添加字段ADD COLUMN、修改字段的数据类型ALTER TYPE、设置单个字段的收集目标SET STATIS TICS 、支持更改表名字、支持删除字段DROP COLUMN。对于添加的字段和修改的字段类型要求是列存支持的数据类型。ALTER TYPE的USING选项只支持常量表达式和涉及本字段的表达式,暂不支持涉及其他字段的表达式。 列存表支持的字段约束包括NULL、NOT NULL和DEFAULT常量值;对字段约束的修改,当前支持对DEFAULT值的修改(SET DEFAULT)、删除(DROP DEFAULT)和NOT NULL约束的删除; 支持对列存表添加非空约束NOT NULL以及主键约束。该约束仅8.2.0及以上集群版本支持。 修改列存表存储参数COLVERSION或者enable_delta时,不能与其他ALTER操作同时进行。
  • 语法格式 修改表的定义。 1 2 ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name ) } action [, ... ]; 其中具体表操作action可以是以下子句之一: 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 column_clause | ADD table_constraint [ NOT VALID ] | ADD table_constraint_using_index | VALIDATE CONSTRAINT constraint_name | DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] | CLUSTER ON index_name | SET WITHOUT CLUSTER | SET ( {storage_parameter = value} [, ... ] ) | RESET ( storage_parameter [, ... ] ) | OWNER TO new_owner | SET TABLESPACE new_tablespace | SET {COMPRESS|NOCOMPRESS} | DISTRIBUTE BY { REPLICATION | ROUNDROBIN | { HASH ( column_name [,...] ) } } | TO { GROUP groupname | NODE ( nodename [, ... ] ) } | ADD NODE ( nodename [, ... ] ) | DELETE NODE ( nodename [, ... ] ) | DISABLE TRIGGER [ trigger_name | ALL | USER ] | ENABLE TRIGGER [ trigger_name | ALL | USER ] | ENABLE REPLICA TRIGGER trigger_name | ENABLE ALWAYS TRIGGER trigger_name | DISABLE ROW LEVEL SECURITY | ENABLE ROW LEVEL SECURITY | FORCE ROW LEVEL SECURITY | NO FORCE ROW LEVEL SECURITY | REFRESH STORAGE ADD table_constraint [ NOT VALID ] 给表增加一个新的约束。 ADD table_constraint_using_index 根据已有唯一索引为表增加主键约束或唯一约束。 VALIDATE CONSTRAINT constraint_name 验证一个外键或是一个使用NOT VALID选项创建的检查类约束,通过扫描全表来保证所有记录都符合约束条件。如果约束已标记为有效时,什么操作也不会发生。 DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] 删除一个表上的约束。 CLUSTER ON index_name 为将来的CLUSTER操作选择默认索引。实际上并没有重新盘簇化处理该表。 SET WITHOUT CLUSTER 从表中删除最新使用的CLUSTER索引。这样会影响将来那些没有声明索引的集群操作。 SET ( {storage_parameter = value} [, ... ] ) 修改表的一个或多个存储参数。 RESET ( storage_parameter [, ... ] ) 重置表的一个或多个存储参数。与SET一样,根据参数的不同可能需要重写表才能获得想要的效果。 OWNER TO new_owner 将表、序列、视图的属主改变成指定的用户。 SET {COMPRESS|NOCOMPRESS} 修改表的压缩特性。表压缩特性的改变只会影响后续批量插入的数据的存储方式,对已有数据的存储毫无影响。也就是说,表压缩特性的修改会导致该表中同时存在着已压缩和未压缩的数据。 DISTRIBUTE BY { REPLICATION | ROUNDROBIN | { HASH ( column_name [,...] ) } } 修改表的分布方式,在修改表分布信息的同时会将表数据在物理上按新分布方式重新分布,修改完成后建议对被修改表执行ANALYZE,以便收集全新的统计信息。 本操作属于重大变更操作,涉及表分布信息的修改以及数据的物理重分布,修改过程中会阻塞业务,修改完成后原有业务的执行计划会发生变化,请按照正规变更流程进行。 本操作属于资源密集操作,针对大表的分布方式修改,建议在计算和存储资源充裕情况下进行,保证整个集群和原表所在表空间有足够的剩余空间能存储一张与原表同等大小且按照新分布方式进行分布的表。 TO { GROUP groupname | NODE ( nodename [, ... ] ) } 此语法仅在扩展模式(GUC参数support_extended_features为on时)下可用。该模式谨慎打开,主要供内部扩容工具使用,一般用户不应使用该模式。 ADD NODE ( nodename [, ... ] ) 此语法主要供内部扩容工具使用,一般用户不建议使用。 DELETE NODE ( nodename [, ... ] ) 此语法主要供内部缩容工具使用,一般用户不建议使用。 DISABLE TRIGGER [ trigger_name | ALL | USER ] 禁用trigger_name所表示的单个触发器,或禁用所有触发器,或仅禁用用户触发器(此选项不包括内部生成的约束触发器,例如,可延迟唯一性和排除约束的约束触发器)。 应谨慎使用此功能,因为如果不执行触发器,则无法保证原先期望的约束的完整性。 ENABLE TRIGGER [ trigger_name | ALL | USER ] 启用trigger_name所表示的单个触发器,或启用所有触发器,或仅启用用户触发器。 ENABLE REPLICA TRIGGER trigger_name 触发器触发机制受配置变量session_replication_role的影响,当复制角色为“origin”(默认值)或“local”时,将触发简单启用的触发器。 配置为ENABLE REPLICA的触发器仅在会话处于“replica”模式时触发。 ENABLE ALWAYS TRIGGER trigger_name 无论当前复制模式如何,配置为ENABLE ALWAYS的触发器都将触发。 DISABLE/ENABLE ROW LEVEL SECURITY 开启或关闭表的行访问控制开关。 当开启行访问控制开关时,如果未在该数据表定义相关行访问控制策略,数据表的行级访问将不受影响;如果关闭表的行访问控制开关,即使定义了行访问控制策略,数据表的行访问也不受影响。详细信息参见CREATE ROW LEVEL SECURITY POLICY章节。 NO FORCE/FORCE ROW LEVEL SECURITY 强制开启或关闭表的行访问控制开关。 默认情况,表所有者不受行访问控制特性影响,但当强制开启表的行访问控制开关时,表的所有者(不包含系统管理员用户)会受影响。系统管理员可以绕过所有的行访问控制策略,不受影响。 REFRESH STORAGE 根据OBS冷热表storage_policy所定义的规则,将符合条件的本地热分区切换为存储在OBS上的冷分区。 例如创建OBS冷热表时,设置storage_policy 为 'LMT:10',则在执行该操作时可将10日前无修改的分区切为冷存储,存至OBS中。 其中列相关的操作column_clause可以是以下子句之一: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ADD [ COLUMN ] column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ] | MODIFY [ COLUMN ] column_name data_type | MODIFY [ COLUMN ] column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | MODIFY [ COLUMN ] column_name [ CONSTRAINT constraint_name ] NULL | MODIFY [ COLUMN ] column_name DEFAULT default_expr | MODIFY [ COLUMN ] column_name ON UPDATE on_update_expr | MODIFY [ COLUMN ] column_name COMMENT comment_text | DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ] | ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ] | ALTER [ COLUMN ] column_name { SET DEFAULT expression | DROP DEFAULT } | ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL | ALTER [ COLUMN ] column_name SET STATISTICS [PERCENT] integer | ADD STATISTICS (( column_1_name, column_2_name [, ...] )) | ADD { INDEX | UNIQUE [ INDEX ] } [ index_name ] ( { { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS LAST ] } [, ...] ) [ USING method ] [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] [ COMMENT 'text' ] LOCAL [ ( { PARTITION index_partition_name } [, ...] ) ] [ WITH ( { storage_parameter = value } [, ...] ) ] | ADD { INDEX | UNIQUE [ INDEX ] } [ index_name ] ({ { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] }[, ...] ) [ USING method ] [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] [ COMMENT 'text' ] [ WITH ( {storage_parameter = value} [, ... ] ) ] [ WHERE predicate ] | DROP { INDEX | KEY } index_name | CHANGE [ COLUMN ] old_column_name new_column_name data_type [ [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | [ CONSTRAINT constraint_name ] NULL | DEFAULT default_expr | COMMENT 'text' ] | DELETE STATISTICS (( column_1_name, column_2_name [, ...] )) | ALTER [ COLUMN ] column_name SET ( {attribute_option = value} [, ... ] ) | ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] ) | ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN } ADD [ COLUMN ] column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ] 向表中增加一个新的字段。用ADD COLUMN增加一个字段,所有表中现有行都初始化为该字段的缺省值(如果没有声明DEFAULT子句,值为NULL)。 ADD ( { column_name data_type [ compress_mode ] } [, ...] ) 向表中增加多列。 MODIFY [ COLUMN ] column_name data_type 修改表已存在字段的数据类型。 MODIFY [ COLUMN ] column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] 为表的某列添加not null约束,列存表暂不支持。 MODIFY [ COLUMN ] column_name [ CONSTRAINT constraint_name ] NULL 为表的某列移除not null约束。 MODIFY [ COLUMN ] column_name DEFAULT default_expr 修改表的default值。 MODIFY [ COLUMN ] column_name ON UPDATE on_update_expr 修改表中指定列的on update表达式,该列必须为timestamp类型或者timestamptz类型,当on_update_expr为NULL值时,则为删除ON UPDATE子句。 MODIFY [ COLUMN ] column_name COMMENT comment_text 修改表的注释信息。 DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ] 从表中删除一个字段,和这个字段相关的索引和表约束也会被自动删除。如果任何表之外的对象依赖于这个字段,必须声明CASCADE ,比如外键参考、视图等。 DROP COLUMN命令并不是物理上把字段删除,而只是简单地把它标记为对SQL操作不可见。随后对该表的插入和更新将在该字段存储一个NULL。因此,删除一个字段是很快的,但是它不会立即释放表在磁盘上的空间,因为被删除了的字段占据的空间还没有回收。这些空间将在执行VACUUM时而得到回收。 ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ] 改变表字段的数据类型,只允许相同大类的类型转换(数值之间,字符串之间,时间之间等)。该字段涉及的索引和简单的表约束将被自动地转换为使用新的字段类型,方法是重新分析最初提供的表达式。 ALTER TYPE要求重写整个表的特性有时候是一个优点,因为重写的过程消除了表中没用的空间。比如,要想立刻回收被一个已经删除的字段占据的空间,最快的方法是 1 ALTER TABLE table ALTER COLUMN anycol TYPE anytype; 这里的anycol是任何在表中还存在的字段,而anytype是和该字段的原类型一样的类型。这样的结果是在表上没有任何可见的语意的变化,但是这个命令强制重写,这样就删除了不再使用的数据。 ALTER [ COLUMN ] column_name { SET DEFAULT expression | DROP DEFAULT } 为一个字段设置或者删除缺省值。请注意缺省值只应用于随后的INSERT命令,它们不会修改表中已经存在的行。也可以为视图创建缺省,这个时候它们是在视图的ON INSERT规则应用之前插入到INSERT句中的。 ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL 修改一个字段是否允许NULL值或者拒绝NULL值。如果表在字段中包含非NULL,则只能使用SET NOT NULL。 ALTER [ COLUMN ] column_name SET STATISTICS [PERCENT] integer 为随后的ANALYZE操作设置针对每个字段的统计收集目标。目标的范围可以在0到10000之内设置。设置为-1时表示重新恢复到使用系统缺省的统计目标。 ADD { INDEX | UNIQUE [ INDEX ] } [ index_name ] ( { { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS LAST ] } [, ...] ) [ USING method ] [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] [ COMMENT 'text' ] LOCAL [ ( { PARTITION index_partition_name } [, ...] ) ] [ WITH ( { storage_parameter = value } [, ...] ) ] 为表的分区表创建索引,具体参数可参考CREATE INDEX。 ADD { INDEX | UNIQUE [ INDEX ] } [ index_name ] ({ { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] }[, ...] ) [ USING method ] [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] [ COMMENT 'text' ] [ WITH ( {storage_parameter = value} [, ... ] ) ] [ WHERE predicate ] 在表上创建索引,具体参数可参考CREATE INDEX。 DROP { INDEX | KEY } index_name 删除一个表上的索引。 CHANGE [ COLUMN ] old_column_name new_column_name data_type [ [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | [ CONSTRAINT constraint_name ] NULL | DEFAULT default_expr | COMMENT 'text' ] 修改表中列信息,可将旧列名修改成新列名,以及修改列字段信息。 {ADD | DELETE} STATISTICS ((column_1_name, column_2_name [, ...])) 用于添加和删除多列统计信息声明(不实际进行多列统计信息收集),以便在后续进行全表或全库analyze时进行多列统计信息收集。每组多列统计信息最多支持32列。不支持添加/删除多列统计信息声明的表:系统表、外表。 ALTER [ COLUMN ] column_name SET ( {attribute_option = value} [, ... ] ) ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] ) 设置/重置属性选项。 属性选项定义的参数有:n_distinct、n_distinct_inherited和cstore_cu_sample_ratio。n_distinct 设置并固定表的distinct值统计信息,n_distinct_inherited 设置并固定继承表的distinct值统计信息,cstore_cu_sample_ratio 设置对cstore列存表进行analyze时所选CU的比例。目前,禁止SET/RESET n_distinct_inherited参数。 n_distinct 手动设置该列的distinct值统计信息。 取值范围:-1.0 ~ INT_MAX 默认值:0,表示不设置。 n_distinct_inherited 手动设置继承表的该列的distinct值统计信息。 取值范围:-1.0 ~ INT_MAX 默认值:0,表示不设置。 cstore_cu_sample_ratio 设置列存表执行analyze,计算需要采样的CU个数时,需要扩大的倍数。 取值范围:1.0 ~ 10000.0 默认值:1.0 ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN } 为一个字段设置存储模式。这个设置控制这个字段是内联保存还是保存在一个附属的表里,以及数据是否要压缩。仅支持对行存表的设置;对列存表没有意义,执行时报错。SET STORAGE本身并不改变表上的任何东西,只是设置将来的表操作时,建议使用的策略。 其中列约束column_constraint为: 1 2 3 4 5 6 7 8 [ CONSTRAINT constraint_name ] { NOT NULL | NULL | CHECK ( expression ) | DEFAULT default_expr | UNIQUE [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] index_parameters | PRIMARY KEY index_parameters } [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] 其中列的压缩可选项compress_mode为: 1 [ DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS ] 其中根据已有唯一索引为表增加主键约束或唯一约束table_constraint_using_index为: 1 2 3 [ CONSTRAINT constraint_name ] { UNIQUE | PRIMARY KEY } USING INDEX index_name [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] 其中表约束table_constraint为: 1 2 3 4 5 6 [ CONSTRAINT constraint_name ] { CHECK ( expression ) | UNIQUE [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] ( column_name [, ... ] ) index_parameters | PRIMARY KEY ( column_name [, ... ] ) index_parameters } [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] 其中索引参数index_parameters为: 1 2 [ WITH ( {storage_parameter = value} [, ... ] ) ] [ USING INDEX TABLESPACE tablespace_name ]
  • API概览 通过使用企业项目管理服务所提供的接口,您可以实现对企业项目版本信息的查询,也可以实现对企业项目的管理操作。 表1 接口说明 API 说明 查询API版本列表 查询企业项目的API版本列表。 查询API版本号详情 查询企业项目的API版本号详情。 查询企业项目列表 查询当前用户已授权的企业项目列表。 创建企业项目 用户可以创建企业项目,将云资源按企业项目管理。 查询企业项目详情 查询企业项目详细信息。 修改企业项目 修改企业项目,默认企业项目(default)无法修改。 启用企业项目 可以实现对已存在企业项目进行启用操作。 停用企业项目 可以实现对已存在企业项目进行停用操作,默认企业项目(default)无法停用。 查询企业项目配额 查询企业项目的配额信息。 查询企业项目绑定的资源列表 查询企业项目下绑定的资源详情。 迁移资源 迁移资源到目标企业项目。 查询企业项目支持的服务 查询企业项目支持的云服务。
  • Python 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 28 29 30 31 32 33 34 # coding: utf-8 from huaweicloudsdkcore.auth.credentials import GlobalCredentials from huaweicloudsdkeps.v1.region.eps_region import EpsRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkeps.v1 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.getenv("CLOUD_SDK_AK") sk = os.getenv("CLOUD_SDK_SK") credentials = GlobalCredentials(ak, sk) \ client = EpsClient.new_builder() \ .with_credentials(credentials) \ .with_region(EpsRegion.value_of("cn-north-4")) \ .build() try: request = CreateEnterpriseProjectRequest() request.body = EnterpriseProject( type="prod", description="描述", name="enterprise_project1" ) response = client.create_enterprise_project(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg)
  • Go 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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/global" eps "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/eps/v1" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/eps/v1/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/eps/v1/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") auth := global.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() client := eps.NewEpsClient( eps.EpsClientBuilder(). WithRegion(region.ValueOf("cn-north-4")). WithCredential(auth). Build()) request := &model.CreateEnterpriseProjectRequest{} typeEnterpriseProject:= "prod" descriptionEnterpriseProject:= "描述" request.Body = &model.EnterpriseProject{ Type: &typeEnterpriseProject, Description: &descriptionEnterpriseProject, Name: "enterprise_project1", } response, err := client.CreateEnterpriseProject(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } }
  • 状态码 状态码 描述 201 Created 400 Bad Request 401 Unauthorized 402 Payment Required 403 Forbidden 404 Not Found 405 Method Not Allowed 406 Not Acceptable 409 Conflict 500 Internal Server Error 501 Not Implemented 502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout
  • Java 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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.GlobalCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.eps.v1.region.EpsRegion; import com.huaweicloud.sdk.eps.v1.*; import com.huaweicloud.sdk.eps.v1.model.*; public class CreateEnterpriseProjectSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); ICredential auth = new GlobalCredentials() .withAk(ak) .withSk(sk); EpsClient client = EpsClient.newBuilder() .withCredential(auth) .withRegion(EpsRegion.valueOf("cn-north-4")) .build(); CreateEnterpriseProjectRequest request = new CreateEnterpriseProjectRequest(); EnterpriseProject body = new EnterpriseProject(); body.withType("prod"); body.withDescription("描述"); body.withName("enterprise_project1"); request.withBody(body); try { CreateEnterpriseProjectResponse response = client.createEnterpriseProject(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }
  • 响应示例 状态码: 201 Created { "enterprise_project" : { "id" : "5aa119a8-d25b-45a7-8d1b-88e127885635", "name" : "enterprise_project1", "description" : "描述", "type" : "prod", "status" : 1, "created_at" : "2016-03-28T00:00:00Z", "updated_at" : "2016-03-28T00:00:00Z" } }
  • 响应参数 状态码: 201 表3 响应Body参数 参数 参数类型 描述 enterprise_project EpDetail object 企业项目。 表4 EpDetail 参数 参数类型 描述 id String 企业项目ID name String 企业项目名称 description String 企业项目描述 status Integer 企业项目状态。1启用,2停用 created_at String 创建时间,格式为UTC格式。如:2018-05-18T06:49:06Z。 updated_at String 修改时间,格式为UTC格式。如:2018-05-28T02:21:36Z。 type String 项目类型。prod-商用项目;poc-测试项目 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表6 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表8 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 402 表9 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表10 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 403 表11 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表12 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 404 表13 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表14 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 405 表15 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表16 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 406 表17 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表18 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 409 表19 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表20 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表21 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表22 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 501 表23 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表24 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 502 表25 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表26 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 503 表27 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表28 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 504 表29 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表30 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。说明:由于EPS是全局服务,因此调用IAM服务获取用户Token接口时需要注意作用域即scope字段应该设置为domain。响应消息头中X-Subject-Token的值即为用户Token。 X-Security-Token 否 String 如果正在使用临时安全凭据,则此header是必需的,该值是临时安全凭据的安全令牌(会话令牌)。 最小长度:0 最大长度:2048 表2 请求Body参数 参数 是否必选 参数类型 描述 name 是 String 只能由中文字符、英文字母(a~zA~Z)、数字(0~9)、下划线(_)、中划线(-)组成,且长度为[1-255]个字符。名称不能为大小写混合的default,且在租户账号内唯一。 description 否 String 最大长度512个字符。 最大长度:512 type 否 String 企业项目类型 缺省值:prod
  • 状态码 状态码 描述 200 OK 400 Bad Request 401 Unauthorized 402 Payment Required 403 Forbidden 404 Not Found 405 Method Not Allowed 406 Not Acceptable 407 Proxy Authentication Required 408 Request Timeout 409 Conflict 500 Internal Server Error 501 Not Implemented 502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout
  • 响应示例 状态码: 200 OK { "enterprise_projects" : [ { "id" : "6fbcf2f3-3164-4d32-9a3e-a8886dc38c24", "name" : "auto_test", "description" : "hello world!", "status" : 1, "type" : "prod", "created_at" : "2018-05-18T06:49:06Z", "updated_at" : "2018-05-28T02:21:36Z" } ], "total_count" : 1 }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 enterprise_projects Array of EpDetail objects 企业项目列表 total_count Integer 企业项目总数 表4 EpDetail 参数 参数类型 描述 id String 企业项目ID name String 企业项目名称 description String 企业项目描述 status Integer 企业项目状态。1启用,2停用 created_at String 创建时间,格式为UTC格式。如:2018-05-18T06:49:06Z。 updated_at String 修改时间,格式为UTC格式。如:2018-05-28T02:21:36Z。 type String 项目类型。prod-商用项目;poc-测试项目 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表6 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表8 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 402 表9 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表10 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 403 表11 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表12 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 404 表13 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表14 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 405 表15 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表16 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 406 表17 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表18 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 407 表19 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表20 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 408 表21 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表22 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 409 表23 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表24 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表25 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表26 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 501 表27 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表28 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 502 表29 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表30 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 503 表31 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表32 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 504 表33 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表34 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • URI GET /v1.0/enterprise-projects 表1 Query参数 参数 是否必选 参数类型 描述 id 否 String 企业项目ID,0表示默认企业项目 name 否 String 企业项目名称,支持模糊搜索 status 否 Integer 企业项目状态。 1--启用,2--停用 limit 否 Integer 查询记录数默认为1000,limit最多为1000, 最小值为1 offset 否 Integer 索引位置,从offset指定的下一条数据开始查询,必须为数字,不能为负数,默认为0 sort_key 否 String 返回结果按该关键字排序(支持updated_at,name等关键字,默认为“created_at”) sort_dir 否 String 降序或升序,默认为“desc” 。desc表示降序 。asc 表示升序 type 否 String 查询项目类型
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。说明:由于EPS是全局服务,因此调用IAM服务获取用户Token接口时需要注意作用域即scope字段应该设置为domain。响应消息头中X-Subject-Token的值即为用户Token。 X-Security-Token 否 String 如果正在使用临时安全凭据,则此header是必需的,该值是临时安全凭据的安全令牌(会话令牌)。 最小长度:0 最大长度:2048
  • 响应示例 状态码: 200 OK { "providers" : [ { "provider" : "evs", "provider_i18n_display_name" : "Elastic Volume Service", "resource_types" : { "resource_type_i18n_display_name" : "volume", "global" : false, "resource_type" : "disk", "regions" : [ "cn-north-1" ] } } ], "total_count" : 1 }
  • 状态码 状态码 描述 200 OK 400 Bad Request 401 Unauthorized 402 Payment Required 403 Forbidden 404 Not Found 405 Method Not Allowed 406 Not Acceptable 407 Proxy Authentication Required 408 Request Timeout 409 Conflict 500 Internal Server Error 501 Not Implemented 502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 providers Array of ProviderResponseBody objects 云服务列表 total_count Integer 当前支持的云服务总数 表4 ProviderResponseBody 参数 参数类型 描述 provider String 云服务名称 provider_i18n_display_name String 云服务显示名称,可以通过参数中的'locale'设置语言 resource_types Array of ResourceTypeBody objects 资源类型列表 表5 ResourceTypeBody 参数 参数类型 描述 resource_type String 资源类型名称 resource_type_i18n_display_name String 资源类型显示名称,可以通过参数中'locale'设置语言 regions Array of strings 支持的region列表 global Boolean 是否是全局类型的资源 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表7 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表8 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表9 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 402 表10 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表11 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 403 表12 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表13 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 404 表14 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表15 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 405 表16 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表17 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 406 表18 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表19 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 407 表20 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表21 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 408 表22 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表23 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 409 表24 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表25 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表26 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表27 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 501 表28 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表29 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 502 表30 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表31 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 503 表32 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表33 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 504 表34 响应Body参数 参数 参数类型 描述 error RespErrorMessage object 错误请求信息 表35 RespErrorMessage 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
共100000条