日期:2014-05-18  浏览次数:20565 次

[原] 如何建立SQLSERVER的内存数据库.
现在的内存便宜,16G以上内存的服务器已不少见.大内存的确让你的服务器运行程度加快了不少.但有些分析报表,总产生N个中

间的表,数据在里面倒来倒去,从这个表合计到那个表.不但速度很慢,而且,这个过程还有可能影响了正常的业务.减慢了服务器的响

应时间.
  也经常有人出于业务的考虑,如某些系统要实时数据采集,有些系统可能每秒有上万条的 INSERT INTO 量.我看了一下相关的

回复,大体上都是增加硬盘,应用分布式管理,表分区等等..一句话.基本上是砸钱加硬件. :) .这的确是好办法.不过,现在是经济

危机,尤其是中小型企业,每一分钱都算得紧紧的,我相信你这个DBA也很难向老板开口.
  不扯了,如果真的要在内存中建一个数据库,不难,很简单.
  
1.下载一个 ramdisk 或类拟的软件,先在2G左右的内存虚拟成一个硬盘.
2.在你的实体硬盘上建立一个空的数据库(直接在虚拟盘中建库是不可能的). 设置这个库的事务方式为简单.
3.分离这个新建的库.
4.将这个库 COPY 到你的虚拟盘上,然后附加.

我在我的电脑上测试:L730T + 2G + 320G.
100万条,基本是每秒 INSERT INTO 20000 条左右,而且,这个数据很平稳.

  OK,你的内存数据库完成了.
  以后呢,凡是分析报表扯到的临时中间表,都可以放到这个库里,用完就KILL,或者你有很多实时数据要采集,也放到这个库里(要注意隔一定时间回写到实体表,还要注意断电. :)

------解决方案--------------------
看看先
------解决方案--------------------
楼主好人
学习~~~
------解决方案--------------------
謝謝樓主分享經驗.
------解决方案--------------------
看看.
------解决方案--------------------
学习
------解决方案--------------------
如果能解决可靠性的问题后,确实是个好办法,用ramdisk跑大型软件的话,根据我的经验确实很不错,就象楼主说的要解决安全的问题.
顺便说下,其实市面上有卖日本某公司ram disk硬盘,价格其实也不是太贵,sata接口的.用的是ddr2的内存,一般是32g或者64g的,速度和楼主说的没有什么区别,不过使用上要方便的多.
------解决方案--------------------
感觉不如直接把这2G内存分配给SQL SERVER.
只要内存够大.你从物理硬盘读出来的数据同样是缓存在内存中.而且你的数据库数据在断电的时候容易丢失.

不过你可以试试把tempdb放到这个虚拟硬盘中.tempdb断电都会新建.

------解决方案--------------------
mark 一下,
好帖!
------解决方案--------------------
Learning....
------解决方案--------------------
让我想到以前486玩dos游戏的时候 为了保护光驱用mount cd用硬盘来虚拟光驱,那时候光驱可贵了,那时候就想了 什么时候内存能够mount成硬盘就好了.现在还真能够了,其实现在各种新硬盘技术不少.还有闪盘做硬盘的.pc发展到现在其实我觉得就硬盘技术大大制约了pc的发展.cpu 内存 agp pci增强显卡 flashu盘 dvd ,就一个硬盘唯独没什么大变化无非是dma到sata,多碟到单碟大容量,热插拔小进步.什么时候这个瓶颈解决了 pc才真正能够进步