用空间换时间,内存数据库不止于快

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用空间换时间,内存数据库不止于快相关的知识,希望对你有一定的参考价值。

近年来随着内存价格的下跌内存数据库正变得日益流行起来,内存数据库的性能也有了飞跃式的发展。然而很多开发人员在考虑内存数据库时只想到了速度,这无疑忽视了内存技术真正的潜力。

内存提供的不仅仅是更快的速度,它也是一种以存储空间换时间的方式。很多开发人员对于内存数据库的使用有一些疑虑,下面我们就来一一说明:

1.内存数据库运行比较快。除了快还有什么别的吗?我们知道内存的读写比硬盘快得多,所以将表全都加载到内存中就可以达到很高的读写速度。虚拟内存的大小受到交换分区的限制而通常交换分区的大小是内存的一到两倍,因此内存中能够加载的数据大小也会受到限制。当加载的数据量接近交换分区容量时处理数据所需的时间就会出现骤增。即使现在内存已经很便宜了,相对于要处理的数据量来说仍然是不够的。

**2.32位到64位只要重新编译代码就行了吗?**64位架构使系统可以突破4GB内存的限制。如果没有64位架构那么内存数据库适用的情况会少很多。自64位CPU发布以来很多开发人员都在讲32位架构下开发的软件重新编译为64位。2^64意味着几乎无限的寻址空间所以用空间换时间的算法也有无限可能。

3.虚拟内存有什么限制?虚拟内存一词最早是1970年由Peter Denning提出的,它将应用程序所使用的内存分成嗦个部分以实现计算机内存的高效利用,这其中也有可能将一部分物理内存的内容交换到硬盘。但由于受到交换分区容量的限制,我们仍然需要考虑内存对于应用程序的影响。

64位寻址空间中其实只用了48位,不过对于大数据应用来说已经足够了。当内存不再是稀缺资源时我们就需要新的方法来解决大数据项目中所遇到的问题。

以上是关于用空间换时间,内存数据库不止于快的主要内容,如果未能解决你的问题,请参考以下文章

算法的时间空间转换

时间换空间的TCP

代码重构,空间换时间,dictionary 不要用object ,需明确指定类型

Java性能概述

Java性能概述

如何换出内存块?