云服务器内容精选

  • 服务内容 服务子项 服务内容 数据库开发指导 为项目应用开发阶段提供技术支持,如服务组件使用方式、方案评估、技术指导等;提供应用开发疑难问题的解决。 性能调优 对数据库集群进行性能评估,结合评估结果,进行数据库参数调优和数据库资源调优,提升数据库性能。 第三方平台对接支持 负责第三方系统或监控平台对接数据库过程中遇到的问题咨询和解答。 应用对接联调与上线支持 在应用与生产环境数据库的正式对接联调时,由于测试环境与生产环境的本质差异,生产环境易出现测试环境未能遭遇的问题。协助处理未知问题。 国产化改造 在数据库国产化转型过程中,提供数据库国产化改造支持,包括数据库调研、改造方案设计、数据库迁移、应用改造、业务验证、验收保障等一系列端到端的专业服务。
  • 责任矩阵 交付项目 交付内容说明 华为 客户 数据库开发指导 为项目应用开发阶段提供技术支持: 1、提供专人支持项目应用开发方案咨询与技术支持 如服务组件使用方式、方案评估、技术指导等 R S 2、提供应用开发疑难问题的现场/远程解决。 R S 性能调优 对数据库性能进行性能评估、调优: 1、数据库性能评估 2、数据库参数调优 3、数据库资源调优 R S 第三方平台对接支持 第三方系统或监控平台对接DBS中遇到的问题咨询和解答 R S 应用对接与上线支持 应用开发完成后上线,华为提供平台侧支持服务 S R 国产化改造 数据库调研与评估 R S 改造方案设计 R S 数据库迁移(用户/角色/权限迁移、结构迁移、数据迁移) R S 应用改造 S R 业务验证 S R 验收保障 R S R=责任方/Responsibility,S=协助方/Support。 共同责任 双方商定并确认本次服务的目标及范围。 完成合同签订。 客户责任 提供详细准确的需求、场景和涉及的业务系统相关信息。 专注在满足项目交付需要,及时反馈客户管理层和关键业务部门对项目的各种意见。 协调安排项目干系人参加项目会议,访谈和讨论会。 提供场地及各种开发环境(包括电脑、网络等)。 开通华为云账户并进行充值,用于项目实施。 及时审核并确认华为提供的服务计划和交付件。 项目实施过程中,如客户提供的第三方软件,负责协调第三方厂商,协助华为云解决问题。 华为责任 接收用户的需求申请,协调专家远程或者现场进行实施。 服务前,按照客户所选服务项,制定服务计划和报价清单供客户审核确认。 服务期间,依确认后的服务计划进行实施,编写交付件。 服务结束后,根据所选服务项,出具交付件清单。 免责说明 在实施过程中,非华为云原因导致的第三方设备或系统故障。 数据库开发支持服务自成功购买后,服务单有效期为一年,超出有效期外,华为云有权不予提供服务。 客户须保证其安装、使用的操作系统、应用软件不侵犯任何第三方的知识产权或其他权益。如因违反前述约定所导致的第三方索赔,客户应承担全部责任,华为云免于罹受任何损失。
  • 交付件 不同服务内容对应的交付件如下表所示,可以根据项目实际情况作出修改: 服务内容 交付件 数据库开发指导 《XXX项目开发支持问题跟进表》《数据库开发支持总结报告》 性能调优 《XX数据库性能调优报告》 第三方平台对接 《XXX项目开发支持问题跟进表》《数据库开发支持总结报告》 应用对接联调与上线支持 《XXX项目开发支持问题跟进表》《数据库开发支持总结报告》 国产化改造 《数据库调研表》《国产化改造方案》
  • 数据查询建议 建议查询指定分区 通过指定分区字段会减少底层数据库扫描的文件数量,提升查询性能,实际经验:700个分区的千列大表,需要查询一个分区中有7000万数据,其他699个分区中无数据,虽然只有一个分区有数据,其他分区无数据,但是查询指定分区为百毫秒级性能,没有指定分区查询性能为1~2秒左右,性能相差20倍。 慎用final查询 在查询语句的最后跟上final,通常是对于ReplacingMergeTree引擎,数据不能完全去重情况下,有些开发人员习惯写final关键字进行实时合并去重操作(merge-on-read),保证查询数据无重复数据。可以通过argMax函数或其他方式规避此问题。
  • 数据修改 建议慎用delete、update的mutation操作 标准SQL的更新、删除操作是同步的,即客户端要等服务端反回执行结果(通常是int值);而ClickHouse的update、delete是通过异步方式实现的,当执行update语句时,服务端立即返回执行成功还是失败结果,但是实际上此时数据还没有修改完成,而是在后台排队等着进行真正的修改,可能会出现操作覆盖的情况,也无法保证操作的原子性。 业务场景要求有update、delete等操作,建议使用ReplacingMergeTree、CollapsingMergeTree、VersionedCollapsingMergeTree引擎,使用方式参见:https://clickhouse.tech/docs/zh/engines/table-engines/mergetree-family/collapsingmergetree/。 建议少或不增删数据列 业务提前规划列个数,如果将来有更多列要使用,可以规划预留多列,避免在生产系统跑业务过程中进行大量的alter table modify列操作,导致不可以预知的性能、数据一致性问题。 对于批量数据清理,建议根据分区来操作: ALTER TABLE table_name DROP PARTITION partition_name; 禁止修改索引列 对索引列的修改会导致现有索引失效,触发重建索引,期间查询数据不准确。 如果业务场景必须修改索引列,推荐用ReplacingMergeTree引擎建表,使用数据写入+去重引擎代替数据更新场景:https://clickhouse.tech/docs/zh/engines/table-engines/mergetree-family/collapsingmergetree/。
  • 操作步骤 先获取clickhouse-example样例代码工程。 代码获取地址:https://github.com/huaweicloud/huaweicloud-mrs-example/blob/mrs-3.1.2/src/clickhouse-examples/。 在样例工程“conf”目录下有一个“clickhouse-example.proerties”配置文件,其中各项的配置的作用如下所示: #连接节点或Balancer的ip列表,ip之间用逗号隔开loadBalancerIPList=#是否需要开启ssl,如果取值为true,则loadBalancerHttpsPort必填sslUsed=true#端口号loadBalancerHttpPort=loadBalancerHttpsPort=#ClickHouse安全模式开关,安全模式集群时该参数固定为true。CLICKHOUSE_SECURITY_ENABLED=true#连接的用户名user=#连接的用户的密码password=#集群名称clusterName=#数据库名称databaseName=#表名称tableName=#一个批次写入的条数batchRows=10000#写入数据的总批次batchNum=10#ip:port。安全模式下https端口,普通模式下http端口clickhouse_dataSource_ip_list=#ip:tcp portnative_dataSource_ip_list=ip:port,ip:port,ip:port 在Demo.java有三种连接JDBC的样例:节点的JDBC连接、banlancer的JDBC连接和tcp端口的banlancer的JDBC连接。 Demo提供了createDatabase、createTable、insertData和queryData的样例。
  • 规则 大批量少频次的插入。 内容要求:ClickHouse的每次数据插入都会生成一到多个part文件,如果data part过多则会导致merge压力变大,甚至出现服务异常影响数据插入。建议一次插入10万行,每秒不超过1次插入。 一次只插入一个分区内的数据。 内容要求:如果数据属于不同的分区,则每次插入,不同分区的数据会独立生成part文件,导致part总数量膨胀。甚至写入报错“Merges are processing significantly slower than inserts“。一批次写入的数据,对应的分区数太多。ClickHouse建表之后insert batch时,会对不同的分区创建一个目录。如果一个batch里面的数据对应了过多的分区,那么一次insert就会生成较多的分区目录,后台merge线程处理速度跟不上分区增加的速度,社区规格是每秒不超过一个数据目录。 具体的操作:确认一个batch的数据对应了多少个分区,insert的时候,尽量保证一个batch包含的分区数是1。 慎用delete、update操作。 内容要求:建议使用CollapsingMergeTree、VersionedCollapsingMergeTree引擎或根据分区批量清理。 ClickHouse需要写本地表。 内容要求:连接balancer写入报错Request Entity Too Large。这是由于Nginx对http请求体大小有限制,而一次写入的数据量超过了这个限制。 规避:修改Nginx配置项client_max_body_size为一个较大的值。 解决:写本地表,不要通过balancer写入数据。