FreeBSD 6 手動編譯 MySQL5 (最佳化)(ZT)

原文出自: http://www.pczone.com.tw/vbb3/archive/t-121574.html

今天看到的文章 , 改天打算再來 Compile 一次

原文來自:
http://www.hshh.org/index.php?id=26

------------------------------------------------------------------

根據 FreeBSD maillist、google 獲知 libthr 這樣1:1 的線程庫比較適合 MySQL 運行。

編譯參數:
預設啟用archive類型儲存格式,啟用支持大表,啟用OpenSSL支持,預設使用thr線程庫

./configure --prefix=/usr/local/mysql --without-debug --without-bench --enable-thread-safe-client --enable-assembler --with-extra-charsets=complex --with-named-thread-libs='-lthr' --with-archive-storage-engine --with-big-tables --with-openssl

# gmake all install-strip

性能調整:

configure 時增加以下env可以為P4系列cpu優化:
CFLAGS='-O2 -pipe -mtune=pentium4 -mmmx -msse -msse2 -mfpmath=sse' CXXFLAGS='-O2 -pipe -mtune=pentium4 -mmmx -msse -msse2 -mfpmath=sse'
P3系列CFLAGS='-O2 -pipe -mtune=pentium3 -mmmx -msse -mfpmath=sse' CXXFLAGS='-O2 -pipe -mtune=pentium4 -mmmx -msse -mfpmath=sse'

CC,C++的優化指令會減慢編譯速度20%左右,性能提高約4%左右

PS:當編譯OpenSSL支持的時候,MySQL不能編譯為靜態鏈接程序。
如果不用OpenSSL,可以在configure添加
--with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static
編譯為靜態鏈接將提高約2%左右的性能

===================================

目前 PCZONE 用的系統是 FreeBSD 6 + MySQL 5
MySQL 是我自己手動 compile 的
之前找了不少資料 , 網路上高手測試文章顯示 libthr 效能比較好 , 故捨棄 linuxthreads 而改採 libthr

要採用 libthr 可在編譯完 mysql 後 , 編輯 /etc/libmap.conf , 並加入下列資料

[mysqld]
libpthread.so.2 libthr.so.2
libpthread.so libthr.so

重新開機後 , 執行指令:ldd /usr/local/libexec/mysqld
可看到下列資訊

/usr/local/libexec/mysqld:
libz.so.3 => /lib/libz.so.3 (0x65fac000)
libwrap.so.4 => /usr/lib/libwrap.so.4 (0x65fbc000)
libcrypt.so.3 => /lib/libcrypt.so.3 (0x65fc3000)
libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x65fdc000)
libm.so.4 => /lib/libm.so.4 (0x660aa000)
libpthread.so.2 => /usr/lib/libthr.so.2 (0x660c0000)
libc.so.6 => /lib/libc.so.6 (0x660d3000)

出現 libpthread.so.2 => /usr/lib/libthr.so.2 代表 MySQL 已採 libthr 運作

技术相关: