本文从 InnoDB 两套读写模型切入,结合官方术语一致性非锁定读(快照读)、一致性锁定读(当前读),逐层解析事务 ACID、四大隔离级别、MVCC 底层原理、...
索引建了,EXPLAIN也显示走了索引,但查询就是慢——这种情况比“没走索引”更让人崩溃。
InnoDB 默认选用 B+ 树作为索引结构,是 MySQL 适配磁盘存储特性的经典底层设计。多数开发者仅记忆结论,却缺少对硬件约束、数据结构取舍、存储引擎落地...
优化器根据WHERE条件中的分区键,自动排除不包含目标数据的分区,只扫描必要的分区。裁剪生效时,查询只扫一个分区,性能提升几十倍;裁剪失效时,扫描所有分区,比不...
连接池这东西,平时不出问题的时候你根本感觉不到它的存在。一旦出问题——应用连不上数据库了,或者数据库CPU莫名其妙飙到100%——你才会发现,这个小东西的威力有...
去年我接手一个订单库,主表 2 亿行。接手第一周就撞上三件事。查最近一个月的订单,要从 2 亿行里翻,慢。想加个联合索引,DDL 排了两个小时还没跑完。做一次全...
数据量:100 亿条订单号(假设每条 64 位 = 8 字节,纯数据量≈80GB)
结论先说:商城一到大促就超卖,根因不在库存数字本身,而在"扣减"这件事没有一个原子动作——多个请求同时改一个字段,谁快谁先写,超卖就成了必然。本文复盘一次连锁零...
一台设备每 5 秒上报一次,一天就是 17280 条。100 台设备一天 172 万条,一个月 5000 万条。能收到数据只是第一天,第二天开始真正的难题是:这...
MySQL的主从复制是最常用的高可用方案,但默认的异步复制有一个硬伤:主库写完即返回成功,binlog还没传到从库时主库宕机,这部分数据就丢了。
结论先说:储值卡余额对不上,九成不是算错账,而是把"余额"当成一个可随意改的字段在写——并发扣减、重复提交、跨日结转都会把余额和流水拆成两本账。本文复盘一次连锁...
隔离级别是怎么实现的?为什么InnoDB能做到“读不阻塞写、写不阻塞读”?为什么RR级别下幻读没有被完全解决?
去年大促的零点,我盯着大屏看订单曲线往上冲,心里挺美。二十分钟后,客服群里有人问,同一个商品怎么卖了 137 件,库存明明只有 100。我第一反应是不可能。库存...
InnoDB以页为单位管理数据,默认16KB一页。数据行存储在页里,页与页之间通过B+树组织。