有一次线上告警:数据库突然不响应任何写操作了。应用侧报“Lock wait timeout”,但查锁等待,没有明显的行锁冲突。
北京靠谱前程网络技术有限公司 | Go开发工程师 (已认证)
从秒杀高并发切入,按锁的作用范围梳理单机 Go 锁、MySQL 行锁/版本锁、Redis/ZK/etcd 分布式锁;说明进程内锁跨机无效、数据库锁易阻塞、分布式...
数据库教程FGMT73:MySQL数据库工程师入门培训实战教程(从MySQL5.7 到 MySQL8.0)
大促零点,QPS 从 2000 飙到 3 万,MySQL CPU 干到 100%,接口 RT 从 50ms 涨到 3s,超时告警刷屏——这个场景我这些年真实经历...
有回报表导出改了异步,接口秒回「任务已提交」。业务侧看着挺好,可连接池的告警开始响。我以为导出量大,先把它往上调了一截。加了还是满,业务量也没涨。
我第一反应是连接池打满了,赶紧连上去看Threads_connected——才300多。max_connections设的是1000。
有一次跨区域项目对账,差了一天。金额都对,笔数也对,就是几笔的日期对不上。我先怀疑数据错了,把那一整天的流水翻了个遍。交易记录都在,时间戳也在,没找出毛病。最后...
一个 "为什么 MySQL 用 B + 树做索引?" 就能从索引原理问到磁盘 IO;一个 "MVCC 怎么实现的?" 能问掉半条命。
业务方说订单表数据太多,让清理历史数据。我吭哧吭哧写了个DELETE FROM orders WHERE create_time < '2024-01-01',...
有段时间我写 SQL,总以为数据库是按我写的顺序从上往下跑的。写什么,它就按什么顺序执行。结果一个 LEFT JOIN 的过滤条件,被我写进了 WHERE。跑完...
1.将mydb9_stusys数据库下的student、sc 和course表,备份到本地主机保存为st_msg_bak.sql文件,然后将数据表恢复到自建的d...
读库不够用了就加从库、把查询拆出去——这是最直觉的扩容动作。但紧接着的问题是:写完立刻读,读到了旧数据。司机刚提现成功,刷新页面余额还是老的,工单电话马上打进来...
凌晨两点的告警里,最让人摸不着头脑的一种是 Deadlock found when trying to get lock——两个事务互相等待对方释放锁,数据库只...
分库分表之后,第一个暴露的问题往往不是查询,而是订单号:自增主键在多个库会撞号,纯时间戳在并发下会重复,UUID 又长到没法进索引。三马代驾的订单号、流水号、消...
高峰期接口报"Cannot get a connection, pool error Timeout waiting for idle object"——这个报...
三马代驾的订单表在两年里从 300 万行涨到 2.1 亿行,DBA 第一次提"该分表了"时被我们驳回了——那时候慢查询占比不到 0.2%。半年后大促一来,单表写...