你在这里

性能:提高 Simpletest 在开发中的速度

原文链接http://drupal.org/node/466972

  • 调整MySQL 配置
    尽管InnoDB被推荐在实际环境系统中使用,但对测试伺服器不是很理想,因为DDL操作(表创建/表删除)要比MyISAM慢的多。
  • 将MySQL数据库移到tmpfs中
    测试伺服器在短时间内发布大量的查询(特别是DDL查询)会增加数据库服务器负担。某些查询后,数据库服务器会明显地刷新数据到磁盘(MySQL试图避免这种可能的情况,但是它还是会在一个DLL操作后调用fsync()函数)。数据库文件移入到tmpfs文件系统则结果大为不同。
  • 调整PostgreSQL 配置
    默认情况,PostgreSQL服务器将通过发出fsync()系统调用或各种等效方法,尽量确保所做更新在物理上写到磁盘中。这会在测试过程中产生大量的I/O读写。
  • 将SQLite数据库保存到内存
    将SQLite数据库保留在内存后,大量的磁盘I/O读写就看避免,从而加快整个过程。请注意,这意味着每次重启机器后,数据库必须重建。

调整MySQL配置

将如下代码写入到my.cnf中

skip-innodb

将此设置写入到[mysqld]下非常重要,否则就不起作用。

将MySQL数据库提到tmpfs系统中

tmpfs是linux的pseudo文件系统,它将文件和目录存到内存中。重启后放入tmpfs中的文件会丢失,但对测试伺服器没有关系。

要将数据库移入tmpfs,将如下代码写入/etc/fstab中:

tmpfs /var/lib/mysql/drupal_checkout tmpfs rw,nosuid,nodev,noexec,uid=<uid mysql="" of="" the="" user="">,gid=<gid group="" mysql="" of="" the=""> 0 0</gid></uid>

<uid of the mysql user>和<gid of the mysql group>可以分别在/etc/passwd和/etc/group下找到

调整PostgreSQL配置

为了不让PostgreSQL每次修改都写入到磁盘,在postgresql.conf文件中设置fsync=off。请注意,当系统崩溃时会引起严重的数据丢失,所以在测试数据库服务器上使用要特别留意,千万不要在生产服务器上使用。

将SQLite数据库存入内存

 要将SQLite数据库整个放入内存,在linux上可以在/dev/shm中选择一个文件作为数据库路径下。

 

附件尺寸
Plain text icon mysql-tmpfs.txt5.92 KB
Plain text icon mysql-reference-cfg.txt909 字节