10.2系统/编译时和启动参数的调节
我们以系统级的东西开始,因为这些决策的某一些很早就做好了。在其他情况下,快速浏览这部分可能就够了,因为它对大收获并不重要,但是有一个关于在这个层次上收获有多大的感觉总是好的。
使用的缺省OS确实重要!为了最大程度地使用多CPU,应该使用Solaris(因为线程工作得确实不错)或Linux(因为2.2本的核心又确实不错的SMP支持)。而且在32位的机器上,Linux缺省有2G的文件大小限制。当新的文件系统被释出时(XFS),希望这不久被修正。
因为我们没在很多平台上运行生产MySql,我们忠告你在可能选择它前,测试你打算运行的平台。
其他建议:
- 如果你有足够的RAM,你能删除所有交换设备。一些操作系统在某些情况下将使用一个SWAP设备,即使你有空闲的内存。
- 使用
--skip-locking 的MySql选项避免外部锁定。注意这将不影响MySql功能,只要它仅运行在一个服务器上。只要在你运行myisamchk 以前,记得要停掉服务器(或锁定相关部分)。在一些系统上这个开关是强制的,因为外部锁定不是在任何情况下都工作。当用MIT-pthreads编译时,--skip-locking 选项缺省为打开(on),因为flock() 没在所有的平台上被MIT-pthreads充分支持。唯一的情况是如果你对同一数据运行MySql服务器(不是客户),你不能使用--skip-locking 之时,否则对没有先清掉(flushing)或先锁定sql/Index.html'>mysqld 服务器的表上运行myisamchk 。你仍然能使用LOCKTABLES /UNLOCKTABLES ,即使你正在使用--skip-locking 。
10.2.1编译和链接怎样影响MySQL的速度
大多数下列测试在Linux上并用MySQL基准进行的,但是它们应该对其他操作系统和工作负载给出一些指示。
当你用-static 链接时,你得到最快的可执行文件。使用Unix套接字而非TCP/IP连接一个数据库也可给出好一些的性能。
在Linux上,当用pgcc 和-O6 编译时,你将得到最快的代码。为了用这些选项编译“sql_yacc.cc”,你需要大约200M内存,因为gcc/pgcc 需要很多内存使所有函数嵌入(inline)。在配置MySQL时,你也应该设定CXX=gcc 以避免包括libstdc++ 库(它不需要)。
只通过使用一个较好的编译器或较好的编译器选项,在应用中你能得到一个10-30%的加速。如果你自己编译SQL服务器,这特别重要!
在Intel上,你应该例如使用pgcc或CygnusCodeFusion编译器得到最大速度。我们已经测试了新的Fujitsu编译器,但是它是还没足够不出错来优化编译MySQL。
(编辑:aniston)
|