标签频道
MySQL
该标签下的文章、提问与讨论帖。
一、现象:一个"数数"接口把从库拖到 9 秒 先说结论:在 InnoDB 里,"SELECT COUNT(*) FROM t" 不是"数个数",而是全表扫描——它要顺着聚簇索引把整张表的行一条条走一遍才能得出一个数。 我们内部有个"资产总览
【背景】 我们是一套 MySQL 8.0.32 / InnoDB 的订单查询服务,核心表 t_order 约 5200 万行、单表 9.8GB(含二级索引)。高频查询按 (merchant_id, status, create_time)
结论先行 一次离线对账要导出 2.1 亿行订单明细,用 JDBC "ResultSet" 逐行 "while(rs.next())" 读,照样 OOM——因为 MySQL Connector/J 默认 "fetchSize=0",驱动会在
一、现象:一次「我刚下的单怎么不见了」的 P0 去年 12 月大促前压测,订单链路是 MySQL 8.0.36(主从架构,主 16C64G、从 16C64G,从库走只读流量),业务侧反馈:下单接口返回 200 后立刻调「我的订单」列表,每
«结论先行:特性开关(feature flag)不是「代码开关」,它是一次隐性的执行计划变更。当你把 flag 从 0 切到 1 的那一刻,SQL 走的索引、JOIN 的表、缓存的 key 全变了——而这一层变化,绝大多数团队的变更流程完全
背景 MySQL 8.0.32,一主一从架构,binlog_format=ROW,从库已开并行复制(slave_parallel_workers=8,slave_parallel_type=LOGICAL_CLOCK)。业务表 t_sett
结论先行 对千万级 InnoDB 表,"LIMIT offset, size" 这种「偏移分页」在 offset 越大越慢,且慢得非线性的——offset 到 200 万时单页查询 P99 能飙到 8 秒以上。换成 keyset(游标)分页
一个 1.2 亿行 UPDATE 让从库复制延迟 31 分钟:大事务的拆解、定位与治理 一、现象与背景 上个月我们的一条离线对账任务,把订单宽表 "t_order_stat"(约 1.2 亿行、InnoDB、MySQL 8.0.32)里 "
question
线上服务轮换数据库密码与第三方 API Key,如何做到零中断且可回滚?
背景:我们是一套 8 节点的水平扩展 Spring Boot 服务,连接池走 HikariCP,数据库是 MySQL 8.0,另外还依赖两家第三方 API(短信、支付),鉴权用的是长期 API Key。安全加固要求每 90 天强制轮换一次凭
一、现象与背景:加了索引,P99 反而涨了 30% 上个月给一套订单系统做慢查询治理。核心表 "t_order" 规模:1200 万行、单表 3.1GB、InnoDB、MySQL 8.0.32。业务方甩来一条高频查询: SELECT id,
discussion
千万级大表到底该不该上分区表?三种路线的取舍
背景:最近带团队做一张 2 亿行的订单流水表治理,业务方一上来就说"先分区吧,分区快"。我犹豫了很久——DBA 圈子里关于"分区表"的立场其实分裂得很厉害,今天想借这个帖把几种常见做法摊开聊聊。 常见分歧: 1) 分区党:RANGE 按 c
【背景】 我们有一条对账链路:Kafka 3.6(3 节点,topic 12 分区)→ 消费者组 6 实例 → MySQL 8.0(单主+1 从,半同步)。消费逻辑:读消息 → 写 MySQL 对账表(REQUIRES_NEW)→ 调用 s
背景:MySQL 8.0.36,InnoDB,一张订单表 order 约 1.2 亿行,主键 id,二级索引 idx_status (status)、idx_status_create (status, create_time)。列表页按
现象或背景 上个月给订单主表 "t_order"(2.4 亿行、单表 118GB,InnoDB,MySQL 8.0.32)补一个二级索引 "idx_status_create_time",业务侧只给了一个 20 分钟的变更窗口,且要求全程不
【背景】 我负责一条 Flink 实时数据管道:Kafka → Flink(窗口聚合)→ JDBC Sink 批量写入 MySQL 8.0(InnoDB,binlog_format=ROW,sync_binlog=1)。QPS 约 3000
背景:MySQL 8.0.36,InnoDB,一张约 5000 万行的日志表 access_log,主键 id,二级索引 idx_path (path),idx_path_status (path, status),idx_time (cr
结论先行 先给结论:订单列表接口 P99 从 340ms 压到 52ms,靠的不是加机器,而是把 "filesort" 从"磁盘临时表"拉回"内存排序"。两个关键旋钮是 "sort_buffer_size" 和 "priority_sort
背景:MySQL 8.0.36,主从架构(单主 + 1 从,半同步),主库一台 16C/64G/ESSD,从库同规格。业务在每天 02:00–03:30 跑一次订单归档批处理:把 orders 表里 create_time 早于 90 天的
question
MySQL 8.0 复合索引第二列是范围条件,第三列还能被用到吗
背景:MySQL 8.0.36,InnoDB,一张约 1200 万行的订单表 orders,现有复合索引 idx_a_b_c (a, b, c),a 是租户 id(bigint,等值),b 是订单时间(datetime,范围),c 是状态(
question
MySQL 8.0 自增主键跳号,如何定位根因
背景:MySQL 8.0.36,InnoDB 单表(约 8000 万行),主键为自增 id。业务方反馈:连续 2 天内 id 出现约 3 万次的跳号,期间没有观察到批量插入,也没有触发器或 AFTER INSERT 钩子。 现象: 1) S