`
javasee
  • 浏览: 926524 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

坏的数据库设计会极度浪费电能

阅读更多

当前,全世界都在进行电力节能,海纳技术咨询通过多年的对国内互联网企业的跟踪调研,发现其实大部分的企业软件系统都在白白的浪费的电能,这种浪费是非常惊人的。

一个好的数据库表设计与坏的数据库表设计,对于同一个项目来说,可能耗费的电能相差几千倍,这绝对不是危言耸听。我们曾经为一个互联网进行过技术咨询,这家公司经常抱怨他们的系统最近很慢,要求我们进行优化。 设计开发一个叫做“好友列表”的模块时总是随着用户的增多而性能低下,请我们帮忙解决,经过研究发现,他们的这个好友表已经存储了2亿条记录。他们对用户id建立了索引,然后每次添加好友都是顺着这个表依次添加。

分析: 系统根据用户id在索引中查询到该id,然后指到对应的磁盘块读取对应的记录。可惜的是记录数的增大和数据存储的无规律特点,系统磁盘指针往往为了读到一个块,进行跳跃式操作,全程下来至少100次io操作。在这个过程中,浪费着无用的电能,也拖累的性能。

解决:经过需求分析,这家公司认为好友的个数不会大于100。我们的新设计开始了,首先,把这个用户id的所有最多100个好友存在一个连续地方,开辟了512*m字节大小作为存储100个好友信息的块大小。这样,在获取好友列表时,只需1次io操作即可全部获得。经过公司的测试部门压力测试验证,性能提高了大约40%,关键的是电能耗费大大降低。

提高后台系统的负载和并发量,优化io存取算法,数据结构等等都是解决之道。当前普遍的情况是,公司能够买大量的服务器作为压力分担,不会或很少考虑对系统进行算法优化。但是别忘了,为网民提供服务和自身盈利之外,为了节约电能,造福全球人类,难道不是一个进行算法优化的合法理由吗?节约电能,预防全球变暖,互联网公司做贡献了时候到了!

http://www.distributed-cluster.com/

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics