网络、磁盘、内存哪种方式更适合保存数据?
2010-11-11 22:17
302 查看
首先,我需要解释下网络在这里的含义,它并不是指存储到一个可以访问的计算机,而是指本机子的一个网络程序,当前程序通过网络连接将信息发送给对方,由对方进行存储管理。
一般来说,在我们的印象中,保存在内存中速度更快,接着是硬盘,最后是网络。相信很多朋友与我一样,一直对这个想法停留在想象层面,觉得这不需要进行测试验证,就像真理一样,但很对不起,它不是真理,测试完了以后,我都还有一点不敢相信。
测试内容:将20000条记录,每条记录大约60个字符,通过上述三种方式进行保存,最终发现直接写入磁盘速度最快,接着是写入内存,最后是网络。
这样引发了一个思考,对于数据,我们该如何存储?
磁盘更加适合保存不再需要载入,或很少需要再次载入的数据信息;
内存更加适合保存需要多次访问,且占用内存不大的,或者增量是可以被预见的;
网络方式不知道更加适合什么情况...
所以在进行服务器存储层的设计时,一般都将数据及时写入磁盘,并且存储内容的格式设计最好能够直接写入文件最后,因为在一个大文件最后插入记录的时间与建立一个新的文件插入记录时间基本相同。对于会被经常访问的数据,都进行了缓存,缓存策略可能根据数据的特性进行一定的调整。
一般来说,在我们的印象中,保存在内存中速度更快,接着是硬盘,最后是网络。相信很多朋友与我一样,一直对这个想法停留在想象层面,觉得这不需要进行测试验证,就像真理一样,但很对不起,它不是真理,测试完了以后,我都还有一点不敢相信。
测试内容:将20000条记录,每条记录大约60个字符,通过上述三种方式进行保存,最终发现直接写入磁盘速度最快,接着是写入内存,最后是网络。
这样引发了一个思考,对于数据,我们该如何存储?
磁盘更加适合保存不再需要载入,或很少需要再次载入的数据信息;
内存更加适合保存需要多次访问,且占用内存不大的,或者增量是可以被预见的;
网络方式不知道更加适合什么情况...
所以在进行服务器存储层的设计时,一般都将数据及时写入磁盘,并且存储内容的格式设计最好能够直接写入文件最后,因为在一个大文件最后插入记录的时间与建立一个新的文件插入记录时间基本相同。对于会被经常访问的数据,都进行了缓存,缓存策略可能根据数据的特性进行一定的调整。
相关文章推荐
- java 读取文件——按照行取出(使用BufferedReader和一次将数据保存到内存两种实现方式)
- App UI 体验设计:内存、磁盘与网络如何优雅的同步数据?
- http获取网络资源文件等并保存到本地sd或者磁盘
- Cocos2d-x 深入解析系列 : 以XML文件方式保存用户数据
- android 网络加载图片,对图片资源进行优化,并且实现内存双缓存 + 磁盘缓存
- 堆栈详解(数据与内存中的存储方式)
- java中的各种数据类型在内存中存储的方式
- 数据在内存中如何存储?静态存储区 栈区 堆区 小端和大端存储方式
- 从网络得到图片数据保存到手机中,
- 『Numpy』内存分析_numpy.dtype内存数据解析方式指导
- Android数据保存方式
- tp以post方式提交表单并保存数据
- CentOS查看CPU、内存、网络流量和磁盘 I/O【详细】
- java中的各种数据类型在内存中存储的方式
- Android网络编程之Http请求服务器数据(GET方式)
- C++编程->Winpcap网络数据保存为pcap文件
- android保存数据到手机内存以及SD卡
- UI网络笔记(四):UI网络之解析XML数据的三种方式
- 数据在内存中对齐方式 #pragma pack