我們使用GNU Autoconf,因此將MySQL移植到所有使用Posix線程和C++編譯器的現代系統是可能的。(要求服務器支持線程。如果只是編譯客戶端代碼,則只需要C++編譯器)。我們主要在Linux(SuSE和Red Hat)、FreeBSD和Sun Solaris(版本8和9)上使用並開發本軟件。
已經報告MySQL可以在下列操作系統/線程包的組合上成功地進行編譯。注意,對於很多操作系統,原生的線程僅支持最新的版本。
· 有原生線程的AIX 4.x和5.x。
· Amiga。
· 包括MIT-pthreads包的BSDI 2.x。
· 有原生線程的BSDI3.0,3.1和4.x。
· 有原生線程的Digital Unix 4.x。
· 包括MIT-pthreads包的FreeBSD 2.x。
· 有原生線程的FreeBSD 3.x和4.x。
· 有LinuxThreads的FreeBSD 4.x。
· 有DCE線程或MIT-pthreads包的HP-UX 10.20。
· 有原生線程的HP-UX 11.x。
· 有LinuxThreads 0.7.1+或glibc 2.0.7+,適合各種CPU的Linux 2.0+。
· Mac OS X。
· NetBSD 1.3/1.4 Intel和NetBSD 1.3 Alpha(需要GNU make)。
· Novell NetWare 6.0。
· 有原生線程的OpenBSD > 2.5。包括MIT-pthreads包的OpenBSD <2.5。
· OS/2 Warp 3, FixPack 29和OS/2 Warp 4, FixPack 4.
· 有最新FSU Pthreads移植包的SCO OpenServer 5.0.X。
· SCO UnixWare 7.1.x。
· SCO Openserver 6.0.x。
· 有原生線程的SGI Irix 6.x。
· SPARC和x86上有原生線程的Solaris 2.5和以上版本。
· 包括MIT-pthreads包的SunOS 4.x。
· Tru64 Unix。
· Windows 9x、Me、NT、2000、XP和2003。
並非所有支持的平台同等適合運行MySQL。根據以下因素確定某個平台適合高負荷關鍵任務MySQL服務器的程度:
· 線程庫的穩定性。可能某個平台的反應不錯,但MySQL的穩定性取決於它所調用的線程庫,不管其它部分是否完善。
· 內核和線程庫利用均衡多處理器(SMP)系統的能力。換句話說,當進程創建一個線程時,應允許線程運行原進程所運行CPU之外的其它處理器。
· 內核和線程庫運行在短范圍頻繁獲取和釋放互斥體而不需要過多地交換內容的多個線程的能力。如果執行pthread_mutex_lock()時產生的CPU時間太短,則會嚴重影響MySQL。如果不關注該問題,增加過多的CPU實際會降低MySQL的速度。
· 常規文件系統的穩定性和性能。
· 如果數據庫表很大,文件系統處理大文件的能力和處理效率。
· 我們在該平台上使用MySQL AB的經驗水平。如果我們熟悉一個平台,我們可以對具體平台進行優化並固定編譯時間。我們還可以提供建議如何更好地為MySQL配置系統。
· 我們在類似配置下所完成的內部測試的數量。
· 在同一平台類似配置下成功運行MySQL的用戶數。如果該數字很高,則說明遇到具體平台問題的幾率要小得多。
根據前面的標准,允許MySQL的最好的平台是x86,安裝SuSE Linux,使用2.4或2.6內核,和ReiserFS(或類似Linux分發版)和安裝了 Solaris(2.7-9)的SPARC。FreeBSD排第三位,但我們真正希望一旦線程庫得到改進,它也可以提高排名。從某一觀點我們還希望提高其它MySQL目前正在上面編譯、允許的平台的排名,但穩定性和性能上可以要求不同等級。這需要我們與MySQL所依賴的操作系統和庫組件開發人員共同努力。如果你對改進某個組件感興趣,可能影響其開發,需要更多的關於MySQL如何能運行得更好的說明,請向我們的MySQL internals發送郵件。
請注意前面的對比並不是說一個操作系統總體上比另一個操作系統要好。我們只是討論選擇一個OS來專門運行MySQL。記住了這一點,如果考慮更多的因素,對比結果可能會不同。在某些情況下,一個OS比另一個OS好的原因只是我們已經為具體平台做出了更多的努力來進行測試和優化。我們只是陳述我們的觀點幫助你選擇運行MySQL的平台。