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

桂城网站制作专业公司建设银行网站首页打不开

桂城网站制作专业公司,建设银行网站首页打不开,贸易网站建设公司,深圳做网站应该怎么做如何使用MySQL快速定位慢SQL问题? 在企业级开发中,尤其是涉及到订单查询的业务时,经常会发生慢查询的问题。比如用户翻页到后面的页数时,查询变慢,因为传统的LIMIT offset, size在数据量大时效率低下。这时候&#xff…

如何使用MySQL快速定位慢SQL问题?

        在企业级开发中,尤其是涉及到订单查询的业务时,经常会发生慢查询的问题。比如用户翻页到后面的页数时,查询变慢,因为传统的LIMIT offset, size在数据量大时效率低下。这时候,需要分析执行计划,看看是否全表扫描,或者索引使用情况。可能的问题是没有使用覆盖索引,或者offset过大导致扫描大量数据。
        在定位和优化慢查询问题的时候,首先需要开启慢查询日志然后,设置合适的阈值,比如超过2秒的查询记录下来。接着,通过日志分析工具,比如mysqldumpslow(Percona的pt-query-digest也可以),来找出最耗时的查询。接下来,优化方法可能需要使用延迟关联,或者基于游标的分页,比如记录上一页的最大ID,这样避免使用大的offset。同时,添加合适的索引,比如在查询条件和排序字段上建立复合索引,可能覆盖查询所需字段,减少回表操作。

        另外,为了以后避免类似问题再次发生,在实际开发中的代码审查时要注意分页写法。

下面,我们举几个实际企业级开发中经常遇到的慢查询的例子,展开来详细分析并给出合理的慢查询优化建议。希望通过这两个例子,将慢查询的分析排查以及优化的过程做一个详细的分析,让大家都能有一个清晰的理解,方便以后大家在企业级开发中遇到类似问题能够游刃有余。

———————(●'◡'●)—————————华丽的分割线—————————————————

示例二:(第一个例子在上一篇博文中,这是第二个例子。)

场景背景

某订单管理平台订单列表页出现性能问题:当用户查询历史订单(特别是翻页到100页之后)时,页面响应时间超过5秒,收到用户反馈对该问题进行定位和优化。

  • 订单表结构(实际企业级开发中的订单表结构远比一下列出的更加复杂,再次为了方便举例和理解,做了简化):

    CREATE TABLE orders (id BIGINT PRIMARY KEY,user_id INT NOT NULL,order_status TINYINT,create_time DATETIME,total_amount DECIMAL(10,2),INDEX idx_user (user_id)
    );

第一阶段:问题定位

1. 启用慢查询日志

-- 动态开启(生产环境慎用)
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2; -- 捕获超过2秒的查询
SET GLOBAL log_queries_not_using_indexes = 'ON'; -- 记录未走索引的查询

2. 分析工具(这里使用的是mysqldumpslow,如果想进行更加深度的分析,可以使用Percona Toolkit)

# 分析最耗时的前10个慢查询
mysqldumpslow -s t -t 10 /var/lib/mysql/slow.log# 分析特定模式的查询(如包含SELECT的语句)
mysqldumpslow -g "SELECT" /var/lib/mysql/slow.log
3. 分析工具输出解析
Count: 128  Time=3.24s (414s)  Lock=0.00s (0s)  Rows=20.0 (2560)SELECT id, user_id, order_status, create_time, total_amount FROM orders WHERE user_id = N ORDER BY create_time DESC LIMIT N, N

输出关键指标解读:

  • Count: 该模式查询发生的总次数(128次)

  • Time: 平均执行时间3.24s,总耗时414秒

  • Rows: 平均返回20行,总计2560行

  • 暴露高频慢SQL模式:带大偏移量的分页查询


第二阶段:问题分析

1. 执行计划分析
EXPLAIN SELECT ... -- 显示type=range, key=idx_user, rows=10240

通过查看EXPLAIN的输出,重点关注以下指标:

  • type查询类型,值越靠前(如constref)表示性能越好,ALL表示全表扫描,性能最差

  • possible_keyskey显示可能使用的索引和实际使用的索引,若keyNULL,说明没有使用索引。

  • rows:查询需要扫描的行数,数值越大表示性能越差。

  • Extra:包含额外信息,如Using filesort表示需要额外排序操作,Using temporary表示需要创建临时表。

分析:

  • 虽然使用了user_id索引,但需要回表获取所有字段

  • LIMIT 10000,20导致扫描前10020行再丢弃前10000行

2. 性能瓶颈点
  • 索引覆盖不全:idx_user仅包含user_id

  • 分页深度过大时产生大量无效IO

  • 排序字段与索引顺序不一致导致filesort


第三阶段:确定优化方案

方案1:延迟关联优化
SELECT o.* 
FROM orders o
JOIN (SELECT idFROM ordersWHERE user_id = 123ORDER BY create_time DESCLIMIT 10000, 20
) AS tmp USING(id);
  • 子查询使用覆盖索引快速定位主键

  • 外层查询通过主键快速获取完整数据

方案2:索引优化
ALTER TABLE orders 
ADD INDEX idx_user_create_time(user_id, create_time DESC);
  • 覆盖查询条件和排序字段:将(user_id, create_time DESC)作为联合索引

  • 避免filesort和随机IO

方案3:游标分页优化:优化limit

记录上一页最后一条记录的create_time:

SELECT * 
FROM orders 
WHERE user_id = 123 AND create_time < '2023-08-20 14:30:00' 
ORDER BY create_time DESC 
LIMIT 20;

第四阶段:效果验证

优化后执行计划显示:

  • type=ref

  • key=idx_user_create_time

  • Extra=Using index

压测结果对比:

指标优化前优化后
查询时间(10000 offset)4.8s32ms
IO次数1024020
锁等待时间220ms0ms

如何避免类型情况再次发生?

  1. 预防

  • 代码审查时禁止直接使用LIMIT offset
  • 分页深度超过100时强制转为游标分页

    2.监控

-- 使用performance_schema实时监控
SELECT * 
FROM performance_schema.events_statements_summary_by_digest 
ORDER BY sum_timer_wait DESC 
LIMIT 10;

经验总结

  1. 分页查询超过1000行偏移量必须优化

  2. 组合索引字段顺序遵循WHEREORDER BYSELECT原则

  3. OLTP系统单表数据量超过500万需考虑分库分表

http://www.dtcms.com/a/459579.html

相关文章:

  • 九江市做网站的公司东莞社保官方网站
  • 科技公司网站设手机搭建网站教程视频教程
  • 大气精美网站设计工作室织梦模板关于班组建设管理的网站
  • 咨询北京国互网网站建设石家庄又开始管控了
  • 家乡网站建设企业网站开发 流程
  • 福田网站建设wordpress免
  • 怎样在网做旅游网站做网站用什么配置的vps
  • PHP MySQL 网站开发实例wordpress 转织梦
  • 如何与别的网站做友情链接企业为什么做网站 图片
  • 建设一个电商网站的流程能不能上传网站再备案
  • 锦州哪家做网站怎么建立官网
  • 网站模糊设计西安网站制作多少钱
  • 网页制作网站制作步骤成都网站推广优化公司
  • 对于协会的新年祝贺语网站模板100部禁用app
  • 手机网站导航按钮淘宝网站的建设情况
  • 站长工具手机综合查询seo关键词优化怎么做
  • 怎样用模板做网站主流的网站开发语言
  • 哪家做网站最便宜用自己的计算机做服务器建网站
  • 做网站视频网站福州商城网站
  • 怎样做网站标题优化电商培训机构哪家强
  • 建设网站的企业有哪些农村电商网站建设计划书
  • 广州建设工程安全质量监督网站视频制作公司价格表
  • 临海网站建设公司哪个网站查公司信息比较准
  • 广州网站建设联系新科海珠宁波网页网站制作
  • 简单模板网站制作时间哪些网站的做的好看的
  • 免费ae模板素材网站昆明做网站的
  • 医疗公司网站建设项目背景网络营销的起源
  • 花生壳做局域网站如何做平台软件
  • 网站拖拽特种作业人员证网上查询
  • 体育彩票网站开发该做哪些步骤关于建设旅游网站的书籍