当你仔细想下,计算机确实只做了两件事:读符号,写符号。性能是个计算机有多少数据要移动,数据要到哪里去的功能问题。最好的可能情形是大量的顺序数据流被读取一次,很快地处理后,就不再被用到。GPU是个很好的例子。但是最有意思的负载不是这样的。
每个随机指针都会保证缓存一次不中,每个对同一块内存区域(比如写锁)的竞争都会引起大量的协调延迟。即使你的CPU缓存命中率达到99%(事实上不可能),等待内存的时间也会是主导性的。 或者这样说吧:如果磁盘是新的磁带,内存就是新的硬盘,CPU缓存是新的内存。位置仍然有关系。
所以,什么会解决这个问题?看起来这就是那个相同的古老的矛盾:我们优化随机访问,还是优化串行?我们接纳写,还是读的性能问题?还是我们干坐着等硬件速度跟上来?也许记忆电阻器(memristor)或者其他技术会使这些问题无关紧要。当然,我也需要些钱(pony, 小马?)。 好消息是分布式数据库的总体物理架构基本成型。数据客户端不再需要处理4或5个不同的子系统的内部细节。这还不完美,也不是主流。但是突破总归需要一段时间来传播。 但如果瓶颈还是在存储位置,这意味着其他部分都成熟了。创新可能在数据结构和算法领域发生。也很少会有清理架构的改动,来承诺一次解决全部问题。如果我们幸运,接下来的15年,SQL数据库会慢慢变得更快更高效,而API是相同的。 但是在此之前,工业界将不会平静。
|