应用功能:

数据库中存在大量数据时候,我们的程序启动则比较慢,因此启动从ramdisk中读取数据库可以提高速度

RamDisk简介

  本文首先介绍了 如何在rh6.0系统上创建一个RamDisk,然后介绍了如何通过将数据库内容存放到RamDisk中的方法来加速对数据库的访问 。 
  

  什么是RamDisk?一个RamDisk是分配作为一个分区的内存块,或者说将内存模拟为硬盘空间,从而可以想对待硬盘空间一样在其上保存文件

为什么会要使用RamDisk呢?主要是为了提高速度,若事先知道特定的文件将被高频率访问,通过将文件存放在内存里就可以提高性能。例如web服务器就可以采用这种方式来加快访问速度。下面是一些可能会对加深对RamDisk的理解的资源链接:

  
  http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html 
  http://metalab.unc.edu/LDP/HOWTO/mini/LILO.html 
  /usr/src/linux/Documentation/RamDisk.txt 
  如何使用RamDisk 
  使用RamDisk是非常简单的。首先,RH6.0的缺省安装本身就有对RamDisk的支持,你所要作的就是格式化一个RamDisk,然后加载(mount)其到目录结构下即可。通过命令"ls -al /dev/ram*"可以查看系统可以利用的RamDisk的数目。这些RamDisk并不起作用,除非设置以后。下面是一个非常简单的使用RamDisk的例子: 
  
  # create a mount point: 
  mkdir /tmp/RamDisk0 
  # create a filesystem: 
  mke2fs /dev/ram0 
  # mount the RamDisk: 
  mount /dev/ram0 /tmp/RamDisk0 
  
  这三个命令分别为RamDisk创建一个目录,格式化它(创建文件系统),最后加载该文件系统到目录"/tmp/RamDisk0上下面就可以将该目录当作一个分区使用。若格式化失败,则说明你的系统内核没有对RamDisk的支持,则需要重新编译内核,RamDisk支持的内核开关是:CONFIG_BLK_DEV_RAM 。 
  
  缺省的RamDisk的大小为 4Mb=4096块。在创建randisk文件系统时可以得到RamDisk大小的信息: 
  
  mke2fs 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09 
  Linux ext2 filesystem format 
  Filesystem label= 
  1024 inodes, 4096 blocks 
  204 blocks (4.98%) reserved for the super user 
  First data block=1 
  Block size=1024 (log=0) 
  Fragment size=1024 (log=0) 
  1 block group 
  8192 blocks per group, 8192 fragments per group 
  1024 inodes per group 
  
  运行命令"df -k /dev/ram0"可以查看可以真正使用的RamDisk的空间大小(因为创建文件系统时会占用一些空间): 
  
  >df -k /dev/ram0 
  Filesystem 1k-blocks Used Available Use% Mounted on 
  /dev/ram0 3963 13 3746 0% /tmp/RamDisk0 
  需要注意的是当你的系统重新启动以后,RamDisk中的数据会丢失,所以如果RamDisk中的数据被修改了,必须将其备份到别的目录下。 
  
  改变RamDisk的大小 
  为了使用RamDisk,可以通过将对RamDisk的支持编译进入内核中或者编译为模块的方式,在需要时将其加载。编译为模块的方式可以在加载模块时动态决定RamDisk的大小。 
  
  当RamDisk被编译进入内核,改变RamDisk的大小的方法为在lilo.conf中田加内容: RamDisk_size=10000 (or RamDisk=10000 for old kernels),然后运行lilo命令,重新启动机器,这样下次加载RamDisk以后,大小就变为10M: 
  
  boot=/dev/hda 
  map=/boot/map 
  install=/boot/boot.b 
  prompt 
  timeout=50 
  image=/boot/vmlinuz 
  label=linux 
  root=/dev/hda2 
  read-only 
  RamDisk_size=10000 
  
  当编译RamDisk支持为模块形式,可以在加载时决定RamDisk的大小,可以通过杂/etc/conf.module中添: 
  
  options rd rd_size=10000 
  
  或者在动态加载是通过命令行的形式传入: 
  
  insmod rd rd_size=10000 
  
  下面是关于如何使用模块的一个例子: 
  
  卸载前面加载的文件系统:umount /tmp/RamDisk0 . 
  卸载模块:rmmod rd 
  加载RamDisk模块,并设置大小为20M:insmod rd rd_size=20000 
  创建一个文件系统:mke2fs /dev/ram0 
  加载RamDisk的文件系统:mount /dev/ram0 /tmp/RamDisk0 
  在web服务器中使用RamDisk的例子: 
  
  这里举一个在web服务器中使用三个RamDisk的例子,这里要确保web服务器的所有内容不超过9M(包括CGI的内容)。 
  
  首先,对web服务器的root目录下的内容备份到其他地方,然后重新创建www的根目录: 
  
  mv /home/httpd/ /home/httpd_real 
  mkdir /home/httpd 
  mkdir /home/httpd/cgi-bin 
  mkdir /home/httpd/html 
  mkdir /home/httpd/icons 
  
  然后,在/etc/rc.d/init.d/httpd.init中添加如下启动执行信息: 
  
  ### Make the RamDisk partitions 
  /sbin/mkfs -t ext2 /dev/ram0 
  /sbin/mkfs -t ext2 /dev/ram1 
  /sbin/mkfs -t ext2 /dev/ram2 
  
  ### Mount the RamDisks to their appropriate places 
  
  mount /dev/ram0 /home/httpd/cgi-bin 
  mount /dev/ram1 /home/httpd/icons 
  mount /dev/ram2 /home/httpd/html 
  
  ### Copying real directory to RamDisks (the 
  ### data on the RamDisks is lost after a reboot) 
  tar -C /home/httpd_real -c . | tar -C /home/httpd -x 
  
  ### After this you can start the web-server. 
  
  注: 
  切记若RamDisk中的数据被修改,并且做的修改都是有意义的,则需要对RamDisk中的数据做备份。 
  你可以启动一个cron任务来完成这个工作,如:每10分钟检查一次看是否有数据被修改,若有则对数据进行备份。

  RamDisk的一个应用是使用/tmp做为RamDisk,若系统中有很多程序使用RamDisk,则可以很明显地加快系统速度,而且每次系统重新启动这些暂时数据都会丢失。

  通过RamDisk加速小型数据库的访问速度 
  
  如果将将PostgreSQL数据库服务器文件加载到内存中就可以加快数据库访问速度。 
  
  在/test目录下加载RamDisk 
  一、在/test目录下设置RamDisk。 
  mkdir -p /Test 
  mkfs -t ext2 /dev/ram0 
  mount /dev/ram0 /Test 
  这时候你将拥有一个4M大小的RamDisk,根据需要你可以更改你的RamDisk的大小。 
  二、为PostgreSQL设置RamDisk 
  
  理想状态下,你将拥有两个数据库服务器。一个是可以进行修改的,另外一个是存放在RamDisk中的拷贝。为了达到这个目的,需要使用命令: "pg_dump" 或 "pg_dumpall". 
  
  注:这里假设已经在lilo.conf中设置RamDisk的大小,使其大于数据库服务器的大小。如果你希望了解合适的大小,可以使用命令"cd /var/lib/pgsql; du ". 
  
  然后: 
  
  ### Stop the current postgresql server 
  /etc/rc.d/init.d/postgres stop 
  ### rename the current directory 
  mv /var/lib/pgsql /var/lib/pgsql_main 
  #### Create a directory to have our RamDisk on 
  mkdir -p /var/lib/pgsql_memory 
  #### change the ownership of the new directory to postgres or whatever 
  #### the actual owner is. 
  chown postgres /var/lib/pgsql_memory 
  #### Make an alias or link to the original name, /var/lib/pgsql 
  ln -s /var/lib/pgsql_memory /var/lib/pgsql 
  
  #### Format the RamDisk 
  mkfs -t ext2 /dev/ram0 
  #### Mount the RamDisk to the postgresql directory 
  mount /dev/ram0 /var/lib/pgsql_memory 
  
  #### Copy everything from the main directory into the RamDisk 
  tar -C /var/lib/pgsql_main -cp . | tar -C /var/lib/pgsql_memory -xp 
  ### Start the current postgresql server 
  /etc/rc.d/init.d/postgres start 
  

  经过测试,发现在RamDisk中的PostgreSQL的性能提升最高达到50%左右。需要的时候,可以将其他的应用放置在RamDisk中以提升效率,如ldap服务器等。

themis> df -m
Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/ram1                  769       408       322  56% /
/dev/ram2                   95         6        84   6% /var
tmpfs                     1964         0      1964   0% /dev/shm
/dev/oopsdev                 7         1         5  17% /oops
/dev/sharedev              462        10       428   2% /share
/dev/sagjava               250       120       117  51% /usr/java

  

如何通过RamDisk的方法加速小型数据库的访问速度相关推荐

  1. 小麦盒子cdn_CDN加速,提高网站访问速度的最佳方法

    上个月,一台湾的朋友向我反映了他的网站现在十分糟糕的情况. 事情是这样的,这位台湾朋友有一网站,面向用户主要在中国大陆,2010年10月,他把网站寄存地从台湾移到了广东,他租用的是独立服务器,使用线路 ...

  2. CentOS / RHEL Cachefiles 加速网络文件系统NFS访问速度

    为什么80%的码农都做不了架构师?>>>    1. CacheFiles介绍 NFS是一种经常使用到的网络共享文件系统,在分布式环境下,多台服务器的文件共享是一个问题.然而,对于这 ...

  3. 如何使用DNS加速你的浏览器访问速度?

    不知道大家有没有遇到过这种情况, 我们访问用浏览器网页无法正常显示, 但是我们使用的QQ却能正常的打开? 这是因为 : 我们在登录QQ的时候是直接访问的腾讯的服务器, 在下载好的QQ客户端已经帮你配置 ...

  4. 百度云加速提升网站访问速度

    欢迎大家进群,一起探讨学习 博主技术文档地址 博主开源微服架构前后端分离技术博客项目源码地址,欢迎各位star 今天偶然的情况,看到了百度云加速能进行网站访问速度提升,因为现在我是用学生价买的阿里云服 ...

  5. 如何使用百度云加速提升网站访问速度

    今天偶然的情况,看到了百度云加速能进行网站访问速度提升,因为现在我是用学生价买的阿里云服务器,1核2G 1M带宽的,所以第一次加载资源的时候,是非常慢的,所以就打算尝试一下. 1)下面进入正题,打开百 ...

  6. 如何使用XML作为小型数据库

    如何使用XML作为小型数据库? 首先,我们以下面的user.xml作为我们所要使用的xml文件,具体内容如下: <?xml version="1.0" encoding=&q ...

  7. 小型数据库_如果您从事“小型科学”工作,那么您是否正在利用数据存储库?

    小型数据库 If you're a scientist, especially one performing a lot of your research alone, you probably ha ...

  8. 如何使用mysql数据库做网站_php小型数据库(不用mysql做网站)

    php教程小型数据库教程(不用mysql教程做网站) include 'pdbm.php'; $timestart = explode(' ', microtime()); $timestart = ...

  9. 网站访问速度加速的方法

    一.网上搜集到的一些解决方案 1.减少CSS文件数量和体积 网站加载CSS文件的时间为:浏览器开始载入html代码,发现<head>标签内有一个<link>标签引用外部CSS文 ...

最新文章

  1. LNMP架构详解(2)——Mysql、PHP、Nginx源码编译过程
  2. dlp防泄密系统卸载_浙江好用的企业图纸防泄密软件推荐,局域网内部图纸透明加密方案...
  3. binlog二进制文件解析
  4. 毕业论文 | 基于脉冲耦合神经网络(PCNN)的图像特征提取:论文及源代码及参考文献
  5. 数据结构 | 如何一文搞定链表问题?(附20本书获奖名单)
  6. 封装、继承、多态的理解
  7. 1093芯片做正弦波逆变器_长途自驾游“缺电”如何选购正确车载逆变器,避开商家套路...
  8. 【需求工程】需求管理
  9. 【Spring】Spring 解决循环依赖的 3 种方式
  10. .net mysql 参数,在MySQL .NET Provider中使用命名参数
  11. pythonjava有什么区别_Java与Python的区别对比
  12. PHP合并2个数字键数组的值
  13. 少量数据通过Excel表格数据导入server SqlServer查询
  14. LinkSLA坚持用户第一,打造可持续的运维服务方案
  15. 原创【歌词类】雪中吟
  16. JPEG图像格式及文件结构
  17. Ubuntu系统显示实时网速信息
  18. 腾讯位置服务模仿微信发送位置功能
  19. 甲骨文公司将云层添加至其大型机VTL当中
  20. 016-JLE JNG(小于等于)

热门文章

  1. NB-IoT智能配电柜测温监测系统解决方案
  2. Java断言(assert)的介绍和使用
  3. php 鼠标经过 图片,jq实现酷炫的鼠标经过图片翻滚效果_jquery
  4. 聊一下Node.js中NAPI的napi_value
  5. ERROR: Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately
  6. 安装windows server 2012在H3C服务器上
  7. oracle sql数据计算精度问题
  8. MATLAB积分方法
  9. 100条信号完整性效应的经验法则
  10. python 一些模块的应用