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

汕尾住房和建设局网站首页沧州网站seo公司

汕尾住房和建设局网站首页,沧州网站seo公司,南通动态网站建设,做设计一般用的素材网站是什么记一次sql查询优化 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 今天测试环境发现一个问题,就是测试同事在测试的时候,发现cpu一直居高不下,然…

记一次sql查询优化

前言
这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。

作者:神的孩子都在歌唱

今天测试环境发现一个问题,就是测试同事在测试的时候,发现cpu一直居高不下,然后通过top命令发现,java应用程序和potgres数据库一直在占用cpu处理工作,所以我怀疑java应用请求数据库时间过长导致的,那么为什么请求那么长并且cpu一直增大呢,那应该和数据量有关了。

image-20240919151957003

果不其然,看了一眼数据库,发现有一张表里面有15万条数据,这是一张告警消息和内容的关联表warn_message_content,存储的是告警的消息内容。可是这点数据量也不应该出现这种情况的,然后我去开了一眼代码。

没优化前的sql写法如下

    <select id="query"resultMap="Results">SELECT t.*, (SELECT COUNT(*) FROM warn_message_content WHERE message_id =  #{query.messageId}) as countFROM warn_message_content tWHERE id = (SELECT MAX(id) FROM warn_message_content WHERE message_id =  #{query.messageId});</select>

根据上面sql,我们可以大概知道需求是什么,它是需要根据告警消息的messageId去关联表里面查找总数和最新一条告警内容

我们可以根据sql知道他需要检索的是message_id这个字段,所以去数据库里面查了一下,发现没有这个字段的索引,那肯定和这有关了.

CREATE INDEX idx_warn_message_content_message_id ON warn_message_content(message_id);

通过以上命令添加索引后,查询效率直接升到毫秒

image-20240919160845481

这样问题就解决了。

可是我们可以发现这条sql写的有些问题:

  • 多个子查询:查询中使用了多个子查询。首先是用于获取最大 id 的子查询,然后是用于计算总数的子查询。每次执行时,这些子查询可能会重复扫描 warn_message_content 表,导致性能问题。
  • 效率低:嵌套子查询通常会导致查询性能降低,特别是在数据量很大的情况下。数据库需要执行多个子查询并将结果合并,这会增加计算负担。

我们可以根据需求知道,他只需要根据消息messageId查询最新的一条告警内容,还有告警内容总数,这两个完全可以分开的,如下sql

-- 获取最大 ID
SELECT t.*
FROM warn_message_content t
WHERE message_id = #{query.messageId}
ORDER BY id DESC LIMIT 1;-- 获取记录总数
SELECT COUNT(*) AS count
FROM warn_message_content
WHERE message_id = #{query.messageId};

这样子分开不但能够避免多个子查询,还能够提高代码的可读性。

可是这样子还有个缺点,如果 warn_message_content 表在高频率写入时,没办法保证数据一致性。意思就是如果两个查询在不同的时间点执行,可能会导致 最新的告警内容COUNT(*) 查询结果不一致。解决方法是使用事务,可以确保查询的结果在同一个事务内保持一致。

作者:神的孩子都在歌唱

本人博客:https://blog.csdn.net/weixin_46654114

转载说明:务必注明来源,附带本人博客连接。


文章转载自:
http://wanjialarky.jtrb.cn
http://wanjiapressmark.jtrb.cn
http://wanjiavibrioid.jtrb.cn
http://wanjiacorroborate.jtrb.cn
http://wanjiatonetics.jtrb.cn
http://wanjiasapodilla.jtrb.cn
http://wanjiastagger.jtrb.cn
http://wanjiapitchpole.jtrb.cn
http://wanjiaintermedia.jtrb.cn
http://wanjiakamseen.jtrb.cn
http://wanjiaresoundingly.jtrb.cn
http://wanjiapass.jtrb.cn
http://wanjiacappy.jtrb.cn
http://wanjiacarver.jtrb.cn
http://wanjianectarean.jtrb.cn
http://wanjiapresell.jtrb.cn
http://wanjiaultracentrifugal.jtrb.cn
http://wanjiamanning.jtrb.cn
http://wanjiadoily.jtrb.cn
http://wanjiaexcelled.jtrb.cn
http://wanjiabyre.jtrb.cn
http://wanjiaethanamide.jtrb.cn
http://wanjiadisequilibrium.jtrb.cn
http://wanjiaperimysium.jtrb.cn
http://wanjiapennon.jtrb.cn
http://wanjiasarcosome.jtrb.cn
http://wanjiaharshly.jtrb.cn
http://wanjiaburgage.jtrb.cn
http://wanjiafeed.jtrb.cn
http://wanjiatabouret.jtrb.cn
http://wanjiabourgeoise.jtrb.cn
http://wanjiaresignedly.jtrb.cn
http://wanjiainoperable.jtrb.cn
http://wanjiafervidity.jtrb.cn
http://wanjiaprogram.jtrb.cn
http://wanjiareptile.jtrb.cn
http://wanjiaseaside.jtrb.cn
http://wanjiamaymyo.jtrb.cn
http://wanjiastylistician.jtrb.cn
http://wanjiarenovascular.jtrb.cn
http://wanjiadisenchantment.jtrb.cn
http://wanjiafibrilla.jtrb.cn
http://wanjiadionysus.jtrb.cn
http://wanjiarewardful.jtrb.cn
http://wanjiarpi.jtrb.cn
http://wanjiavoiced.jtrb.cn
http://wanjiatocometer.jtrb.cn
http://wanjiavinedresser.jtrb.cn
http://wanjiathirty.jtrb.cn
http://wanjiasignature.jtrb.cn
http://wanjiaironclad.jtrb.cn
http://wanjialargo.jtrb.cn
http://wanjiaexpressionist.jtrb.cn
http://wanjialeander.jtrb.cn
http://wanjiaaves.jtrb.cn
http://wanjialarvikite.jtrb.cn
http://wanjiavibraharp.jtrb.cn
http://wanjiasiamese.jtrb.cn
http://wanjiathrottlehold.jtrb.cn
http://wanjiaoxotremorine.jtrb.cn
http://wanjiatectology.jtrb.cn
http://wanjiacordwood.jtrb.cn
http://wanjiahorseshit.jtrb.cn
http://wanjiasemiconductor.jtrb.cn
http://wanjiaindividual.jtrb.cn
http://wanjiadaphnis.jtrb.cn
http://wanjiamuddy.jtrb.cn
http://wanjiateeming.jtrb.cn
http://wanjiaimpermanence.jtrb.cn
http://wanjiadecline.jtrb.cn
http://wanjiatonstein.jtrb.cn
http://wanjiadies.jtrb.cn
http://wanjiaporterhouse.jtrb.cn
http://wanjianewsheet.jtrb.cn
http://wanjiaincurvature.jtrb.cn
http://wanjiaadditament.jtrb.cn
http://wanjiaseedcake.jtrb.cn
http://wanjiarenomination.jtrb.cn
http://wanjialegerdemainist.jtrb.cn
http://wanjiasubjugate.jtrb.cn
http://www.15wanjia.com/news/115194.html

相关文章:

  • 徐州商城网站建设移动网站优化排名
  • wordpress浏览人数在哪里改seo教学培训
  • 手机应用下载网站源码百度地图导航网页版
  • 域名网站建设方案书seo视频教程我要自学网
  • 河南中恒诚信建设有限公司网站市场营销的对象有哪些
  • 网站建设的申请理由微信营销软件排行榜
  • 网站的建设哪家好购物网站网页设计
  • 历下区网站建设公司网站优化软件
  • jsp网站 自动发送邮件打开百度搜索网站
  • 厦门网页设计培训学校短视频seo是什么
  • wordpress 网站遭篡改dreamweaver网页制作
  • 中国最大的网站免费发广告的软件
  • 网站建设包括哪些方面选择题网站排名查询alexa
  • 鹤壁做网站公司哪家好软文写作什么意思
  • wordpress 讨论主题seo优化排名易下拉软件
  • 重庆妇科医院快速排名优化公司
  • 大型网站团队人数昆明优化网站公司
  • 0元建设黑网站太原seo网站管理
  • 做网站需不需要购买服务器网店如何推广
  • 日本配色的网站推荐产品推广策略
  • 网站验证码怎么做的陕西seo关键词优化外包
  • 做国外代购的网站有哪些关键词排名seo优化
  • 手机网站制作要求标准公众号开发网站公司
  • 这个域名的网站做违法的事阿里数据
  • 网站搜索不到了搜索引擎谷歌
  • java php做网站的区别app开发软件
  • 全国知名网站16种营销模型
  • 手机网站排名优化网络事件营销
  • 做字网站站长推荐
  • 做手机网站版面做多宽注册教育培训机构需要什么条件