AntDB 落地某省电信大数据中心项目的性能优化案例分享
亚信科技AntDB 落地某省电信大数据中心项目的性能优化案例分享
某省电信大数据中心项目采购了一套亚信科技AntDB 3.1分布式数据库,2018年8月初开始建设,建设周期一个月。9月份投入运行后,至今已稳定运行数月。AntDB主要存储来自该省电信大数据中心的业务数据,因数据量庞大,采用分库分表设计,存在大量按天分区的继承表,单表数据量达到千万级。业务场景以多表关联分组查询的分析型场景为主,部分场景存在多个结果集合并的需求。
AntDB产品简介
亚信科技AntDB是基于postgresql内核开发的一套多模型分布式数据库,支持pg原生语法的同时,可以兼容ORACLE 85%的语法,在业务从ORACLE往AntDB迁移过程中,对业务可以做到平滑迁移。支持在线秒级扩容,集群统一管理和维护等功能。
本文主要结合大数据中心项目的多种业务场景,分享在该项目运行过程中的性能优化案例。
环境介绍
该项目采用share-nothing架构,由10台X86服务器组成,采用4C8D1GTM的组网架构。
GTM/Datanode/Adbmgr通过流复制协议,全部实现一主一从的高可用环境。
操作系统 | centos7.4 |
---|---|
内存 | 256GB |
磁盘 | 普通机械盘 |
AntDB版本 | 3.1 |
AntDB架构 | 4C8D 1主1从 |
AntDB部署架构图
场景优化
AntDB在该省电信落地过程中得到快速认可,基本上解决了客户95%的分析场景,性能也超过了客户的预期,但一些比较复杂业务场景没有达到客户的期望,AntDB团队成员积极分析业务场景的SQL,对AntDB的内核以及SQL的写法进行了持续的优化,研发并支持一序列针对性能优化的新功能。
- 继承表支持并行扫描
- 支持多种方式的表连接并行
- 集群计划支持union all
- 集群计划支持cte+union all组合
- 支持小表在集群内广播
- 内核级+SQL级优化方式,满足客户亿级多表关联分组查询,秒级返回结果的需求
最终性能优化明显,最高的性能提升190倍。
本文将详细介绍案例 1/3/5/7 的优化过程。
场景1案例分享
场景说明
该案例并不针对具体的业务场景,是从数据库层面为90%的业务场景提升10倍性能。
继承表类似于oracle的分区表,在可管理性、高性能等方面,都为应用程序带来极大的优势。在AntDB3.1版本之前,只支持普通表的parallel seq scan。然而,在真实的业务场景里,普通表都会设计为配置类小表或数据量极小的复制表,并行不会带来性能上的优势,甚至会降低执行效率。真实的业务场景,超大表都会设计为继承表。因此,继承表支持parallel seq scan功能,实际上已经是AntDB3.1新版本发布的一种标准的出厂指标。
优化措施
优化前性能瓶颈 | 优化措施 |
---|---|
单进程顺序扫描继承表 | 多进程并行扫描继承表 |
从内核层代码改造,支持分布式数据库 继承表的parallel seq scan。
执行时间对比
数据量:5千万 | 单位:s |
---|---|
优化前 | 8 |
优化后 | 0.8 |
性能提升 | 10 倍 |
场景3案例分享
场景说明
该场景是报表统计类SQL,用于统计某业务在一段时间内每天的新增用户数,并按省/地市分组统计后汇总输出。
效果如下:
案例分析
该SQL选择Parallel Nested Loop Left Join并行嵌套循环的连接方式,而基表的数据量是1.2 亿,loop的开销非常高。AntDB研发团队在制定该SQL的优化措施时,决定将并行hashjoin纳入AntDB3.1版本中,以替代nestedloop,提升该场景下的性能。
优化措施
优化前性能瓶颈 | 优化措施 |
---|---|
亿级数据量作为基表时,nestedloop开销非常高。 | 集群计划支持hashjoin,当大表之间进行连接时,优化器选择执行效率更高的hashjoin。 |
从内核层代码改造,支持分布式数据库 hashjoin并行。
执行时间对比
数据量:2千万 * 6 | 单位:s |
---|---|
优化前 | 190 |
优化后 | 6 |
性能提升 | 30 倍 |
场景5案例分享
场景说明
该场景是报表统计类SQL,用于统计多种业务在某一天的新装用户数,按省/地市分组统计,部分业务允许指定条件过滤后汇总输出。
效果如下:
案例分析
该SQL使用了cte+union all语法,在AntDB3.1版本之前,对该语法的支持还不够全面,因此,在该场景下选择了效率较差的xc的执行计划。
AntDB研发团队在制定该SQL的优化措施时,决定将cte+union all纳入AntDB3.1版本的集群计划中,以替代pgxc的执行计划,来充分利用集群计划的并行优势。
优化措施
优化前性能瓶颈 | 优化措施 |
---|---|
由于集群计划不支持cte+union all语法,优化器只能选择xc的执行计划,导致无法利用集群的parallel seq scan等并行能力。 | 集群计划支持cte+union all,集群计划选择parallel seq scan+parallel hash join方式,充分利用分布式数据库并行计算的能力。 |
从内核层代码改造,分布式数据库的集群计划支持 cte+union all。
执行时间对比
数据量:2千万 * 6 | 单位:s |
---|---|
优化前 | 150 |
优化后 | 3 |
性能提升 | 50 倍 |
场景7案例分享
场景说明
该场景是报表统计类SQL,用于统计多种业务在某一天的新装用户数,按省/地市分组统计,并指定多种开关类分组条件后汇总输出。
案例分析
该SQL在进行group by 分组汇聚时,使用了多个维度,且分组字段均选择text数据类型,导致优化器估算出的分组数太多,从而无法利用parallel能力,而选择了seqscan。
分析该SQL,红框内的字段应该是bool数据类型,然而业务在建模时,选择了text数据类型。如果改成bool类型,对优化器在进行估算分组总数、从而确定最优执行计划选择时,大有裨益:
- bool类型只有两种结果
- char(1)类型不超过256种结果
- text类型分组结果无限大
在对这3个字段的表数据进行统计后,的确只有0和1 两种数据。
最终和业务侧确认,将字段类型由text修改为bool后,该SQL执行效率从 原254秒 将至 1.5秒。
优化措施
优化前性能瓶颈 | 优化措施 |
---|---|
业务侧表结构建模不严谨,没有结合实际情况选择合适的字段类型,导致在该场景下无法选择最优执行计划。 | 和业务侧确认,修改字段类型。 |
和业务侧确认,修改表字段类型。
执行时间对比
数据量:2千万 * 6 | 单位:s |
---|---|
优化前 | 254 |
优化后 | 1.5 |
性能提升 | 169 倍 |
总结
欢迎越来越多的个人和组织加入亚信AntDB 生态圈,体验和使用AntDB 分布式数据库产品。
参考
AntDB QQ群号:496464280
AntDB github链接
AntDB 落地某省电信大数据中心项目的性能优化案例分享相关推荐
- 遵义大数据中心项目工程概况_投资2.27亿元!贵州省又添一大数据中心项目
原标题:投资2.27亿元!贵州省又添一大数据中心项目 谈到数据中心,除北上广深等一线经济发达城市外,贵州省想必是一颗正在冉冉升起的"明星".近年来在国家政策的支持下贵州省借着得天独 ...
- 遵义大数据中心项目工程概况_市委书记张新文到曹州云都大数据中心等项目现场调研建设情况...
4月25日,市委书记张新文到曹县调研重点项目建设情况,研究推进措施.市委常委.秘书长任仲义参加活动. 张新文首先来到曹州云都大数据中心项目建设现场,查看项目推进情况.曹州云都大数据中心,是涵盖云计算区 ...
- 遵义大数据中心项目工程概况_遵义市大数据中心项目建设加快推进
4月10日,笔者从市大数据发展局获悉,近日,新蒲新区管委会与中国电信遵义分公司签署遵义市大数据中心项目合作协议,将共同加快推进该项目建设,推动信息化与实体经济深度融合发展,助力数字遵义新型智慧城市建设 ...
- 大数据存储系统I/O性能优化技术研究进展
大数据存储系统I/O性能优化技术研究进展 肖利民,霍志胜 北京航空航天大学计算机学院,北京 100191 摘要:大数据存储系统的I/O性能是影响大数据应用整体性能的关键因素之一,总结了当前在存储系统架 ...
- 市级数字政府电子政务大数据中心项目建设和运营方案
[版权声明]本资料来源网络,仅用于行业知识分享,供个人学习参考,不得作商业用途.[侵删致歉]如有侵权请联系小编,将在收到信息后第一时间进行删除! 完整资料领取见文末,部分资料内容: 1.1 大数据中心 ...
- 零信任在某省政务大数据智能项目的落地实践
方案背景 某省公安厅大数据安全整体解决方案,以"一切资源化.资源目录化.目录全局化.全局标准化"为设计理念,以"分层解耦,异构兼容"为设计思路,以"安 ...
- 遵义大数据中心项目工程概况_中策大数据:8月建筑工程项目有哪些?建筑工程项目信息汇总...
2020年8月建筑工程项目有哪些?中策大数据中国工程网为你搜集整理出了建筑工程项目信息,包括项目环评.施工单位招标.施工建设.项目设计.立项审批等各个工程项目阶段的拟在建项目. 2020年8月建筑工程 ...
- Oracle 远程 RAC 打造双活数据中心 | 从容灾迈向双活案例分享
我们都知道,容灾系统是指在相隔较远的异地,建立两套或多套功能相同的 IT 系统,互相之间可以进行健康状态监视和功能切换,当一处系统因意外(如停电.UPS 故障.空调故障.火灾.地震等)停止工作时,整个 ...
- iMobile中加载大数据量的矢量数据性能优化方法有哪些
作者:xinxin 随着移动技术的发展,GIS行业中移动项目越来越多.在移动应用中不仅要对接在线的服务数据,还要加载各种本地的业务数据,GIS数据的量一般很大,而移动设备的内存有限,加载本地大数据量的 ...
最新文章
- [认证授权] 1.OAuth2授权
- QCopChannel的用法
- HDU1525 Euclid's Game 【欧几里得博弈】
- Spark技术内幕: Task向Executor提交的源代码解析
- .NET Core使用IO合并技巧轻松实现千万级消息推送
- ArcGis api配合vue开发入门系列(二)距离以及面积的测量
- “夸夸机器人” App 来了:变身百万粉丝大 V,48 万人给你的帖子点赞
- 如何解决飞秋FeiQ绑定端口错误
- springboot+Vue在线考试系统
- d520笔记本linux无线网卡驱动下载,无线网卡万能驱动
- caj转换成word方法免费
- 白话Android音频系统原理
- 系统开发方法和开发模型
- Kubeadm介绍与使用Kubeadm搭建kubernetes集群环境
- 日常一记(3)--禁止excel自动运行宏
- ——大牛很通俗地介绍《信号与系统》
- 屏蔽拦截广告(二、Android软件推荐)
- 星形接法和三角形接法电压和电流关系
- 用Qt写一个简单的音乐播放器(三):增加界面(播放跳转与音量控制)
- <2>重定向的用法说明和举例
热门文章
- WEB数据库管理平台kb-dms:本地安装与启动教程【二】
- 微信,3亿用户之后的默然演进
- 学校计算机教研组会议记录,教研组会议记录3篇精选范文
- java hough_hough变换检测直线Java
- linux smp lock 锁总线 内嵌汇编,gcc中的内嵌汇编语言(Inteli386平台)
- Github项目推荐:网易云音乐 API
- mybatis-plus自动生成的时候报错java.lang.NoClassDefFoundError: org/apache/velocity/context/Context
- Benchmark 性能测试简介
- 计算机图形学(七)-深度缓存、着色shadding、着色模型、着色频率、渲染管线
- 测量学(三)测量点制图转CAD格式