TimesTen的名字,就是Ten Times(10倍),意思就是
比传统的数据库要快一个数量级
TimesTen要快这么多?如果把传统的数据库中的数据全部先load到内存中是否能达到相同的效果?下面我们对它们做一个比较分析。
第一,传统的数据库和应用程序是两个不同的应用系统,它们之间的通讯是通过IPC连接来实现的。而TimesTen则是直接把数据库的内存映射到应用程序的地址空间中
,简单来说,这时候TimesTen访问数据库中的数据,就象访问应用程序自己的数组、字符串变量一样
,只不过TimesTen有一套完善的机制来实现数据的一致性和完整性。这种直接嵌入到应用程序的运行地址空间机制比IPC要高效很多。
第二,传统的数据库都是Disk-based的,即预先假定数据主要是放在磁盘中的,所以它的所有优化、查询算法都是以磁盘存储为主的。举个简单的例子,比如说要查找一行记录,传统的数据库要先查找索引
,通过索引查找该记录所在的页面
,然后通过查找该页是已经在内存中,还是要从磁盘的数据文件中读取出来。而TimesTen是预先就把所有的数据Load到内存中,它知道所有的数据一定在内存里面,不会再通过其它的调用去决定数据在哪儿,这其中就少走了很多的弯路,
基本没有磁盘的IO
,而且都在内存中,效率也就高了很多。所以即使传统的数据库把数据都预先Load的内存中,也是达不到TimesTen的效果的。因为传统数据库的
索引机制、优化算法、复杂的数据结构、数据的获取机制
等等因素限制了它的性能。
版权与免责声明:
1 本网注明“来源:×××”(非商业周刊网)的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,本网不承担此类稿件侵权行为的连带责任。
2 在本网的新闻页面或BBS上进行跟帖或发表言论者,文责自负。
3 相关信息并未经过本网站证实,不对您构成任何投资建议,据此操作,风险自担。
4 如涉及作品内容、版权等其它问题,请在30日内同本网联系。