码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 高斯DWS数据库分页查询优化思路


    除了高斯其它关系型数据可也一样可以使用
    官方链接:EXPLAIN_数据仓库服务 GaussDB(DWS)_8.2.0_DML语法_华为云
    参考链接:MySQL大数据量分页查询方法及其优化_mysql大数据量分页查询优化-CSDN博客

    数据量过大,分页查询优化

    背景:数据仓库采用高斯DWS,API平台采用DBAPI,平台限制了一个请求最大3S,因此超过3S的请求将会被取消掉,请求3S并不是SQL执行3S,经过验证,SQL执行九百多毫秒请求就会被杀掉,当前表数据大概四百多万。

    直接使用limit加offset

    explain ANALYSE VERBOSE  select * from  表名 limit 10 offset 402243;
    -- 耗时:Total runtime: 8578.479 ms
    
    
    • 1
    • 2
    • 3

    上面的SQL是最初的SQL,有很多问题,首先列没有裁剪,其次没有建立索引,也没有使用主键,因此下面的优化步骤首先为这张表建一个主键索引,再进行列裁剪

    列裁剪加索引

    explain ANALYSE VERBOSE  select a, b,c, d, e 
    from  表名 limit 10 offset 402243
    -- 耗时:Total runtime: 1590.931 ms
    
    
    • 1
    • 2
    • 3
    • 4

    通过列裁剪加主键索引,耗时已经从8秒多减少到了1.5秒,查询性能提升了很多,但是仍然达不到要求,继续分析,由于已经建立了索引,那么是否可以用自连接,第一步直接查索引,第二步取命中部分数据的所需字段。

    索引子查询

    explain ANALYSE VERBOSE  select a,b,c,d,e 
    from 表名 
    where a in
    	(select a from  表名 limit 10 offset 402243)
    -- 耗时:Total runtime: 146.485 ms
    
    • 1
    • 2
    • 3
    • 4
    • 5

    现在速度已经优化到了1.5毫秒左右,能满足我们的需求,当然用join的写法也是可以的:

    explain ANALYSE VERBOSE  select a,b,c,d,e 
    from 表名 t1 JOIN
    (select a from  表名 limit 10 offset 402243) t2
    on t1.a = t2.a
    -- 耗时:Total runtime: 171.609 ms
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    使用join和子查询相差不大,都能满足我们的需求,当然我们的平台是基于华为高斯DWS数据库设计的,在过程中也考虑了华为的优化,可参考:优化查询性能概述_数据仓库服务 GaussDB(DWS)_性能调优_华为云
    高斯是分布式数据库,将会对数据进行分布式存储,会增加网络之间传输的性能损耗,因此尝试了下每个节点都保存一份数据,是否能增加查询速度,这个做法的弊端在于,数据会在每个查询节点都会存储一份,造成存储资源的浪费,在实际测试中,查询性能并不能得到提升。

  • 相关阅读:
    数据结构与算法之堆: Leetcode 23. 合并 K 个升序链表 (Typescript版)
    MySQL 运维常用脚本
    【教学类-15-01】20221115《学号(姓名)描字帖-A4横版-竖切》(中班)
    图像算法七 —— 自助采样法 & Bagging算法 & 随机森林
    linux系统编程之一
    使用mindspore提供的docker运行官方示例resnet_thor,训练速度非常慢
    盲盒网站遭遇DDoS攻击,高防ip是如何起到安全防护的?
    设计模式面试题(总结最全面的面试题!!!)
    QT--对象模型(对象树)
    矩阵的乘法运算与css的3d变换(transform)
  • 原文地址:https://blog.csdn.net/weixin_43929753/article/details/134501187
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号