NUMA架构下为什么你的多线程程序可能比单线程还慢

在一台双路服务器上,某个开发者写了一个简单的多线程程序来处理内存数据。原本以为增加线程数能线性提升性能,结果却发现:当线程数从1增加到16时,吞吐量不升反降,甚至比单线程还慢了40%。 ...

10 min · 4757 words

零拷贝:让数据"走捷径"的三十年技术演进

1995年,一名程序员在测试文件服务器时发现了一个令人困惑的现象:服务器CPU利用率高达80%,但实际的数据传输速度却远低于硬件理论带宽。追踪后发现,超过60%的CPU时间花在了同一个操作上——memcpy()。 ...

10 min · 4550 words

垃圾回收器的停顿困局:从毫秒到亚毫秒的十年技术突围

2017年,某高频交易公司的Java系统在关键交易时段出现了一次3.2秒的停顿。这不是网络故障,也不是数据库锁死——仅仅是垃圾回收器在清理一个16GB的堆。在金融交易的世界里,3.2秒意味着数百万美元的损失。 ...

14 min · 6788 words

你的索引为什么救不了慢查询?从B+树结构到优化器决策的完整解析

你花了两小时设计了一套"完美"的索引方案:where条件列建了索引,排序字段建了索引,连join的列都建了索引。上线第一天,监控系统就开始报警——那条"应该很快"的查询,执行时间飙到了30秒。 ...

10 min · 4798 words