top
Loading...
2.3.16.Windows版MySQL同Unix版MySQL對比
2.3.16. Windows版MySQL同Unix版MySQL對比

已經證明,WindowsMySQL很穩定。WindowsMySQL的功能與相應的Unix版相同,只有以下例外:

·         Windows 95和線程

Windows 95創建一個線程時大約需要200字節的主內存。MySQL的每個連接都會創建一個新線程,因此如果你的服務器正處理許多連接,你不應當在Windows 95中運行mysqld

·         有限的端口數目

Windows系統有大約4,000個端口供客戶端連接,某個端口的連接關閉后,在能夠重新利用該端口前,需要24分鐘。在客戶端頻繁連接并從服務器上斷開時,在可以重新使用關閉的端口前,有可能用完了所有可用的端口。如果發生這種情況,MySQL服務器不會響應,即使它仍在運行。請注意機器上運行的其它應用程序也可以使用端口,此時可供MySQL使用的端口數要少。

詳細信息參見http://support.microsoft.com/default.aspx?scid=kb;en-us;196271

·         并行讀

MySQL依靠pread()pwrite()系統調用來同時使用INSERTSELECT。目前我們使用互斥來競爭pread()pwrite()。我們將來想用虛擬接口替換文件級接口,因此要想更快,我們可以在NT2000XP上使用readfile()/writefile()接口。目前MySQL 5.1可以打開的文件的限制數目為2,048,意味著在Windows NT2000,XP2003上可以運行的并行線程不如Unix上多。

·         阻塞讀

MySQL為每個連接使用阻塞讀取,如果啟用了命名管道連接,其含義如下:

o        連接不會在8小時后自動斷開,而在UnixMySQL中會發生。

o        如果連接被掛起,不殺掉MySQL則不會將其中斷。

o        mysqladmin kill不會殺掉睡眠中的連接。

o        只要有睡眠連接,mysqladmin shutdown不會中斷。

我們計劃在將來修復該問題。

·         ALTER TABLE

執行ALTER TABLE語句時,將該表鎖定不讓其它線程使用。在Windows中,你不能刪除正被另一個線程使用的文件。在將來,我們會找出辦法解決該問題。

·         DROP TABLE

Windows中對一個被MERGE表應用的表執行DROP TABLE不會實現,因為MERGE處理器將表從MySQL上層映射隱藏起來。由于Windows不允許刪除打開的文件,必須在刪除表之前首先清空所有MERGE(使用FLUSH TABLES)或刪掉MERGE表。

·         DATA DIRECTORY and INDEX DIRECTORY

Windows中將忽略DATA DIRECTORYINDEX DIRECTORY選項,因為Windows不支持符號連接。在具有非功能realpath()調用的系統中,這些選項也被忽略。

·         DROP DATABASE

你不能刪掉正被線程使用的數據庫。

·         Task Manager(任務管理器)殺掉MySQL

你不能從Task Manager(任務管理求)或使用Windows 95shutdown工具來殺掉MySQL。你必須通過mysqladmin shutdown停止它。

·         大小寫名

由于Windows對文件名大小寫不敏感。因此在WindowsMySQL數據庫名和表名對大小寫也不敏感。唯一的限制是在同一個語句中,必須同時使用大寫或小寫指定數據庫名和表名。請參見9.2.2節,“識別符大小寫敏感性”。

·         ’路徑名間隔符

Windows中的路徑名用‘’符間隔開,在MySQL中還是轉義字符。如果你使用LOAD DATA INFILESELECT ... INTO OUTFILE,用‘/’符使用Unix-類文件名:

mysql> LOAD DATA INFILE 'C:/tmp/skr.txt' INTO TABLE skr;
mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;

你還可以使用雙‘’符:

mysql> LOAD DATA INFILE 'C:\tmp\skr.txt' INTO TABLE skr;
mysql> SELECT * INTO OUTFILE 'C:\tmp\skr.txt' FROM skr;

·         管道問題。

管道不能在Windows命令行提示符下可靠地工作。如果管道包括字符^Z/CHAR(24)Windows認為遇到了文件末尾并中斷程序。

這主要是按照如下所示使用二進制日志的主要問題:

C>mysqlbinlog binary-log-name | mysql --user=root

如果使用日志時出現問題,懷疑是由于^Z / CHAR(24)字符,你可以使用下面的程序:

C:> mysqlbinlog binary-log-file --result-file=/tmp/bin.sql
C:> mysql --user=root --execute "source /tmp/bin.sql"

后面的命令還可以用來可靠讀取任何包含二進制數據的SQL文件。

·         Access denied for user錯誤

如果你試圖運行MySQL客戶端程序來連接同一機器上運行的服務器,但是遇到錯誤Access denied for user 'some-user'@'unknown' to database 'mysql',這意味著MySQL不能正確識別你的主機名。

要解決該問題,你應當創建一個名為windowshosts包含下面信息的文件:

127.0.0.1       localhost

這兒有一些公開問題,提供給想要幫助我們改進Windows中的MySQL的人們:

·         增加宏來使用Windows提供的更快的線程安全增/減方法。

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/installing.html
北斗有巢氏 有巢氏北斗