根據 FreeBSD maillist、google 獲知 libthr 這樣1:1 的線程庫比較適合 MySQL 運行。
編譯參數:
預設啟用archive類型儲存格式,啟用支持大表,啟用OpenSSL支持,預設使用thr線程庫
預設啟用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'
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%左右的性能
如果不用OpenSSL,可以在configure添加
--with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static
編譯為靜態鏈接將提高約2%左右的性能
===================================
目前 PCZONE 用的系統是 FreeBSD 6 + MySQL 5
MySQL 是我自己手動 compile 的
之前找了不少資料 , 網路上高手測試文章顯示 libthr 效能比較好 , 故捨棄 linuxthreads 而改採 libthr
MySQL 是我自己手動 compile 的
之前找了不少資料 , 網路上高手測試文章顯示 libthr 效能比較好 , 故捨棄 linuxthreads 而改採 libthr
要採用 libthr 可在編譯完 mysql 後 , 編輯 /etc/libmap.conf , 並加入下列資料
[mysqld]
libpthread.so.2 libthr.so.2
libpthread.so libthr.so
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)
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 運作
本文转自叶金荣51CTO博客,原文链接:http://blog.51cto.com/imysql/308542,如需转载请自行联系原作者