华为云用户手册

  • 响应示例 1 2 3 4 5 6 7 8 9 10 11 12 13 { "keypair": { "created_at": "2019-05-07T12:06:13.681238", "deleted": false, "deleted_at": null, "fingerprint": "9d:00:f4:d7:26:6e:52:06:4c:c1:d3:1d:fd:06:66:01", "id": 1, "name": "keypair-3582d8b7-e588-4aad-b7f7-f4e76f0e4314", "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYJrTVpcMwFqQy/oMvtUSRofZdSRHEwrsX8AYkRvn2ZnCXM+b6+GZ2NQuuWj+ocznlnwiGFQDsL/yeE+/kurqcPJFKKp60mToXIMyzioFxW88fJtwEWawHKAclbHWpR1t4fQ4DS+/sIbX/Yd9btlVQ2tpQjodGDbM9Tr9/+/3i6rcR+EoLqmbgCgAiGiVV6VbM2Zx79yUwd+GnQejHX8BlYZoOjCnt3NREsITcmWE9FVFy6TnLmahs3FkEO/QGgWGkaohAJlsgaVvSWGgDn2AujKYwyDokK3dXyeX3m2Vmc3ejiqPa/C4nRrCOlko5nSgV/9IXRx1ERImsqZnE9usB Generated-by-Nova", "updated_at": null, "user_id": "fake" } }
  • URI GET /v2.1/{project_id}/servers/{server_id}/tags/{tag} 参数说明请参见表1。 表1 参数说明 参数 是否必选 描述 project_id 是 项目ID。 获取方式请参见获取项目ID。 server_id 是 裸金属服务器ID。 可以从裸金属服务器控制台查询,或者通过调用查询裸金属服务器列表(OpenStack原生)获取。 tag 是 待查询标签的key。 约束: 中文或特殊字符需要进行URLEncode。 如果未指定标签的key,将返回该裸金属服务器所有的标签。
  • 响应参数 参数 参数类型 描述 absolute Object 租户配额信息,详情请参见表2。 以下参数值为“-1”时,表示无数量限制。 表2 absolute数据结构说明 参数 参数类型 描述 maxTotalInstances Integer 裸金属服务器最大申请数量。 maxTotalCores Integer CPU核数最大申请数量。 maxTotal RAM Size Integer 内存最大申请容量(单位:MB)。 maxTotalKeypairs Integer 可以申请的SSH密钥对最大数量。 maxServerMeta Integer 可输入元数据的最大长度。 maxPersonality Integer 可注入文件的最大个数。 maxPersonalitySize Integer 注入文件内容的最大长度(单位:Byte)。 maxServerGroups Integer 服务器组的最大个数。 maxServerGroupMembers Integer 服务器组中的最大裸金属服务器数。 totalServerGroupsUsed Integer 已使用的服务器组个数。 maxSecurityGroups Integer 安全组最大使用个数。 说明: 具体配额限制请以VPC配额限制为准。 maxSecurityGroupRules Integer 安全组中安全组规则最大的配置个数。 说明: 具体配额限制请以VPC配额限制为准。 maxTotalFloatingIps Integer 最大的弹性IP使用个数。 maxImageMeta Integer 镜像元数据最大的长度。 totalInstancesUsed Integer 当前裸金属服务器使用个数。 totalCoresUsed Integer 当前已使用CPU核数。 totalRAMUsed Integer 当前内存使用容量(单位:MB)。 totalSecurityGroupsUsed Integer 当前安全组使用个数。 totalFloatingIpsUsed Integer 当前弹性IP使用个数。
  • 响应示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 { "absolute": { "maxServerMeta": 128, "maxPersonality": 5, "maxImageMeta": 128, "maxPersonalitySize": 10240, "maxSecurityGroupRules": 20, "maxTotalKeypairs": 100, "totalRAMUsed": 799836, "totalInstancesUsed": 21, "maxSecurityGroups": 10, "totalFloatingIpsUsed": 0, "maxTotalCores": -1, "totalSecurityGroupsUsed": 1, "maxTotalFloatingIps": 10, "maxTotalInstances": 100, "totalCoresUsed": 148, "maxTotalRAMSize": -1, "maxServerGroups": -1, "maxServerGroupMembers": -1, "totalServerGroupsUsed": 1 } }
  • 前提条件 由于某些机型的服务器没有配备SDI卡,或者其他服务器本身的原因,有些规格的裸金属服务器不支持挂载云硬盘。因此,您需要先确认裸金属服务器是否支持挂载云硬盘。判断方式如下: 调用查询规格详情和规格扩展信息列表API,确定响应参数中某个规格对应的“baremetal:__support_evs”的取值,如果为“true”表示支持挂载云硬盘,为“false”表示不支持。有些裸金属服务器规格中无此参数,也表示不支持云硬盘。
  • 操作步骤 创建云硬盘。 接口相关信息 URI格式:POST /v2/{project_id}/volumes 详情请参考“创建云硬盘”。 请求示例 POST https://{EVS Endpoint}/v2/05041fffa40025702f6dc009cc6f8f33/volumes {EVS Endpoint}信息请从“地区和终端节点”获取。 Body: { "volume": { "name": "openapi_vol01", "availability_zone": "cn-north-4a", "description": "create for api test", "volume_type": "SSD", "metadata": { "hw:passthrough": "true" }, "size": 40 } } 裸金属服务器仅支持挂载S CS I类型的云硬盘,因此“hw:passthrough”参数必须取值“true”。 响应示例 { "volume": { "attachments": [], "links": [ { "href": "https://evs.cn-north-4.myhuaweicloud.com/v2/05041fffa40025702f6dc009cc6f8f33/volumes/8ae4ff5b-7e6e-492f-b83a-8a51fdfa3111", "rel": "self" }, { "href": "https://evs.cn-north-4.myhuaweicloud.com/05041fffa40025702f6dc009cc6f8f33/volumes/8ae4ff5b-7e6e-492f-b83a-8a51fdfa3111", "rel": "bookmark" } ], "availability_zone": "cn-north-4a", "encrypted": false, "updated_at": "2020-11-09T08:19:22.077967", "replication_status": "disabled", "storage_cluster_id": null, "snapshot_id": null, "id": "8ae4ff5b-7e6e-492f-b83a-8a51fdfa3111", "size": 40, "user_id": "0504186e6a8010e01f3ec009a7279baa", "metadata": { "hw:passthrough": "true" }, "status": "creating", "description": "create for api test", "multiattach": false, "source_volid": null, "consistencygroup_id": null, "name": "openapi_vol01", "bootable": "false", "created_at": "2020-11-09T08:19:22.061273", "volume_type": "SSD", "shareable": false } } 记录响应中volume的“ID”。 挂载云硬盘。 接口相关信息 URI格式:POST /v1/{project_id}/baremetalservers/{server_id}/attachvolume 详情请参考裸金属服务器挂载云硬盘。 请求示例 POST https://{BMS Endpoint}/v1/05041fffa40025702f6dc009cc6f8f33/baremetalservers/9ab74d89-61e7-4259-8546-465fdebe4944/attachvolume {BMS Endpoint}信息请从“地区和终端节点”获取。 Body: { "volumeAttachment": { "volumeId": "8ae4ff5b-7e6e-492f-b83a-8a51fdfa3111", "device": "/dev/sdb" } } 响应示例 { "volumeAttachment": { "id": "b53f23bd-ee8f-49ec-9420-d1acfeaf91d6", "volumeId": "8ae4ff5b-7e6e-492f-b83a-8a51fdfa3111", "serverId": "9ab74d89-61e7-4259-8546-465fdebe4944", "device": "/dev/sdb" } } 确认挂载云硬盘是否成功。 接口相关信息 URI格式:GET /v1/{project_id}/baremetalservers/{server_id}/os-volume_attachments 详情请参考查询裸金属服务器挂载的云硬盘信息。 请求示例 GET https://{BMS Endpoint}/v1/05041fffa40025702f6dc009cc6f8f33/baremetalservers/9ab74d89-61e7-4259-8546-465fdebe4944/os-volume_attachments {BMS Endpoint}信息请从“地区和终端节点”获取。 响应示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 { "volumeAttachments": [ { "device": "/dev/sdd", "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "serverId": "9ab74d89-61e7-4259-8546-465fdebe4944", "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803" }, { "device": "/dev/sdb", "id": "b53f23bd-ee8f-49ec-9420-d1acfeaf91d6", "serverId": "9ab74d89-61e7-4259-8546-465fdebe4944", "volumeId": "8ae4ff5b-7e6e-492f-b83a-8a51fdfa3111" } ] }
  • 云审计 服务支持的FunctionGraph操作列表 云审计支持的FunctionGraph操作列表如表1所示。 表1 云审计服务支持的FunctionGraph操作列表 操作名称 资源类型 事件名称 创建函数 Functions createFunction 删除函数 Functions deleteFunction 修改函数信息 Functions updateFunctionConfig 发布函数版本 FunctionVersions publishFunctionVersion 删除函数版本别名 FunctionVersionsAlias deleteVersionAlias 删除函数触发器 Trigger deleteTrigger 创建函数触发器 Trigger createTrigger 停用函数触发器 Trigger disableTrigger 启用函数触发器 Trigger enableTrigger 父主题: 审计
  • 概述 函数是处理事件的自定义代码,您可以使用空白模板函数创建函数,根据实际业务场景进行函数配置。 由于FunctionGraph承担计算资源的管理工作,在函数完成编码以后,需要为函数设置运算资源等信息,目前主要是在FunctionGraph函数控制台完成。 创建函数时可以使用空模板,也可以使用示例模板创建函数、使用容器镜像部署函数。 使用空模板创建函数时,需要设置基础配置信息和代码信息,如表1所示,带*参数为必填项。 每个FunctionGraph函数都运行在其自己的环境中,有其自己的资源和文件系统。
  • 查看代码信息 查看代码属性 代码属性展示最新部署代码的大小及上次修改时间。 图3 查看代码属性 查看基本信息 函数创建完成后,各语言默认内存和执行超时时间如图4所示,请根据实际业务评估,若需修改“函数执行入口”、“内存(MB)”“执行超时时间(秒)”,可单击“编辑”,在常规设置中修改配置信息,具体请参见配置常规信息。 图4 编辑基本信息 函数一旦创建,便不能修改运行时语言。 表2 各语言默认基本信息 Runtime 默认基本信息 JAVA 内存(MB):512MB 函数执行入口:com.demo.TriggerTests.apigTest 执行超时时间(秒):15s Node.js 内存(MB):128 MB 函数执行入口:index.handler 执行超时时间(秒):3s Custom 内存(MB):128 MB 函数执行入口:bootstrap 执行超时时间(秒):3s PHP 内存(MB):128 MB 函数执行入口:index.handler 执行超时时间(秒):3s Python 内存(MB):128 MB 函数执行入口:index.handler 执行超时时间(秒):3s Go 1.x 内存(MB):128 MB 函数执行入口:handler 执行超时时间(秒):3s
  • 在代码中导入sklearn并使用 # 导入 sklearn 相关内容 from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier def handler (event, context): iris=datasets.load_iris() iris_X=iris.data iris_y=iris.target X_train,X_test,y_train,y_test=train_test_split(iris_X,iris_y,test_size=0.3) knn=KNeighborsClassifier() knn.fit(X_train,y_train) print(knn.predict(X_test)) return y_test
  • 在代码中导入gym并使用 # 导入 gym 依赖 import gym env = gym.make('CartPole-v0') env.reset() def handler(event,context): for _ in range(10): env.render() observation, reward, done, info, _ = env.step(env.action_space.sample()) # take a random action temp = env.step(env.action_space.sample()) # take a random action print('observation:{}, reward:{}, done:{}, info:{}'.format(observation, reward, done, info)) env.close()
  • 在代码中导入torch并使用 # -*- coding:utf-8 -*- import json # 导入torch依赖 import torch as t import numpy as np def handler (event, context): print("start training!") train() print("finished!") return { "statusCode": 200, "isBase64Encoded": False, "body": json.dumps(event), "headers": { "Content-Type": "application/json" } } def get_fake_data(batch_size=8): x = t.rand(batch_size, 1) * 20; y = x * 2 + (1 + t.randn(batch_size, 1)) * 3 return x, y def train(): t.manual_seed(1000) x, y = get_fake_data() w = t.rand(1, 1) b = t.zeros(1, 1) lr = 0.001 for ii in range(2000): x, y = get_fake_data() y_pred = x.mm(w) + b.expand_as(y) loss = 0.5 * (y_pred - y) ** 2 loss = loss.sum() dloss = 1 dy_pred = dloss * (y_pred - y) dw = x.t().mm(dy_pred) db = dy_pred.sum() w.sub_(lr * dw) b.sub_(lr * db) if ii % 10 == 0: x = t.arange(0, 20).view(-1, 1) y = x.float().mm(w)+ b.expand_as(x) x2, y2 = get_fake_data(batch_size=20) print("w=",w.item(), "b=",b.item())
  • 在代码中导入tensorflow并使用 import json import random # 导入 TensorFlow 依赖库 import tensorflow as tf def handler (event, context): TRUE_W = random.randint(0,9) TRUE_b = random.randint(0,9) NUM_SAMPLES = 100 X = tf.random.normal(shape=[NUM_SAMPLES, 1]).numpy() noise = tf.random.normal(shape=[NUM_SAMPLES, 1]).numpy() y = X * TRUE_W + TRUE_b + noise model = tf.keras.layers.Dense(units=1) EPOCHS = 20 LEARNING_RATE = 0.002 print("start training") for epoch in range(EPOCHS): with tf.GradientTape() as tape: y_ = model(X) loss = tf.reduce_sum(tf.keras.losses.mean_squared_error(y, y_)) grads = tape.gradient(loss, model.variables) optimizer = tf.keras.optimizers.SGD(LEARNING_RATE) optimizer.apply_gradients(zip(grads, model.variables)) print('Epoch [{}/{}], loss [{:.3f}]'.format(epoch, EPOCHS, loss)) print("finished") print(TRUE_W,TRUE_b) print(model.variables) return { "statusCode": 200, "isBase64Encoded": False, "body": json.dumps(event), "headers": { "Content-Type": "application/json" } } class Model(object): def __init__(self): self.W = tf.Variable(tf.random.uniform([1])) self.b = tf.Variable(tf.random.uniform([1])) def __call__(self, x): return self.W * x + self.b
  • 数据库对象命名 数据库对象命名需要满足约束:非时序表长度不超过63个字节,时序表长度不超过53个字符,以字母或下划线开头,中间字符可以是字母、数字、下划线、$、#。 【建议】避免使用保留或者非保留关键字命名数据库对象。 可以使用select * from pg_get_keywords()查询 GaussDB 的关键字,或者在关键字章节中查看。 【建议】避免使用双引号括起来的字符串来定义数据库对象名称,除非需要限制数据库对象名称的大小写。数据库对象名称大小写敏感会使定位问题难度增加。 【建议】数据库对象命名风格务必保持统一。 增量开发的业务系统或进行业务迁移的系统,建议遵守历史的命名风格。 建议使用多个单词组成,以下划线分割。 数据库对象名称建议能够望文知意,尽量避免使用自定义缩写(可以使用通用的术语缩写进行命名)。例如,在命名中可以使用具有实际业务含义的英文词汇或汉语拼音,但规则应该在数据库实例范围内保持一致。 变量名的关键是要具有描述性,即变量名称要有一定的意义,变量名要有前缀标明该变量的类型。 【建议】表对象的命名应该可以表征该表的重要特征。例如,在表对象命名时区分该表是普通表、临时表还是非日志表: 普通表名按照数据集的业务含义命名。 临时表以“tmp_+后缀”命名。 非日志表以“ul_+后缀”命名。 外表以“f_+后缀”命名。 不创建以redis_为前缀的数据库对象。 不创建以mlog_和以matviewmap_为前缀的数据库对象。 【建议】非时序表对象命名建议不要超过63字节。如果过该长度内核会对表名进行截断,从而造成和设置值不一致的现象。且在不同字符集下,可能造成字符被截断,出现预期外的字符。 父主题: 开发设计建议
  • 语法格式 修改二级分区表分区包括修改表分区主语法、修改表分区名称的语法和重置分区ID的语法。 修改表分区主语法。 ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )} action [, ... ]; 其中action统指如下分区维护子语法。当存在多个分区维护子句时,保证了分区的连续性,无论这些子句的排序如何,GaussDB总会先执行DROP PARTITION再执行ADD PARTITION操作,最后顺序执行其它分区维护操作。 move_clause | exchange_clause | row_clause | merge_clause | modify_clause | add_clause | drop_clause | split_clause | truncate_clause move_clause子语法用于移动分区到新的表空间。 MOVE SUBPARTITION { subpartion_name | FOR ( subpartition_value [, ...] ) } TABLESPACE tablespacename exchange_clause子语法用于把普通表的数据迁移到指定的分区。 EXCHANGE SUBPARTITION { ( subpartition_name ) | FOR ( subpartition_value [, ...] ) } WITH TABLE {[ ONLY ] ordinary_table_name | ordinary_table_name * | ONLY ( ordinary_table_name )} [ { WITH | WITHOUT } VALIDATION ] [ VERBOSE ] [ UPDATE GLOBAL INDEX ] 进行交换的普通表和分区必须满足如下条件: 普通表和分区的列数目相同,对应列的信息严格一致,包括:列名、列的数据类型、列约束、列的Collation信息、列的存储参数、列的压缩信息等。 普通表和分区的表压缩信息严格一致。 普通表索引和分区Local索引个数相同,且对应索引的信息严格一致。 普通表和分区的表约束个数相同,且对应表约束的信息严格一致。 普通表不可以是临时表,分区表只能是二级分区表。 普通表和分区表上不可以有动态数据脱敏,行访问控制约束。 完成交换后,普通表和分区的数据被置换,同时普通表和分区的表空间信息被置换。此时,普通表和分区的统计信息变得不可靠,需要对普通表和分区重新执行analyze。 由于非分区键不能建立本地唯一索引,只能建立全局唯一索引,所以如果普通表含有唯一索引时,可能会导致不能交换数据。 如果需要进行数交换数据操作可以通过创建中间表的方式,先将分区数据插入到中间表,truncate分区,普通表数据插入分区表,drop普通表,重命名中间表的方式完成数据交换操作。 如果在普通表/分区表上进行了drop column操作,被删除的列依然物理存在,所以需要保证普通表和分区的被删除列也严格对齐才能交换成功。 row_clause子语法用于设置分区表的行迁移开关。 { ENABLE | DISABLE } ROW MOVEMENT merge_clause子语法用于把多个分区合并成一个分区。一个命令中合并的源分区上限为300。 MERGE SUBPARTITIONS { subpartition_name } [, ...] INTO SUBPARTITION partition_name [ TABLESPACE tablespacename ] [ UPDATE GLOBAL INDEX ] 对于范围分区,MERGE分区要求源分区的范围连续递增,且MERGE后的分区名可以与最后一个源分区名相同;对于列表分区,则源分区无顺序要求,且MERGE后的分区名可以与任一源分区名相同。如果MERGE后的分区名与源分区名相同,视为同一个分区。 USTORE存储引擎表不支持在事务块/存储过程中执行ALTER TABLE MERGE SUBPARTITIONS的操作。 modify_clause子语法用于设置分区索引是否可用。语法可以作用在一级分区上。 MODIFY PARTITION partition_name { UNUSABLE LOCAL INDEXES | REBUILD UNUSABLE LOCAL INDEXES } 也可以作用在二级分区上。 MODIFY SUBPARTITION partition_name { UNUSABLE LOCAL INDEXES | REBUILD UNUSABLE LOCAL INDEXES } add_clause子语法用于为指定的分区表添加一个或多个分区。语法可以作用在一级分区上。 ADD {partition_less_than_item | partition_list_item } [ ( subpartition_definition_list ) ] 也可以作用在二级分区上。 MODIFY PARTITION partition_name ADD subpartition_definition 其中,分区项partition_less_than_item为RANGE分区定义语法,具体语法如下。 PARTITION partition_name VALUES LESS THAN ( partition_value | MAXVALUE ) [ TABLESPACE tablespacename ] 分区项partition_list_item为LIST分区定义语法,具体语法如下。 PARTITION partition_name VALUES ( partition_value [, ...] | DEFAULT ) [ TABLESPACE tablespacename ] subpartition_definition_list为1到多个二级分区subpartition_definition对象,subpartition_definition具体语法如下。 SUBPARTITION subpartition_name [ VALUES LESS THAN ( partition_value | MAXVALUE ) | VALUES ( partition_value [, ...] | DEFAULT )] [ TABLESPACE tablespace ] 若一级分区为HASH分区,不支持以ADD形式新增一级分区;若二级分区为HASH分区,不支持以MODIFY形式新增二级分区。 drop_clause子语法用于删除分区表中的指定分区。语法可以作用在一级分区上。 DROP PARTITION { partition_name | FOR ( partition_value ) } [ UPDATE GLOBAL INDEX ] 也可以作用在二级分区上。 DROP SUBPARTITION { subpartition_name | FOR ( partition_value, subpartition_value ) } [ UPDATE GLOBAL INDEX ] 若一级分区为HASH分区,不支持删除一级分区;若二级分区为HASH分区,不支持删除二级分区。 不支持删除唯一子分区。 split_clause子语法用于把一个分区切割成多个分区。 SPLIT SUBPARTITION { subpartition_name| FOR ( subpartition_value [, ...] ) } { split_point_clause | no_split_point_clause } [ UPDATE GLOBAL INDEX ] SPLIT后的分区名可以与源分区名相同,但视为不同的分区。 列存分区表不支持切割分区。 范围分区指定切割点split_point_clause的语法为: AT ( subpartition_value ) INTO ( SUBPARTITION subpartition_name [ TABLESPACE tablespacename ] , SUBPARTITION subpartition_name [ TABLESPACE tablespacename ] ) 切割点的大小要位于正在被切割的分区的分区键范围内,指定切割点的方式只能把一个分区切割成两个新分区。 范围分区不指定切割点no_split_point_clause 的语法如下,其中最后一个分区不能写分区范围定义,即VALUES LESS THAN (subpartition_value)部分,默认继承源分区范围定义的上界值。 INTO ( SUBPARTITION subpartition_name VALUES LESS THAN (subpartition_value) [ TABLESPACE tablespacename ][, ...] ) 第一个新分区的分区范围定义要大于正在被切割的分区的前一个分区(如果存在的话)的分区范围定义。 最后一个新分区不能写分区范围定义,默认继承源分区范围定义的上界值。 新分区必须满足分区范围定义递增的约束。 列表范围分区指定切割点split_point_clause的语法如下: VALUES ( subpartition_value ) INTO ( SUBPARTITION subpartition_name [ TABLESPACE tablespacename ] , SUBPARTITION subpartition_name [ TABLESPACE tablespacename ] ) 切割点必须是源分区的一个非空真子集,指定切割点的方式只能把一个分区切割成两个新分区。 列表分区表不指定切割点no_split_point_clause的语法如下,其中最后一个分区不能写分区范围定义,即VALUES (subpartition_value_list)部分,其范围等于源分区去掉其他子分区后的剩余集合。 INTO ( SUBPARTITION subpartition_name VALUES (subpartition_value_list) [ TABLESPACE tablespacename ][, ...] ) 最后一个新分区不能写分区范围定义,其范围等于源分区去掉其他子分区后的剩余集合。 不指定切割点的方式,每一个新分区都必须是源分区的一个非空真子集,且互不交叉。 truncate_clause子语法用于清空分区表中的指定分区。语法可以作用在一级分区上。 TRUNCATE PARTITION { partition_name | FOR ( partition_value [, ...] ) } [ UPDATE GLOBAL INDEX ] 也可以作用在二级分区上。 TRUNCATE SUBPARTITION { subpartition_name | FOR ( subpartition_value [, ...] ) } [ UPDATE GLOBAL INDEX ]
  • 参数说明 table_name 分区表名。 取值范围:已存在的分区表名。 subpartition_name 二级分区名。 取值范围:已存在的二级分区名。 tablespacename 指定分区要移动到哪个表空间。 取值范围:已存在的表空间名。 partition_value 一级分区键值。 通过PARTITION FOR ( partition_value [, ...] )子句指定的这一组值,可以唯一确定一个一级分区。 取值范围:需要进行操作的一级分区的分区键的取值范围。 subpartition_value 一级分区键值和二级分区键值。 通过SUBPARTITION FOR ( subpartition_value [, ...] )子句指定的这一组值,可以唯一确定一个二级分区。 取值范围:对于需要进行操作的二级分区,需要同时有其一级分区分区键和二级分区分区键的取值范围。 UNUSABLE LOCAL INDEXES 设置该分区上的所有索引不可用。 REBUILD UNUSABLE LOCAL INDEXES 重建该分区上的所有索引。 ENABLE/DISABLE ROW MOVEMET 行迁移开关。 如果进行UPDATE操作时,更新了元组在分区键上的值,造成了该元组所在分区发生变化,就会根据该开关给出报错信息,或者进行元组在分区间的转移。 取值范围: ENABLE:打开行迁移开关。 DISABLE:关闭行迁移开关。 默认是打开状态。 ordinary_table_name 进行迁移的普通表的名称。 取值范围:已存在的普通表名。 { WITH | WITHOUT } VALIDATION 在进行数据迁移时,是否检查普通表中的数据满足指定分区的分区键范围。 取值范围: WITH:对于普通表中的数据要检查是否满足分区的分区键范围,如果有数据不满足,则报错。 WITHOUT:对于普通表中的数据不检查是否满足分区的分区键范围。 默认是WITH状态。 由于检查比较耗时,特别是当数据量很大的情况下更甚。所以在保证当前普通表中的数据满足分区的分区键范围时,可以加上WITHOUT来指明不进行检查。 VERBOSE 在VALIDATION是WITH状态时,如果检查出普通表有不满足要交换分区的分区键范围的数据,那么把这些数据插入到正确的分区,如果路由不到任何分区,再报错。 只有在VALIDATION是WITH状态时,才可以指定VERBOSE。 partition_new_name 分区的新名称。 取值范围:字符串,要符合标识符命名规范。 subpartition_new_name 二级分区的新名称。 取值范围:字符串,要符合标识符命名规范。 UPDATE GLOBAL INDEX 如果使用该参数,则会更新分区表上的所有全局索引,以确保使用全局索引可以查询出正确的数据;如果不使用该参数,则分区表上的所有全局索引将会失效。
  • 示例 --创建server gaussdb=# CREATE SERVER my_server FOREIGN DATA WRAPPER log_fdw; --创建外表 gaussdb=# CREATE FOREIGN TABLE foreign_tbl (col1 text) SERVER my_server OPTIONS (logtype 'pg_log'); --删除外表 gaussdb=# DROP FOREIGN TABLE foreign_tbl; --删除server gaussdb=# DROP SERVER my_server;
  • 语法格式 CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [ column_name type_name [ OPTIONS ( option 'value' [, ... ] ) ] [ COLLATE collation ] [ column_constraint [ ... ] ] [, ... ] ] ) SERVER server_name [ OPTIONS ( option 'value' [, ... ] ) ] 其中列约束column_constraint为: [ CONSTRAINT constraint_name ] { NOT NULL | NULL | DEFAULT default_expr }
  • 基于Psycopg开发 Psycopg是一种用于执行SQL语句的PythonAPI,可以为 GaussDB数据库 提供统一访问接口,应用程序可基于它进行数据操作。Psycopg2是对libpq的封装,主要使用C语言实现,既高效又安全。它具有客户端游标和服务器端游标、异步通信和通知、支持“COPY TO/COPY FROM”功能。支持多种类型Python开箱即用,适配GaussDB数据类型;通过灵活的对象适配系统,可以扩展和定制适配。Psycopg2兼容Unicode。 GaussDB数据库提供了对Psycopg2特性的支持,并且支持psycopg2通过SSL模式连接。 表1 Psycopg支持平台 操作系统 平台 Python版本 EulerOS 2.5 ARM64位 x86_64位 3.8.5 EulerOS 2.9 ARM64位 x86_64位 3.7.4 EulerOS 2.10、Kylin v10、UnionTech20 ARM64位 x86_64位 3.7.9 EulerOS 2.11、Suse 12.5 ARM64位 x86_64位 3.9.11 psycopg2在编译过程中,会链接(link)GaussDB的openssl,GaussDB的openssl与操作系统自带的openssl可能不兼容。如果遇到不兼容现象,例如提示"version 'OPENSSL_1_1_1f' not found",请使用环境变量LD_LIBRARY_PATH进行隔离,以避免混用操作系统自带的openssl与GaussDB依赖的openssl。 例如,在执行某个调用psycopg2的应用软件client.py时,将环境变量显性赋予该应用软件: export LD_LIBRARY_PATH=/path/to/gaussdb/libs:$LD_LIBRARY_PATH python client.py 其中,/path/to/pyscopg2/lib 表示GaussDB依赖的openssl库所在目录,需根据文件实际存储路径修改。 开发流程 开发步骤 示例:常用操作 Psycopg接口参考 父主题: 应用程序开发教程
  • 基于JDBC开发 JDBC(Java Database Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问接口,应用程序可基于它操作数据。GaussDB库提供了对JDBC 4.2特性的支持,需要使用JDK1.8版本编译程序代码,不支持JDBC桥接ODBC方式。 JDBC包、驱动类和环境类 开发流程 加载驱动 连接数据库 连接数据库(以SSL方式) 连接数据库(UDS方式) 执行SQL语句 处理结果集 关闭连接 日志管理 示例:常用操作 示例:重新执行应用SQL 示例:通过本地文件导入导出数据 示例:从MY迁移数据 示例:逻辑复制代码示例 示例:不同场景下连接数据库参数配置 JDBC接口参考 JDBC常用参数参考 常见问题处理 JDBC数据类型映射关系 父主题: 应用程序开发教程
  • 执行计划显示信息 除了设置不同的执行计划显示格式外,还可以通过不同的EXPLAIN用法,显示不同详细程度的执行计划信息。常见有如下几种,关于更多用法请参见EXPLAIN语法说明。 EXPLAIN statement: 只生成执行计划,不实际执行。其中statement代表SQL语句。 EXPLAIN ANALYZE statement:生成执行计划,进行执行,并显示执行的概要信息。显示中加入了实际的运行时间统计,包括在每个规划节点内部花掉的总时间(以毫秒计)和它实际返回的行数。 EXPLAIN PERFORMANCE statement:生成执行计划,进行执行,并显示执行期间的全部信息。 为了测量运行时在执行计划中每个节点的开销,EXPLAIN ANALYZE或EXPLAIN PERFORMANCE会在当前查询执行上增加性能分析的开销。在一个查询上运行EXPLAIN ANALYZE或EXPLAIN PERFORMANCE有时会比普通查询明显的花费更多的时间。超支的数量依赖于查询的本质和使用的平台。 因此,当定位SQL运行慢问题时,如果SQL长时间运行未结束,建议通过EXPLAIN命令查看执行计划,进行初步定位。如果SQL可以运行出来,则推荐使用EXPLAIN ANALYZE或EXPLAIN PERFORMANCE查看执行计划及其实际的运行信息,以便更精准地定位问题原因。
  • 参数说明 server_name 所修改的server的名称。 new_version 修改后server的新版本名称。 OPTIONS 更改该服务器的选项。ADD、SET和 DROP指定要执行的动作。如果没有显式地指定操作, 将会假定为ADD。选项名称必须唯一,名称和值也会使用该服务器的外部数据包装器库进行验证。 除了libpq支持的连接参数外,还额外提供以下参数: fdw_startup_cost 执行一个外表扫描时的启动耗时估算。这个值通常包含建立连接、远端对请求的分析和生成计划的耗时。默认值为100。取值范围为大于0的实数。 fdw_typle_cost 在远端服务器上对每一个元组进行扫描时的额外消耗。这个值通常表示数据在server间传输的额外消耗。默认值为0.01。取值范围为大于0的实数。 new_name 修改后server的新名称。
  • 示例 --创建my_server。 gaussdb=# CREATE SERVER my_server FOREIGN DATA WRAPPER log_fdw; --修改外部服务的名称。 gaussdb=# ALTER SERVER my_server RENAME TO my_server_1; --删除my_server_1。 gaussdb=# DROP SERVER my_server_1;
  • 操作场景 OU是把对象组织成逻辑管理组的容器,对容器中的资源进行管理,其中包括一个或多个对象,如用户、计算机、打印机、应用、文件共享或其他子OU等。 管理员在AD服务器上进行OU维护后,需要在云应用的管理控制台中进行OU信息同步。 如果云应用与 云桌面 使用同一个项目,则共用同一份OU名单。即如果在Windows AD服务器中调整了OU信息,需要同步修改云应用或云桌面管理控制台中的OU信息。在云应用管理控制台中新增OU,将同步至云桌面的管理控制台。同理,在云桌面管理控制台中新增OU或者修改OU信息,将同步至云应用的管理控制台。
  • 操作步骤 使用管理员帐号登录云应用的管理控制台。 在左侧导航栏中单击“OU管理”,进入OU列表页面。 根据需要,可执行如表1所示操作。 表1 OU管理操作列表 操作名称 操作步骤 场景说明 创建OU 单击“创建OU”。 根据AD服务器中OU名称命名,并选择已配置的域名称。根据需要输入描述信息(可选配置)。 单击“确认”。 当管理员在AD服务器上新增了OU时,需要同步在云应用管理控制台中新增对应的OU信息。 修改OU信息 在待修改的OU所在行,单击“修改”。 根据AD服务器中OU信息,修改OU名称。根据需要输入描述信息(可选配置)。 单击“确认”。 当管理员在AD服务器上更新了OU信息时,需要同步在云应用管理控制台中更新对应的OU信息。 删除OU 在待删除的OU所在行,单击“删除”。 单击“确认”。 当管理员在AD服务器上删除了OU时,需要同步在云应用管理控制台中删除对应的OU信息。
  • 操作步骤 使用管理员帐号登录云应用的管理控制台。 在左侧导航栏中单击“协议组件升级”,进入AccessAgent升级列表页面。 在待升级的服务器所在行,单击“AccessAgent升级”。或者选择多个待升级的服务器,单击“批量更新”。 在升级确认页面,单击“确定”。 切换至“AccessAgent升级跟踪”页面,可查看具体升级情况。 等待服务器升级状态为“upgrade success”后,再切换回“AccessAgent升级”页面。选择该服务器,单击“批量取消维护”。 单击“确定”。
  • 操作步骤 使用管理员帐号登录云应用的管理控制台。 在左侧导航栏中单击“租户配置”,进入租户配置信息页面。 在“网络配置”下,单击“云专线接入地址”后的“开启”。 在启用确认窗口中,配置“云专线网段信息”。 使用云专线连接: 查看云应用的业务子网与云专线的子网是否在同一范围内。 如果在同一范围内,则无需配置云专线网段信息。 如果不在同一范围内,则需将云专线的网段配置在“云专线网段信息”中。云应用的业务子网和云专线子网网段可在其虚拟私有云页面中查看。 最多可配置5个网段,多个网段之间以英文字符“;”分隔。 网段配置格式如下所示: 192.168.11.0/24;172.10.240.0/20 使用VPN连接: 输入待接入的本地数据中心的网段,例如10.119.156.0/24。且需确认本地数据中心网段与云应用所在VPC网段无冲突。 在启用确认窗口中,选择“我已确认,开通专线接入需要创建 VPC终端节点 (创建VPC终端节点需要收费)”。 在启用确认窗口中,单击“确定”。 通知终端用户,使用云专线接入地址接入云应用。
  • 操作步骤 使用管理员帐号登录云应用的管理控制台。 在左侧导航栏中单击“应用组”,进入应用组列表页面。 在页面右上角单击“创建应用组”,进入应用组配置页面。 参考表1配置参数。 表1 应用组参数说明 参数 说明 取值样例 名称 自定义应用组名称。 命名规则: 名称长度范围为1~64个字符。 名称中可包含中文、大写字母、小写字母、数字、中划线(-)、下划线(_)。 App_Gp-Win2016 应用组类型 应用:应用是单个应用程序,用户可以访问应用程序而无需安装。 桌面:桌面应用组是一种完整的虚拟桌面,用户访问的是远程桌面。 - 关联服务器组 选择创建服务器组中创建的服务器组。 - 应用组描述 描述该应用组特点,便于管理员维护。 - 单击“确定”。
  • 操作步骤 使用管理员帐号登录云应用的管理控制台。 在“总览”页面,单击“定时任务” 进入“定时任务”页面。 单击页面右上角“创建任务”。 弹出“创建定时任务”界面。 配置定时任务信息。 任务类型:选择“重启”。 您设置好定时重启任务后,当到达定时时间点时,当前云服务器有用户连接,为保证用户体验,系统不会执行重启,将自动顺延到下一个定时时间点。 强制执行重启任务:如果勾选后,系统到达定时时间点后,将会强制执行重启。 定时任务名称:用户自定义。 执行周期:支持以下几种周期,根据用户需求自行选择。 时区:用户可设置对应的时区。 指定时间:可精确到某年某月某日某时某分某秒。 按天:可设置具体时间、间隔天数、过期时间。 按周:可设置具体日期、时间、过期时间。 按月:可设置具体月份、具体日期、时间、过期时间。 不存在的日期会自动跳过,比如:2月30号。 如果存在夏令时,具体时间请查看即将执行时间。 点击“下一步:选择对象”。 跳转至“可选对象”界面。 在“可选对象”的搜索框中搜索云应用服务器名称并勾选。 单击“立即创建”。
  • 操作步骤 使用管理员帐号登录云应用的管理控制台。 在左侧导航栏中单击“应用组”,进入应用组列表页面。 根据需要,可执行如表1所示操作。 表1 应用组操作列表 操作名称 操作步骤 场景说明 修改应用组名称 在应用组所在行,单击“编辑”。 重新输入自定义应用组名称,单击“确定”。 说明: 名称长度范围为1~64个字符。 名称中可包含中文、大写字母、小写字母、数字、中划线(-)、下划线(_)。 应用组名称存在误导等指示不明情况时,管理员可重新命名应用组。 修改关联服务器组 在应用组所在行,单击“编辑”。 展开服务器组列表,选择目标服务器组;如无目标服务器组,可单击“新建服务器组”进行创建后,在返回应用组页面进行关联修改。 单击“确定”。 管理员可根据实际需求,修改关联的服务器组,用于限制用户使用不同的应用。 删除应用组 说明: 无应用的应用组才可删除。 选择需要删除的应用组,单击左上角的“删除”,批量删除所选应用组;单击应用组所在行中“删除”,删除当前行应用组。 选择“确认删除”。 单击“是”。 管理员可删除无应用的应用组,避免资源浪费。 查看应用组内的应用列表 单击应用组名称,进入应用列表页面,即可查看当前应用组包含的应用。 管理员可实时查看应用组内的应用,便于控制用户可使用的应用。 查看应用组关联的服务器 单击关联的服务器组名称,进入服务器组的服务器列表页面,即可查看当前应用组关联的服务器。 管理员可实时查看应用组所关联的服务器,便于维护。
共100000条