📋 目录统计概览Top10 明细(按单条耗时)高频慢查询模式(指纹聚合,取样 22,048 条触发深度分析的模式(条数>100 或 累计>30逐条优化建议汇总

MySQL 慢查询日报(线上 prod591)2026-11-02

统计概览

项目值
统计范围2026-11-02 00:00:00 ~ 23:59:59(Asia/Shanghai)
环境prod-591
慢日志条数(ES mysql-slow_*)122,681 条(指纹聚合取样 22,048 条,覆盖率 18%,超过 2 万条上限截断)
Top10 单条最慢6,904.65 s(user=bi,ZHDX_t591_148)
非备份模式最大累计7.92h(49 次 × 582.03 s)
备份模式(user 含 backup/databasus_backup)47 条、累计 1.54h(单独标注,不触发深析)
监控巡检类(jmysql/proxysql_monitor 或 information_schema)81 条、累计 1.7min(多为 # Schema: 空导致采集端 _grokparsefailure、无库名;单独标注,不触发深析)
深析模式 explain 成功率7/8(88%)
数据来源ES mysql-slow_*(@timestamp)+ MCP 只读 MySQL(describe_schema/explain)
生成时间2026-11-03 09:41(Asia/Shanghai)

Top10 明细(按单条耗时)

#耗时(s)库.表行数 sent/examineduser / server慢因分类
16,904.65t591_new.market_community_agent_bid_record_detail21,357 / 4,680,118,226bi / ZHDX_t591_148扫描行数远大于返回行数(4,680,118,226/21,357)、索引范围扫描量过大(market_community_agent_bid_record_detail: key=idx_created_at, rows=3,568,860)
26,281.56t591.house_rel5,000 / 39,467,601tw591 / ZHDX_t591_207扫描行数远大于返回行数(39,467,601/5,000)、EXPLAIN 全表扫描/未用索引、排序未走索引(filesort)
35,135.79t591.house_rel4,729 / 39,467,536tw591 / ZHDX_t591_207扫描行数远大于返回行数(39,467,536/4,729)、EXPLAIN 全表扫描/未用索引、排序未走索引(filesort)
44,731.77t591_data.revenue_split4 / 69,182,629Security591 / ZHDX_t591_207扫描行数远大于返回行数(69,182,629/4)、索引范围扫描量过大(revenue_split: key=idx_date_region, rows=11,262,948)
54,706.39t591.house_rel5,000 / 39,468,070tw591 / ZHDX_t591_207扫描行数远大于返回行数(39,468,070/5,000)、EXPLAIN 全表扫描/未用索引、排序未走索引(filesort)
64,627.58t591_data.revenue_split3 / 69,365,607Security591 / ZHDX_t591_207扫描行数远大于返回行数(69,365,607/3)、EXPLAIN 全表扫描/未用索引
73,814.17t591.house_rel5,000 / 39,468,229tw591 / ZHDX_t591_207扫描行数远大于返回行数(39,468,229/5,000)、EXPLAIN 全表扫描/未用索引、排序未走索引(filesort)
82,786.50t591.userLoginLog22 / 3,954,421Security591 / ZHDX_t591_207扫描行数远大于返回行数(3,954,421/22)
91,753.78t591_new.push_line_records673,240 / 673,240datastream / ZHDX_t591_148索引范围扫描量过大(push_line_records: key=PRIMARY, rows=1,565,056)
101,753.58t591_new.push_line_records673,240 / 673,240datastream / ZHDX_t591_148索引范围扫描量过大(push_line_records: key=PRIMARY, rows=1,292,496)

高频慢查询模式(指纹聚合,取样 22,048 条)

按条数 Top5

#模式(指纹摘要)条数平均(s)累计serveruser
1select count(*) as aggregate from sale where status = ? and closed = ? and community_id = ? and kind IN (?...) and posttime >= ? /* ms:tw591ms-cdc */;3,6641.701.73hZHDX_t591_207tw591
2select last_contacted_at, uid, is_sticked from im_conversations where conversation IN (?...) and uid != ? and im_conversations.deleted_at is null /* ms:hongyan-web-server */2,4053.022.02hRDS_IMhk591
3select id, name, checkstatus, deleted, build_purpose from t591_new.market_community FORCE INDEX(idx_region_section) where status = ? and deleted = ? and checkstatus = ? and type = ? and regionid = ? and sectionid = ? /* ms:tw591ms-cdc */;1,1821.8235.8minZHDX_t591_207tw591
4select * from external_sale where platform = ? and status = ? and region_id = ? and section_id = ? /* ms:tw591ms-cdc-distribute */;6434.2445.4minZHDX_t591_207tw591
5
select orign.id, orign.start_time, u.the_id as build_id, orign.status, orign.hangup_cause from t591_ivr.ivr_ext_service_call_t591 as orign left join t591_ivr.iv …(点击展开完整 SQL)
select orign.id, orign.start_time, u.the_id as build_id, orign.status, orign.hangup_cause from t591_ivr.ivr_ext_service_call_t591 as orign left join t591_ivr.ivr_ext_usr_number as u on orign.number = u.number and u.the_type = ? where orign.project_idc = ? AND u.the_type = ? AND orign.start_time >= ? AND orign.start_time <= ? and orign.id > ? order by orign.id asc limit ?;
6361.2813.5minZHDX_t591_181,ZHDX_t591_182tw591

按累计耗时 Top5

#模式条数平均(s)累计serveruser
1SELECT id, event_item_id, time, pv, uv, pv_time, uv_time FROM t591_new.union_stats_event_item_count WHERE (id >= ?) AND (NOT (id >= ?)) AND (id IS NOT NULL);49582.037.92hZHDX_t591_148datastream
2SELECT id, msg_id, conversation, from_uid, target_uid, content, type, device, created_at, ip, deleted, remark, content_raw, status FROM t591_new.im_msg_analysis WHERE (id >= ?) AND (NOT (id >= ?)) AND (id IS NOT NULL);50471.736.55hZHDX_t591_148datastream
3select * from (select user_id from t591.house_rel where type IN (?...) and status > ? and start_time < ? and end_time > ? group by user_id) as a where a.user_id > ? order by a.user_id asc limit ?;44984.485.54hZHDX_t591_207tw591
4
SELECT id, entrance, conversation, from_uid, type, post_id, target_uid, content, device, utm, CAST(CONVERT_TZ(created_at, @@session.time_zone, ?) AS DATETIME(?) …(点击展开完整 SQL)
SELECT id, entrance, conversation, from_uid, type, post_id, target_uid, content, device, utm, CAST(CONVERT_TZ(created_at, @@session.time_zone, ?) AS DATETIME(?)) AS created_at, CAST(CONVERT_TZ(updated_at, @@session.time_zone, ?) AS DATETIME(?)) AS updated_at FROM t591_new.im_launch WHERE (id >= ?) AND (NOT (id >= ?)) AND (id IS NOT NULL);
49190.782.60hZHDX_t591_148datastream
5SELECT id, event_item_id, time, pv, uv, pv_time, uv_time FROM t591_new.union_stats_event_item_count WHERE (id >= ?) AND (NOT (id >= ?)) AND (id IS NOT NULL) AND (id > ?);44198.482.43hZHDX_t591_148datastream
备份模式全天 47 条 / 1.54h,未触发深度分析(如条数环比异常翻倍再人工介入)。

触发深度分析的模式(条数>100 或 累计>30min,非备份,最多 8 个)

1. SELECT id, event_item_id, time, pv, uv, pv_time, uv_time FROM t591_new.union_stats_event_item_count WHERE (id >= ?) AND (NOT (id >= ?)) AND (id IS NOT NULL); —— 49 次 × 582.03s = 7.92h

SELECT `id`, `event_item_id`, `time`, `pv`, `uv`, `pv_time`, `uv_time` FROM `t591_new`.`union_stats_event_item_count` WHERE (`id` >= '2357222422') AND (NOT (`id` >= '2398163050')) AND (`id` IS NOT NULL);
SELECT `id`, `event_item_id`, `time`, `pv`, `uv`, `pv_time`, `uv_time` FROM `t591_new`.`union_stats_event_item_count` WHERE (`id` >= '2357222422') AND (NOT (`id` >= '2398163050')) AND (`id` IS NOT NULL);
#表访问类型使用索引候选索引预扫行数过滤后
1union_stats_event_item_countrangePRIMARYPRIMARY84,056,396100.0%

2. SELECT id, msg_id, conversation, from_uid, target_uid, content, type, device, created_at, ip, deleted, remark, content_raw, status FROM t591_new.im_msg_analysis —— 50 次 × 471.73s = 6.55h

SELECT `id`, `msg_id`, `conversation`, `from_uid`, `target_uid`, `content`, `type`, `device`, `created_at`, `ip`, `deleted`, `remark`, `content_raw`, `status` FROM `t591_new`.`im_msg_analysis` WHERE (`id` >= '205632336') AND (NOT (`id` >= '206287549')) AND (`id` IS NOT NULL);
SELECT `id`, `msg_id`, `conversation`, `from_uid`, `target_uid`, `content`, `type`, `device`, `created_at`, `ip`, `deleted`, `remark`, `content_raw`, `status` FROM `t591_new`.`im_msg_analysis` WHERE (`id` >= '205632336') AND (NOT (`id` >= '206287549')) AND (`id` IS NOT NULL);
#表访问类型使用索引候选索引预扫行数过滤后
1im_msg_analysisrangePRIMARYPRIMARY1,654,112100.0%

3. select * from (select user_id from t591.house_rel where type IN (?...) and status > ? and start_time < ? and end_time > ? group by user_id) as a where a.user_id —— 4 次 × 4984.48s = 5.54h

select * from (select `user_id` from `t591`.`house_rel` where `type` in (1, 2) and `status` > 0 and `start_time` < 1793462400 and `end_time` > 1790784000 group by `user_id`) as a where `a`.`user_id` > 3424746 order by `a`.`user_id` asc limit 5000;
select * from (select `user_id` from `t591`.`house_rel` where `type` in (1, 2) and `status` > 0 and `start_time` < 1793462400 and `end_time` > 1790784000 group by `user_id`) as a where `a`.`user_id` > 3424746 order by `a`.`user_id` asc limit 5000;
#表访问类型使用索引候选索引预扫行数过滤后
1a❌ 全表扫描——2,145,33233.33%
ALTER TABLE `t591`.`house_rel` ADD INDEX `idx_type_status` (`type`, `status`);

4. SELECT id, entrance, conversation, from_uid, type, post_id, target_uid, content, device, utm, CAST(CONVERT_TZ(created_at, @@session.time_zone, ?) AS DATETIME(?) —— 49 次 × 190.78s = 2.60h

SELECT `id`, `entrance`, `conversation`, `from_uid`, `type`, `post_id`, `target_uid`, `content`, `device`, `utm`, CAST(CONVERT_TZ(`created_at`, @@session.time_zone, '+00:00') AS DATETIME(6)) AS `created_at`, CAST(CONVERT_TZ(`updated_at`, @@session.time_zone, '+00:00') AS DATETIME(6)) AS `updated_at` FROM `t591_new`.`im_launch` WHERE (`id` >= '1944353') AND (NOT (`id` >= '2430441')) AND (`id` IS NOT NULL);
SELECT `id`, `entrance`, `conversation`, `from_uid`, `type`, `post_id`, `target_uid`, `content`, `device`, `utm`, CAST(CONVERT_TZ(`created_at`, @@session.time_zone, '+00:00') AS DATETIME(6)) AS `created_at`, CAST(CONVERT_TZ(`updated_at`, @@session.time_zone, '+00:00') AS DATETIME(6)) AS `updated_at` FROM `t591_new`.`im_launch` WHERE (`id` >= '1944353') AND (NOT (`id` >= '2430441')) AND (`id` IS NOT NULL);
#表访问类型使用索引候选索引预扫行数过滤后
1im_launchrangePRIMARYPRIMARY942,576100.0%

5. SELECT id, event_item_id, time, pv, uv, pv_time, uv_time FROM t591_new.union_stats_event_item_count WHERE (id >= ?) AND (NOT (id >= ?)) AND (id IS NOT NULL) AND —— 44 次 × 198.48s = 2.43h

SELECT `id`, `event_item_id`, `time`, `pv`, `uv`, `pv_time`, `uv_time` FROM `t591_new`.`union_stats_event_item_count` WHERE (`id` >= '2275341166') AND (NOT (`id` >= '2316281794')) AND (`id` IS NOT NULL) AND (`id` > '2276138480');
SELECT `id`, `event_item_id`, `time`, `pv`, `uv`, `pv_time`, `uv_time` FROM `t591_new`.`union_stats_event_item_count` WHERE (`id` >= '2275341166') AND (NOT (`id` >= '2316281794')) AND (`id` IS NOT NULL) AND (`id` > '2276138480');
#表访问类型使用索引候选索引预扫行数过滤后
1union_stats_event_item_countrangePRIMARYPRIMARY81,612,440100.0%

6. select last_contacted_at, uid, is_sticked from im_conversations where conversation IN (?...) and uid != ? and im_conversations.deleted_at is null /* ms:hongyan- —— 2,405 次 × 3.02s = 2.02h

select `last_contacted_at`, `uid`, `is_sticked` from `im_conversations` where `conversation` in (select `conversation` from `im_conversations` where `app_id` = '3' and `uid` = '1001' and `deleted_at` is null) and `uid` != '1001' and `im_conversations`.`deleted_at` is null /* ms:hongyan-web-server */
ALTER TABLE `im_conversations` ADD INDEX `idx_app_id_uid_conversati_deleted_at` (`app_id`, `uid`, `conversation`, `deleted_at`);

7. SELECT mcrd.id, mcbr.period_id as ?, mcrd.record_id ?, if(mcbr.parent_id!=?,mcbr.parent_id,null) ?, mcrd.oid ?, mcrd.user_id ?, case mcrd.payment_type when ? th —— 1 次 × 6904.65s = 1.92h

SELECT 
mcrd.`id`,
mcbr.period_id as '期数',
mcrd.`record_id` '竞价ID',
if(mcbr.parent_id!=0,mcbr.parent_id,null) '父竞价ID',
mcrd.oid '订单ID',
mcrd.`user_id` '会员ID',
case mcrd.`payment_type` when 1 then '竞价' when 2 then '调价' end '出价类型',
mcrd.`money` '(出价/调价)金额',
mcrd. `type` '竞价类型',
mcrd.`rank` '预排名',
mcrd.`community_id` '社区ID',
-- mc.`name` '社区名称',
ar.`name` '社区县市',
ase.`name` '社区乡镇',
case when mcrd.`source`=1 then '推荐' when mcrd.`source`=2 then '搜寻' when mcrd.`source`=3 then '收藏' when mcrd.`source`=4 then '上期' 
when mcrd.`source`=5 then '历史' when mcrd.`source`=6 then '续购' when mcrd.`source`=7 then '物件管理页' when mcrd.`source`=8 then '会员中心推荐社区弹窗' when mcrd.`source`=9 then '召集令活动页' when mcrd.`source`=10 then '企业号触屏' when mcrd.`source`=11 then '精准营销弹窗' when mcrd.`source`=12 then '物件刊登成功页' when mcrd.`source`=13 then '物件管理页顶部推荐' when mcrd.`source`=14 then '最新续购' 
when mcrd.`source`=15 then '优质社区推荐'
when mcrd.`source`=16 then '弹窗复购'
when mcrd.`source`=17 then '弹窗續費'
when mcrd.`source`=18 then '中古屋詳情頁PC端'
when mcrd.`source`=19 then '中古屋詳情頁觸屏端'
when mcrd.`source`=20 then '中古屋詳情頁APP端'
when mcrd.`source`=21 then '租屋詳情頁PC端'
when mcrd.`source`=22 then '租屋詳情頁觸屏端'
when mcrd.`source`=23 then '租詳情頁APP端'
when mcrd.`source`=24 then 'PC-会员中心优惠券'
when mcrd.`source`=25 then '触屏-会员中心'
when mcrd.`source`=26 then 'APP-会员中心'
when mcrd.`source`=27 then '四端-金牌专家版位'
when mcrd.`source`=28 then '四端-介绍页'
when mcrd.`source`=29 then '待办事项提醒续费'
when mcrd.`source`=30 then '待办事项体系到期复购'
when mcrd.`source`=31 then 'PC-现金券列表'
when mcrd.`source`=32 then '触屏-现金券列表'
when mcrd.`source`=33 then 'PC-领取成功弹窗社区推荐'
when mcrd.`source`=34 then 'PC-待使用弹窗社区推荐' 
when mcrd.`source`=35 then '物件管理页顶部推荐(物件推荐)'
when mcrd.`source`=37 then '曝光失败弹窗复购'
when mcrd.`source`=38 then '即将到期一键续购'
when mcrd.`source`=39 then '已到期一键续购'
when mcbr.`source`=40 then '即将到期一键续购-触屏'
when mcbr.`source`=41 then '即将到期一键续购-APP'
when mcrd.`source`=101 then '其他'
when mcrd.`source`=102 then 'pc金牌专家购买列表'
when mcrd.`source`=103 then '触屏金牌专家购买列表'
when mcrd.`source`=104 then 'PC物件管理页列表'
when mcrd.`source`=105 then 'PC弹窗引导'
when mcrd.`source`>=100 and mcrd.`source`<=200 then '自定义' else mcrd.`source` end '订单入口来源',
mcrd.`deleted` '是否刪除',  -- ,1、為已刪,0、未未刪
case mcrd.`pay_status` when 1 then '待支付' when 2 then '已支付' when 3 then '退款' when 4 then '取消' when 5 then '失败' else mcrd.`pay_status` end '支付状态',
mcrd.`created_at` '创建时间',
mcrd.`updated_at` '更新时间' 
from t591_new.market_community_agent_bid_record_detail mcrd 
LEFT JOIN t591_new.market_community_agent_bid_record mcbr on mcrd.record_id=mcbr.id and mcrd.user_id=mcbr.user_id 
LEFT JOIN t591_new.market_community_bid_rules mcr on mcbr.`community_id`=mcr.community_id -- and mcbr.period_id=mcr.period_id
LEFT JOIN t591_new.`market_community` mc on mcrd.community_id=mc.id 
left JOIN t591_new.area_region ar on mcr.`regionid`=ar.id
left JOIN t591_new.`area_section` ase on mcr.sectionid=ase.id 
LEFT JOIN t591_new.market_community_agent_order mco on mcrd.oid=mco.id 
LEFT JOIN t591_new.market_voucher_use mvu on mcrd.user_id=mvu.user_id and mcrd.oid=mvu.oid and mvu.oid!=0
LEFT join t591_new.market_voucher mv on mvu.voucher_id=mv.id
LEFT join t591_new.market_voucher_config mvc on mv.config_id=mvc.id 
WHERE mcrd.created_at>='2023-08-21' and mcbr.parent_id!=0
and (mcrd.created_at>=DATE_SUB(CURDATE(),INTERVAL 2 DAY) or mcrd.updated_at>=DATE_SUB(CURDATE(),INTERVAL 2 DAY));
SELECT * FROM `t591_new`.`market_community_agent_bid_record_detail` WHERE created_at>='2023-08-21' LIMIT 10
#表访问类型使用索引候选索引预扫行数过滤后
1market_community_agent_bid_record_detailrangeidx_created_atidx_created_at3,568,860100.0%

8. select count(*) as aggregate from sale where status = ? and closed = ? and community_id = ? and kind IN (?...) and posttime >= ? /* ms:tw591ms-cdc */; —— 3,664 次 × 1.70s = 1.73h

select count(*) as aggregate from `sale` where `status` = '2' and `closed` = '0' and `community_id` = '8139' and `kind` in ('6', '8', '9', '10', '24') and `posttime` >= '1792252800' /* ms:tw591ms-cdc */;
select count(*) as aggregate from `t591`.`sale` where `status` = '2' and `closed` = '0' and `community_id` = '8139' and `kind` in ('6', '8', '9', '10', '24') and `posttime` >= '1792252800' /* ms:tw591ms-cdc */;
#表访问类型使用索引候选索引预扫行数过滤后
1salerefidx_community_idposttime,idx_community_id5,0610.0%
ALTER TABLE `t591`.`sale` ADD INDEX `idx_status_closed_community__kind_posttime` (`status`, `closed`, `community_id`, `kind`, `posttime`);

逐条优化建议汇总

P 行 = 深析模式(指纹聚合,按全天累计耗时降序 P1 最大,是优化主战场);T 行 = 单条耗时 Top3 的一次性慢 SQL(多为 bi/导出查询,治理手段通常是限流/降频/移到从库,而非建索引)。
编号对象建议
P1t591_new.union_stats_event_item_count(49×582.0s)补索引(按 WHERE 等值列在前、范围列收尾建复合索引); 用 EXPLAIN 验证 key 命中
P2t591_new.im_msg_analysis(50×471.7s)补索引(按 WHERE 等值列在前、范围列收尾建复合索引); 用 EXPLAIN 验证 key 命中
P3t591.house_rel(4×4984.5s)补索引(按 WHERE 等值列在前、范围列收尾建复合索引); 用 EXPLAIN 验证 key 命中; DDL: ALTER TABLE t591.house_rel ADD INDEX idx_type_status (type, status);; 把 ORDER BY 列纳入复合索引, 或减小排序前扫描范围
P4t591_new.im_launch(49×190.8s)结合 SQL 文本与执行计划人工复核; 考虑降频/缓存
P5t591_new.union_stats_event_item_count(44×198.5s)补索引(按 WHERE 等值列在前、范围列收尾建复合索引); 用 EXPLAIN 验证 key 命中
P6?.im_conversations(2,405×3.0s)改写为 JOIN/EXISTS 并验证子查询能下推; 该实例无 MCP 映射, 建议在库上手动 EXPLAIN 复核
P7t591_new.market_community_agent_bid_record_detail(1×6904.6s)补索引(按 WHERE 等值列在前、范围列收尾建复合索引); 用 EXPLAIN 验证 key 命中
P8t591.sale(3,664×1.7s)补索引(按 WHERE 等值列在前、范围列收尾建复合索引); 用 EXPLAIN 验证 key 命中; DDL: ALTER TABLE t591.sale ADD INDEX idx_status_closed_community__kind_posttime (status, closed, community_id, kind, posttime);
T1Top1(同 P7 对象) 单条最慢 1.92h,user=bi t591_new.market_community_agent_bid_record_detail补索引(按 WHERE 等值列在前、范围列收尾建复合索引); 用 EXPLAIN 验证 key 命中; bi/导出类: 限流降频、移从库/离线跑, 避免高峰占用主库
T2Top2(同 P3 对象) 单条最慢 1.74h,user=tw591 t591.house_rel补索引(按 WHERE 等值列在前、范围列收尾建复合索引); 用 EXPLAIN 验证 key 命中; DDL: ALTER TABLE t591.house_rel ADD INDEX idx_type_status (type, status);; 把 ORDER BY 列纳入复合索引, 或减小排序前扫描范围; bi/导出类: 限流降频、移从库/离线跑, 避免高峰占用主库
T3Top3(同 P3 对象) 单条最慢 1.43h,user=tw591 t591.house_rel补索引(按 WHERE 等值列在前、范围列收尾建复合索引); 用 EXPLAIN 验证 key 命中; DDL: ALTER TABLE t591.house_rel ADD INDEX idx_type_status (type, status);; 把 ORDER BY 列纳入复合索引, 或减小排序前扫描范围; bi/导出类: 限流降频、移从库/离线跑, 避免高峰占用主库

*采集脚本 .agents/scripts/mysql_slow_prod_report.py,中间数据 outputs/slow_report_prod591_20261102.json;全程只读。*