当前位置: 首页 > news >正文

程序性能优化——接口性能优化总结和思考

程序性能优化——接口性能优化总结和思考

  • 一、背景介绍
  • 二、 思路方案
  • 三、过程
  • 四、总结
  • 五、升华

一、背景介绍

接口的优化
排查到的问题:循环中查询数据库,4300次查询数据库总共耗时在4分钟左右。
优化结果:4分钟到2秒

二、 思路方案

宏观的整体优化方向:内存、网络(带宽)、cpu

三、过程

此次的优化方向:

  1. 减少从数据库传输到程序中的数据量。由800条减少到一条。对带宽的占用减少了,传输速度会更快。
  2. 另一方面,对sql语句进行了优化(站在业务的角度只返回一条数据),单次查询由0.025s,优化到 0.001s。(目前看到的现象是由于返回的数据只有一条,效率会更高)。
  3. 使用多线程进行查询,使用多核cpu的优势,由于此处为IO型,所以最大线程数量选用的是2N(N为cpu核心数)
  4. 由于每次查询都会开启一个线程池,频繁的开启和销毁线程池对于性能也有不小的损耗,所以此处进行线程池启用的设定,当查询的数据在1000条以下后端实际处理数据量(小于10w)不启用线程池,当查询的数据超过1000(实际处理数据量在10w+)时启用线程池。
    优化内容:sql优化,添加多线程。

四、总结

不足之处:

  1. 此处使用多线程感觉上有些浪费,是否有必要使用到线程池?
  2. 没有接口循环查询数据库的问题,原因是对于当前业务场景下的oracle的批量查询语句,较为复杂。所以暂时没有从批量查询进行优化。
    如果后期进行批量查询,估计可以将线程池给替换掉。

五、升华

必须站在宏观的角度上从内存、网络、cpu等方面进行优化。
而不是遇到需要性能优化的点,就从sql语句、多线程等方面进行优化。
需要知其然知其所以然,然后平衡求出当前的最优解。

相关文章:

  • HTML 颜色名
  • 为什么选择Python作为AI开发语言
  • Anvil Empires/铁砧帝国操作没反应、频繁掉线怎么办?
  • Python第二语言(十二、SQL入门和实战)
  • PHP 命名空间
  • C++迈向精通:当我尝试修改虚函数表
  • 编程C语言自学书:引领你深入编程世界的神秘之旅
  • MDPO:Conditional Preference Optimization for Multimodal Large Language Models
  • 【STM32】GPIO简介
  • 基于文本挖掘的卡塔尔世界杯赛事网络舆情演变与趋势预测
  • Eigne库安装及使用教程
  • FastAdmin后台开发框架 lang 任意文件读取漏洞复现
  • ListModel 是 Qt Quick 中用于存储数据模型的元素,通常用于在视图组件(如 ListView、GridView)中显示数据
  • 2. 音视频H264
  • unity38——MemoryProfiler性能分析器,截帧分析当前性能占用率的具体文件
  • 基于EXCEL数据表格创建省份专题地图
  • 什么是模板字符串?
  • 路由控制和策略路由
  • Transformer革新:Infini-Transformer在长文本处理中的突破
  • 前端菜鸡学习日记 -- 关于pnpm
  • 涉“子宫肌瘤”论文现55例男性对照观察患者?山大齐鲁医院:正在调查
  • 最会说亚军感言的鲁德,站上了马德里公开赛的冠军领奖台
  • 习近平将对俄罗斯进行国事访问并出席纪念苏联伟大卫国战争胜利80周年庆典
  • 3:0战胜日本队,中国羽毛球队挺进2025苏迪曼杯决赛
  • 2025年五一档电影票房破4亿,《水饺皇后》领跑
  • 巴菲特股东大会前瞻:执掌伯克希尔60年,巨轮将驶向何方