Linux 版 (精华区)

发信人: cliff (一颗红心·两手准备), 信区: Linux
标  题: 提高Linux上小型数据库的速度 
发信站: 哈工大紫丁香 (2000年10月26日15:31:00 星期四), 转信


Okay, 什么是RAMDISK?我们如何用它来提高数据库server的响应速度? 

Ramdisk就是说用作于硬盘空间的内存。无论什么时候你使用Ramdisk,实际上你是
在使用内存而不是硬盘。在这一点上既有优点又有缺点。最基本的,最大的优点是
你是在使用内存,你所做的一切都会快一些,因为硬盘的速度较内存慢。最大的缺
点是如果你改变了数据库服务器的内容并且重新启动机器时,所做的一切改动都将
丢失。 

对于数据库Server PostgreSQL来说, 如果你将所有的数据库调入内存将会大大提
高它的速度。 


建立一个ramdisk /Test 
将默认ramdisk中的一个指向目录/Test。 


mkdir -p /Test 
mkfs -t ext2 /dev/ram0 
mount /dev/ram0 /Test 

如果这一步失败的话,也许是因为你所编译的内核不支持ramdisk。你应该将内和
配置选项中的CONFIG_BLK_DEV_RAM 一向置为可用的状态。 


以上的步骤只能给你提供一个4M大小的ramdisk。The above gives you a ramdisk
 with available space of just under 4Mb. 请参看 Ramdisk Article 一文,看
看如何将其改变成50M大小。 


为 PostgreSQL 建立一个ramdisk 
理论上你应该优良两个数据库server。一个是你可以进行修改的,另一个是在
ramdisk上的拷贝。实现这一点你应该用到"pg_dump" 或是 "pg_dumpall"命令。 


注意: 我们假定你已经在文件中进行过设置是你的ramdisk大于你的数据库的大小
。如果你想得到它的近似的大小可以用命令"cd /var/lib/pgsql; du ". 

无论怎样,使你的postgresql安装在 "/var/lib/pgsql" 并且将他们放到内存中,
这样做: 

### 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 




关于速度Comments on the speed 
我已经把postgresql分别在ramdisk上和不在ramdisk上进行过速度方面性能的测试
。有些时候,在ramdisk上的postgresql的速度将会快出50%。当然有些时候不是这
样的。 

我注意到,当系统对数据设置缓冲时,系统性能的提高并不很大只有大约10%到
20%。当有大量新的数据被同时输入数据库时,系统的性能有着显著的提高。 

在使用ramdisk中最大的好处就是你可以强制你的数据库留在内存中而避免使用硬
盘。如果你不使用ramdisk,你的数据库将可能被换出内存。当它被使用时再被从
硬盘上调入内存。 


注释 
对于linux操作系统,当一个文件被读取时,它将被保存在内存中直到内存空间被
其他程序要求使用。这样便是缓存。也许这是一个解决之道。如果不是这样,当我
的机器有访问的时候,会听见硬盘的声音。利用ramdisk时数据库放在内存中而不
会被到处内存。如果经常用数据库server的话,要是我就把它放在内存中。 
在数据库上使用ramdisk的好处就是可以得到高速度,简单而明快。对于那些只读
的数据库来说,这可是一个非常棒的主意。 
它的不足就是你必须知道如何管理,并且在你进行修改时,最好确信你已经做了修
改的备份。 
By Mark Nielsen 
翻译 Wang ZhuoHao 


--
              【★ 蒸不熟   煮不烂 ★】

              【★ 剪不断   理还乱 ★】

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 192.168.0.200]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.417毫秒