云服务器内容精选

  • 使用GDS导入数据 数据倾斜会造成查询表性能下降。对于记录数超过千万条的表,建议在执行全量数据导入前,先导入部分数据,以进行数据倾斜检查和调整分布列,避免导入大量数据后发现数据倾斜而造成调整成本高。详细请参见查看数据倾斜状态章节。 为了优化导入速度,建议拆分文件,使用多GDS进行并行导入。单个导入任务可以拆分成多个导入任务并发执行导入;多个导入任务使用同一GDS时,可以使用-t参数打开GDS多线程并发执行导入。GDS建议挂载在不同物理盘以及不同网卡上,避免物理IO以及网络可能出现的瓶颈。 在GDS IO与网卡未达到物理瓶颈前,可以考虑在 GaussDB (DWS)开启SMP进行加速。SMP开启之后会对对应的GDS产生成倍的压力。需要特别说明的是:SMP自适应衡量的标准是GaussDB(DWS)的CPU压力,而不是GDS所承受的压力。有关SMP的更多信息请参见SMP手动调优建议章节。 GDS与GaussDB(DWS)通信要求物理网络畅通,并且尽量使用万兆网。千兆网无法承载高速的数据传输压力,极易出现断连。即使用千兆网时GaussDB(DWS)无法提供通信保障。满足万兆网的同时,数据磁盘组I/O性能大于GDS单核处理能力上限(约400MB/s)时,方可寻求单文件导入速率最大化。 并发导入场景与单表导入相似,至少应保证I/O性能大于网络最大速率。 GDS跟DN的数据比例建议在1:3至1:6之间。 为了优化列存分区表的批量插入效率,在批量插入过程中会对数据进行缓存后再批量写盘。通过GUC参数“partition_mem_batch”和“partition_max_cache_size”,可以设置缓存个数以及缓存区大小。这两个参数的值越小,列存分区表的批量插入越慢。当然,越大的缓存个数和缓存分区,会带来越多的内存消耗。
  • 使用INSERT多行插入 在导入时,如果不能使用COPY命令,可以根据情况使用多行插入。多行插入是通过批量进行一系列插入而提高性能。 下面的示例使用一条INSERT语句向一个三列表插入三行。这仍属于少量插入,只是用来说明多行插入的语法。 向表customer_t1中插入多行数据: 1 2 3 4 INSERT INTO customer_t1 VALUES (6885, 'maps', 'Joes'), (4321, 'tpcds', 'Lily'), (9527, 'world', 'James'); 有关更多详情和示例,请参考INSERT章节。
  • 从OBS并行导入数据 将导入数据拆分为多个文件 导入大数据量的数据时,通常需要较长的时间及耗费较多的计算资源。 从OBS上导入数据时,如下方法可以提升导入性能:将数据文件存储到OBS前,尽可能均匀地将文件切分成多个,文件的数量为DN的整数倍更适合。 在导入前后验证数据文件 从OBS导入数据时,首先将您的文件上传到OBS存储桶中,建议您列出存储桶的内容,然后验证该存储桶是否包含所有正确的文件并且仅包含这些文件。 在完成导入操作后,请使用SELECT查询语句验证所需文件是否已导入。 OBS导入导出数据时,不支持中文路径。
  • 使用gsql元命令导入数据 \copy命令在任何gsql客户端登录数据库成功后可以执行导入数据。与COPY命令相比较,\copy命令不是读取或写入数据库服务端的文件,而是直接读取或写入本地文件。 \copy命令不如SQL COPY命令有效,因为所有的数据必须通过客户端/服务器的连接来传递。对于大量的数据来说SQL命令可能会更好。 有关如何使用\copy命令的更多信息,请参阅使用gsql元命令\COPY导入数据 。 \COPY只适合小批量、格式良好的数据导入,容错能力较差。导入数据应优先选择GDS或COPY。
  • 使用须知 当需要进行数据备份或迁移时,您可以将数据导入目标数据表,目标 CS V表数据类型须与待导入表数据类型保持一致,SQL文件同理。 导入单文件大小最大可达1GB。 可以支持导入的数据文件类型包括CSV格式和SQL文件格式。如果MySQL 8.0实例表数量超过10万(5.7和5.6版本超过1万),则不能使用CSV格式。 暂不支持BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB等二进制类型字段的导入。 导入sql单句需小于100M。 不支持通过mysqldump工具导出的包含二进制的sql文件的导入。
  • 解决方案 建议根据实际情况调整客户端的并发写入请求数(调整到一个合适的阈值),另外被rejected的http请求ES-Hadoop是有重试机制的,可修改以下参数: “es.batch.write.retry.count”:默认重试3次。 “es.batch.write.retry.wait”:每次重试等待时间10s。 如果对查询的实时性级别要求不高的话,可以调整下分片刷新的时间(默认是每秒刷新一次),提高写入速度。 PUT /my_logs { "settings": { "refresh_interval": "30s" } }
  • URI POST AstroZero 域名 /u-route/baas/bulk/v1.0/template/xlsx?template={template}&filename={filename} 表1 路径参数 参数 是否必选 参数类型 描述 template 是 String 参数解释: 数据导入模板的名称。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 filename 是 String 参数解释: 上传的文件名称。 约束限制: 支持“xls”和“xlsx”格式的文件。 取值范围: 不涉及。 默认取值: 不涉及。
  • 手动导入 通过主页面的“更多功能”选项或单击左上角搜索框旁边的,可以展示当前支持的导入选项,可根据需要选择。 导入文件 选择响应格式的文件并上传,然后选择文件中系统识别出来的接口和数据模型导入。 一个文件导入后,将会视为一个根目录,一个根目录中不允许存在URL相同的接口。 Postman支持Collections和Environment数据集ZIP包的全量导入,也支持单个Collection文件导入。 Postman支持接口和接口用例的前置脚本及后置脚本导入。 导入URL 选择“导入Swagger URL”,输入URL,即可完成文档导入。 通过Swagger URL导入时,需要填写json数据文件的URL,而非Swagger UI的URL。
  • 手动导入 通过主页面的“更多功能”选项或单击左上角搜索框旁边的,可以展示当前支持的导入选项,可根据需要选择。 导入文件 选择响应格式的文件并上传,然后选择文件中系统识别出来的接口和数据模型导入。 一个文件导入后,将会视为一个根目录,一个根目录中不允许存在URL相同的接口。 Postman支持Collections和Environment数据集ZIP包的全量导入,也支持单个Collection文件导入。 Postman支持接口和接口用例的前置脚本及后置脚本导入。 导入URL 选择“导入Swagger URL”,输入URL,即可完成文档导入。 通过Swagger URL导入时,需要填写json数据文件的URL,而非Swagger UI的URL。
  • 区域支持 区域支持指的是应用遵守文化偏好的问题,包括字母表、排序、数字格式等。区域是在使用initdb创建一个数据库时自动被初始化的。默认情况下,initdb将会按照它的执行环境的区域设置初始化数据库,即系统已经设置好的区域。如果想要使用其他的区域,可以使用手工指定(initdb –locale=xx)。 如果想要将几种区域的规则混合起来,可以使用以下区域子类来控制本地化规则的某些方面。这些类名转换成initdb的选项名来覆盖某个特定分类的区域选择。 表1 区域支持 字段 描述 LC_COLLATE 字符串排序顺序。 LC_CTYPE 字符分类(什么是一个字符?它的大写形式是否等效?) LC_MESSAGES 消息使用的语言Language of messages。 LC_MONETARY 货币数量使用的格式。 LC_NUMERIC 数字的格式。 LC_TIME 日期和时间的格式。
  • 字符集 PG里面的字符集支持各种字符集存储文本,包括单字节字符集,比如ISO 8859系列,以及多字节字符集,比如EUC(扩展Unix编码Extended Unix Code)、UTF-8和Mule内部编码。MPPDB中目前主要使用的字符集包括GBK、UTF-8和LATIN1。所有被支持的字符集都可以被客户端透明地使用,但少数只能在服务器上使用(即作为一种服务器端编码,GBK编码在PG中只是客户端编码,不是服务端编码,MPPDB将GBK引入到服务端编码,这是很多问题的根源)。默认的字符集是在使用initdb初始化PG数据库时选择的。在创建一个数据库实例时可以重载字符集,因此可能会有多个数据库实例并且每一个使用不同的字符集。一个重要的限制是每个数据库的字符集必须和数据库LC_CTYPE(字符分类)和LC_COLLATE (字符串排序顺序)设置兼容。对于C或POSIX,任何字符集都是允许的,但是对于其他区域只有一种字符集可以正确工作。不过,在Windows上UTF-8编码可以和任何区域配合使用。 SQL_ASCII设置与其他设置表现得相当不同。如果服务器字符集是SQL_ASCII,服务器把字节值0-127根据ASCII标准解释,而字节值128-255则当作无法解析的字符。如果设置为SQL_ASCII,就不会有编码转换。因此,这个设置基本不是用来声明所使用的指定编码,因为这个声明会忽略编码。在大多数情况下,如果使用了任何非ASCII数据,那么使用SQL_ASCII设置都是不明智的,因为PG将无法帮助你转换或者校验非ASCII字符。 数据库系统支持某种编码,主要涉及三个方面:数据库服务器支持,数据访问接口支持以及客户端工具支持。 数据库服务器字符编码 数据库服务器支持某种编码,是指数据库服务器能够从客户端接收、存储以及向客户端提供该种编码的字符(包括标识符、字符型字段值),并能将该种编码的字符转换到其它编码(如UTF-8编码转到GBK编码)。 指定数据库服务器编码:创建数据库时指定:CREATE DATABASE … ENCODING … //可以取ASCII、UTF-8、EUC_CN、……; 查看数据库编码:show server_encoding。 数据库访问接口编码 数据库访问接口支持某种编码,是指数据库访问接口要做到能对该种编码的字符进行正确读写,不应出现数据丢失、数据失真等情况。以JDBC接口为例: JDBC接口一般根据JVM的file.encoding设置client_encoding:set client_encoding to file_encoding; 将String转换成client_encoding编码的字节流,传给服务器端:原型String.getBytes(client_encoding) ; 收到服务器的字节流后,使用client_encoding构造String对象作为getString的返回值给应用程序:原型String(byte[], …, client_encoding)。 客户端编码 客户端工具支持某种编码,是指客户端工具能够显示从数据库读取该种编码的字符,也能通过本工具将该种编码的字符提交到服务器端。 指定会话的客户端编码:SET CLIENT_ENCODING TO 'value'; 查看数据库编码:Show client_encoding。
  • 原因分析 GDS进程崩溃。执行命令检查GDS进程是否崩溃: ps ux|grep gds 如果返回结果如下,则说明GDS进程启动成功: GDS启动参数-H配置不正确。 -H address_string:允许哪些主机连接和使用GDS服务。参数需为CIDR格式。此参数配置的目的是允许GaussDB(DWS)集群可以访问GDS服务进行数据导入,请保证所配置的网段包含GaussDB(DWS)集群各主机。
  • 导入到已有分组注意事项 将API定义导入到一个已有的分组,导入过程中不会删除分组中已有的API,只是将新增的API导入分组。 适用于将一个新的API或者一个修改后的API导入到已有的分组。 导入API前,请注意以下事项: API网关中API的配额满足需求。 导入的API定义与已有的API定义冲突时,您可以选择使用导入的API定义覆盖已有的API定义,或者保留已有的API定义,此时导入的API定义会显示导入失败。 如果选择扩展覆盖,当导入API的扩展定义项名称与已有策略(ACL,流量控制等)名称相同时,则会覆盖已有策略(ACL,流量控制等)。 导入的API不会自动发布到环境,导入时可以选择“立即发布”或者“稍后发布”,您可以自行选择策略。
  • 导入到新分组注意事项 将API定义导入到一个新的分组,导入过程中系统会自动创建一个新的API分组,并将导入的API归属到该分组。 适用于将一份全新且完整的API导入到API网关。 导入API前,请注意以下事项: API网关中API分组和API的配额满足需求。 使用Swagger info或OpenAPI info的title作为API分组名称,新创建的API分组名称不能与已有的API分组名称重名。 导入的API定义中,如果存在冲突,那么根据系统导入的先后顺序,先导入的API会显示导入成功,后导入的API会显示导入失败。例如导入的API定义中存在2个名称相同或请求路径相同的API,那么先导入的API会显示导入成功,后导入的会显示导入失败。 如果选择扩展覆盖,当导入API的扩展定义项名称与已有策略(ACL,流量控制等)名称相同时,则会覆盖已有策略(ACL,流量控制等)。 导入的API不会自动发布到环境,导入时可以选择“立即发布”或者“稍后发布”,您可以自行选择策略。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Workspace-Id 是 String 工作空间ID。 X-Auth-Token 是 String 用户Token。 Content-Type 是 String 固定值,指定请求体类型和字符集。 表3 请求Body参数 参数 是否必选 参数类型 描述 service_type 是 String 服务类型。 obs_endpoint 是 String OBS终端节点。 obs_bucket_name 是 String OBS桶名。 max_storage_days 是 Integer 导出文件在OBS的最大存储时间。 obs_path_prefix 是 String OBS前缀路径。