每个程序员都需要知道的数字(续)

High Scalability - High Scalability - Numbers Everyone Should Know列举了另外一些数字:

写很昂贵

  • 写是transactional的
  • disk access意味着disk seek
  • 经验法则:disk seek需要10毫秒
  • 算一算:1s/10ms = 100 seeks/s,每秒最多100次disk seek
  • 和数据的大小的形状有关系,批量处理。

读很便宜

  • 都不需要transaction
  • 数据从磁盘中读取一次,很容易就被缓存
  • 所有后续的读取都是从内存来的
  • 经验法则:内存中读取1m的数据需要250微秒
  • 算一算:1s/250usec=4g/sec,美妙最多读4g的数据。对于1m的数据,每秒可以取4000次

一些数字

  • L1缓存寻址需要0.5纳秒
  • branch mipredict需要5纳秒
  • L2缓存需要7纳秒
  • mutex lock/unlock需要100纳秒
  • 内存寻址需要100纳秒
  • 压缩1k的数据需要10000纳秒
  • 通过1gbps的网络发送2k的数据需要20000纳秒
  • 内存中读取连续的1m数据需要250000纳秒
  • round trip within same datacenter需要500000纳秒
  • 硬盘须知需要10000000纳秒
  • 从网络上读1m的连续数据需要10000000纳秒
  • 从磁盘上都1m的连续数据需要30000000纳秒

 

小结

  • 写比读昂贵40倍
  • 全局共享的数据很昂贵。这是分布式系统的瓶颈。
  • 系统设计时就要考虑写操作的可扩展性。
  • 优化以减少写竞争。
  • 让写操作尽可能地并行。

posted on 2013-05-01 14:45  fresky  阅读(438)  评论(0编辑  收藏  举报

导航