百度空间 | 百度首页 
 
查看文章
 
TimesTen 为什么快
2007-08-25 00:52
TimesTen的名字在前面的帖子已经说过,就是 Ten Times,意思就是比传统的数据库要快一个数量级,为什么同是数据库,TimesTen要快这么多?如果把传统的数据库中的数据全部先load到内存中是否能达到相同的效果?下面我们对它们做一个比较分析。
  • 第一,传统的数据库和应用程序是两个不同的应用系统,它们之间的通讯是通过IPC连接来实现的。而TimesTen则是直接把数据库的内存映射到应用程序的地址空间中,简单来说,这时候TimesTen访问数据库中的数据,就象访问应用程序自己的数组、字符串变量一样,只不过TimesTen有一套完善的机制来实现数据的一致性和完整性。这种直接嵌入到应用程序的运行地址空间机制比IPC要高效很多。
  • 第二,传统的数据库都是 Disk-based 的,即预先假定数据主要是放在磁盘中的,所以它的所有优化、查询算法都是以磁盘存储为主的。举个简单的例子,比如说要查找一行记录,传统的数据库要先查找索引,通过索引查找该记录所在的页面,然后通过查找该页是已经在内存中,还是要从磁盘的数据文件中读取出来。而TimesTen是预先就把所有的数据Load到内存中,它知道所有的数据一定在内存里面,不会再通过其它的调用去决定数据在哪儿,这其中就少走了很多的弯路,基本没有磁盘的IO,而且都在内存中,效率也就高了很多。所以即使传统的数据库把数据都预先Load的内存中,也是达不到TimesTen的效果的。因为传统数据库的索引机制、优化算法、复杂的数据结构、数据的获取机制等等因素限制了它的性能。
  • 第三,由于TimesTen启动的时候预先将所有的数据 Load 到内存中,所以它没有页进页出,而且也不需要类似与Oracle中的SGA缓冲区的管理。

          总之,TimesTen只用 1/10 的CPU指令完成了传统数据库同样的任务,从而使得性能和吞吐量提升了一个数量级。

        下图说明了其中的不同之处:

比较


类别:timesten相关 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu