维护web服务器差不多已经半年了,到现在发现自己还是很菜,无所谓,只要每一天都是在进步,就可以了。优化mysql服务器网上有很多教材,这里主要说道在文件系统的选择和io的调度上,关于io调度可以参考http://scoke.blog.51cto.com/769125/490546,有详细的说明,如果的单独的数据库服务器,可以考虑一下Deadline

对于文件系统的选择linux有很多优秀的文件系统,ext3,xfs,jfs,reiserfs等。ext4,btrfs等牛x的新文系系统        
环境如下

一、Mysqlslap测试:

mysqlslap是mysql自带的一个测试工具,这里使用的是默认的my-huge.cnf,测试脚本如下:
#vi mysqlslap_benchmarks.sh
/opt/mysql/bin/mysqld_safe &
sleep 10
echo "-------------------------innodb test -----------------------"
/opt/mysql/bin/mysqlslap -u root -h localhost -c 10,50,100,200,400 -i 2 --engine=innodb --auto-generate-sql-load-type=mixed --number-of-queries=50000 --number-char-cols=5 --number-int-cols=5 --auto-generate-sql

echo "-------------------------myisam test -----------------------"
/opt/mysql/bin/mysqlslap -u root -h localhost -c 10,50,100,200,400 -i 2 --engine=myisam --auto-generate-sql-load-type=mixed --number-of-queries=50000 --number-char-cols=5 --number-int-cols=5 --auto-generate-sql

killall mysqld

重点参数:

-c 10,50,100,200,400:表示同时的client数量,可以考察在不同并发下的情况

-i 2:运行几次测试,多次取平均值会更准确,当然更耗时。

--number-of-queries=50000:query次数

其他具体使用方法请Google,这里就不一一列举了。



测试项

10 client(单位s)

50 client

100 client

200 client

400 client

默认my-huge.cnf, XFS(nobarrier), deadline, innodb
 

134.1

95.4

97.0

129.5

151.3

默认my-huge.cnf, XFS(nobarrier), cfq, innodb
 

141.8

95.6

96.1

122.6

185.7

默认my-huge.cnf, XFS, deadline, innodb

141.5

95.7

97.8

128.4

193.8

默认my-huge.cnf, JFS, deadline, innodb

135.7

95.7

95.9

117.9

157.6

默认my-huge.cnf, JFS, cfq, innodb

128.9

95.3

96.1

136.3

192.2


 

 

 

 

 

 

默认my-huge.cnf, XFS(nobarrier), deadline, myisam

129.0

134.9

137.9

168.7

195.4

默认my-huge.cnf, XFS(nobarrier), cfq, myisam

126.5

135.7

137.8

164.2

167.2

默认my-huge.cnf, XFS, deadline, myisam

129.5

132.9

138.4

169.9

222.5

默认my-huge.cnf, JFS, deadline, myisam

124.0

92.9

95.3

103.1

145.4

默认my-huge.cnf, JFS, cfq, myisam

134.8

96.6

93.3

129.0

146.8



 

mysqlslap测试结论:
1XFSmount的时候需要加上nobarrier参数以获得更好的性能。
2innodb的表现,XFSJFS差别不大,各有千秋。
3myisam的表现,JFS明显比XFS好很多。

结论:

大多数的测试中,JFS优于XFS,所以数据库数据目录的文件系统使用JFS

在数据存放的盘使用deadlineIO调度算法。