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