注册
【与达梦同行】DM8在某市城市运行数字孪生平台中的查询优化经验
技术分享/ 文章详情 /

【与达梦同行】DM8在某市城市运行数字孪生平台中的查询优化经验

小牛 2022/12/30 1842 99 5

前言:

2017年开始接触达梦,从单机版本DM7,到集群版本DM8,达梦数据库因卓越性能优质服务成为了项目标配,成功应用于湖北省市纪委项目、湖北应急厅项目、湖北林业厅项目、某军品项目等。

公司简介:

苍穹数码技术股份有限公司2001年创建于北京,是一家专业从事3S技术研究、开发与应用服务的高新技术企业,更是中国领先的时空信息平台及产品供应商、数字政府及智慧产业解决方案提供商、区域经济及社会发展规划、咨询服务商,拥有自主可控的地理信息平台和专业规划咨询团队,致力于政府、国防和企业信息化建设及数字治理能力的提升。

应用简介:

基于数字孪生底座平台,在试点区县通过融合各类基础地图包含影像地图、矢量电子地图,在此基础上接入企业数据,实现企业数据上图展示,企业数据模糊查询、企业数据框选统计、企业数据政区统计、能耗产值计算器等功能。
通过建设企业数字能源应用系统,可以直观的在地图上展示企业点位数据和详情数据,可以精准查询相关企业并定位,可以宏观展示企业相关指标(行业分类、产值、能耗)的统计数据,通过能耗产值计算器可以模拟能耗产值的比例和数值,以此来指导调整能耗、优化产值的目的。
image.png

应用问题简述:

在查询框输入企业名称、社会统一信用代码、法人姓名等查询条件,支持模糊查询和精准查询,可以查询出符合条件的结果并在地图上进行展示,点击单个结果可以定位到具体位置并高亮显示。
生成环境中部署的系统,运维人员反馈,输入关键字模糊匹配查询超过10秒,性能极低。

应用问题解决:

开发环境数据20w条,生成环境数据800W条,虽然数量不是很多,但是生成环境是开发环境的40倍,问题被放大了,也就是我们常说的量变引发质变。通过分析SQL语句(执行计划是优化的重中之重,我们可以看到语句执行顺序,有没有走索引,检索的数据量等),查询慢可能是使用了视图,in语句嵌套查询 ,like ‘%关键字%’前后模糊匹配。
(1)in ( select字段1 from 视图) 子查询语句, 用时 11秒。
image.png
(2)改成inner join视图,用时 3.99秒。
image.png
(3)改成inner join物理表,关联两次,去掉嵌套查询,用时 1秒。
image.png
(4) like ‘%关键字%’改成 contains 全文检索
image.png
将原来前后模糊匹配的全表扫描查询,改为创建全文索引利用DM全文检索功能,较好地解决了模糊查询方式带来的问题,即可以高效的实现数据检索,又不失数据库固有的属性。不需要额外搭建ES搜索引擎,以及考虑数据同步时效性问题。
在创建全文索引时,有个细节需要注意可以使用SYNC关键字指明全文索引的同步类型。指定为SYNC TRANSACTION时系统将在每次事务提交后,自动以增量更新方式填充全文索引,不需要用户手动填充。

注意事项:

1、视图滥用

我们都知道视图是虚拟表,使用视图查询数据时,数据库会从真实表中取出对应的数据。那么再过滤之前他会有一个生产临时数据过程,如果数据量比较大会消耗过多时间。

2 、索引滥用

建立索引的规划:

  1. 经常查询的列
  2. 连接条件列
  3. 谓词经常出现的列(where)
  4. 查询是返回表的少部分数据的列

不适合做索引的情况:

  1. 经常增删的列
  2. 表的数据量小
  3. 列上的有大量的null
  4. 列上的数据有限(例如:报表种类 index_name ,它只有5种类型) ,删除此索引后,速度提高了一半

3、 in( select 语句 少用)

  1. Inner join 内连接,在两张表进行连接查询时,只保留两张表中完全匹配的结果集,达到和 select in 一样的效果。

4、left join语句

  1. 把数据量少的表放到前面,有where条件的尽量放到左边处理。

写在最后:

笔者使用DM已有5年多时间,从早期单机版DM7,到现在集群版DM8,在项目中应用情况来看,不管从稳定性还是性能来看都属于国产数据库的领头羊,替代ORACLE\MS SQL毫无压力。特别是DM技术支持团队积极提供现场服务,在省纪委项目中,一个电话半小时到达现场,与我们一起分析解决问题,应用研发公司和客户都很满意,DM是用户用起来放心的产品。
最后祝福DM发展越来越好,做国产基础软件中最闪耀的明星。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服