-
MySQL從開發人員手中的“玩具”變為如今的“世界上最受歡迎的開源資料庫”,其中的過程伴隨著產品版本升級,以及一些新功能(特別是企業資料庫功能)的增加。 MySQL從開發人員手中的“玩具”變為如今的“世界上最受歡迎的開源資料庫”,其中的過程伴隨著產品版本升級,以及一些新功能(特別是企業資料庫功能)的增加。現在,隨著MySQL 5.0被完美地開發出來,已經很少人把MySQL稱為「玩具資料庫」了。 MySQL的豐富功能滿足了許多用戶的需求,Oracle最近的動作表明了他們對待MySQL非常重視——Oracle曾經幾次三番的表示有意收購MySQL。
MySQL的產品路線圖
讓我們先從MySQL的較有影響力的版本產品開始,來看看MySQL的更新換代。
MySQL 4.0
MySQL 4.0是在2003年3月發布的,該版本使新的基於MySQL的應用程式獲得了更廣泛的應用。但是在4.0版中,MySQL不支援預存程序、觸發程序、伺服器端指標或檢視。 MySQL 4.0是從3.23發展而來,較之3.23版本有了很大的提高,主要適用於Web站點,這時候的MySQL還不是一個企業級資料庫。
以下是MySQL 4.0的主要新功能:
FULLTEXT索引:最值得用戶期待的可能就是FULLTEXT索引。
FULLTEXT在文字欄位建立索引,為對該索引執行布林搜尋提供了一個強大且靈活的機制。依照一般的開發經驗,開發人員通常必須建立索引並存取文字數據,而FULLTEXT索引比想像中的還要好得多。
許多解決方案僅限於全字索引,FULLTEXT索引沒有這種限制,允許開發人員新增或分割詞組。
ANSI SQL UNION:支援ANSI SQL UNION語句,該語句將詢問結果匯集到一個結果集。
多表操作:可以執行多表UPDATE和DELETE。
新語句:增加了其他DBMS使用者所熟悉的一些非標準的新語句(如IDENTITY和TRUNCATE TABLE),以及FOUND_ROWS()等新功能,這些功能可以傳回無需LIMIT子句就能傳回的紀錄的編號。
InnoDB儲存引擎:InnoDB儲存引擎在當時作為伺服器的標準特性,在4.0版本中成為一個附加選項。 InnoDb是允許ACID相容事務的表類型,而非預設的MyISAM表類型,它可以加快一般性使用的速度,但對於關鍵操作不是十分有用。
InnoDB表使用行級鎖定特性,這表示對一個記錄的更新只鎖定該記錄,而不是整個表。當選擇存取大量的資料庫時(對於大多數Web網站而言),鎖定整個表相當快,但是當插入和更新的數量接近於選項的數量時,則速度較慢。長期以來,對MySQL的批評一直集中在MyISAM表的安全性和一致性問題,而相容ACID的InnoDB表在解決這些問題上走過了很長一段路。
查詢快取:MySQL 4.0在某些情況下可以更快。這主要透過查詢快取得以實現,它將重複的查詢結果儲存起來,使速度得以提高,儘管許多成熟的應用程式在某個程式碼層級上執行自己的查詢快取功能。某些語句在速度上也有所提升。
Embededded Server:MySQL 4.0附帶了一個Embededded Server庫,允許應用程式以MySQL作為底層資料庫。
latin1_de :MySQL 4.0支援一個額外字元集latin1_de,它可確保正確儲存德語單字。
MyISAM:MySQL 4.0中的MyISAM表目前在表格層級上支援符號鏈接,所以Windows使用者可以在表格層級上建立符號連結(這對於Unix使用者始終有效)。
安全模型:MySQL 4.0的安全模型得到了增強,允許管理員更細緻地授權授權。新的權限允許用戶創建臨時表、鎖定表、執行某些複製任務、查看所有現有的資料庫,甚至在達到最大連接限度時還能進行連接——對於DBA執行緊急任務非常有用,甚至允許運行存儲過程(在MySQL 5中實作了此功能)。 DBA依賴增強的安全模式也可以限制使用者每小時的連線、更新或查詢次數。
MySQL 4設計運行在Novell Netware 6.0之上。另外,MySQL伺服器變數中有不少可以在不重新啟動伺服器的情況下進行更改,由於重新啟動會恢復舊的設置,因此這個特性非常有用。
MySQL 4.1
MySQL 4.1推出後,對某些使用者而言,4.1比MySQL 4.0具有更令人興奮的升級可能:
MySQL 4.1支援子查詢
不使用子查詢時,許多查詢可以更有效地編寫,但是會有例外。子查詢是標準ANSI SQL特性。
支援Unicode (UTF-8),允許更廣泛地進行國際化。
每個列、表或資料庫都可以設定不同的字元集,如果以多種語言儲存數據,這就很有必要了。
支援地理資料(OpenGIS)
增強的警告發送。如果一個不夠,MySQL 4.1可以將多個警告傳送到客戶端,這樣就對於整體資料處理十分有用。
提高了一些速度。但這些速度提高可能被MySQL 4.1所承擔的所有額外部分抵消。
儘管MySQL手冊是發布的最佳手冊之一,MySQL 4.1還是附帶了僅適用於該版本的HELP命令。
支援派生表,例如:
SELECT table1.field1 FROM table, (SELECT * FROM table2) table3 WHERE table1.field1=table3.field1
支援多行查詢,允許執行多個查詢,然後讀取最終結果。
各種維護語句將存入二進位日誌中,複製時您可以簡化維護任務。
CREATE...LIKE允許開發人員按現有表的精確結構輕鬆地建立新表。
另外,MySQL 4.1的三個顯著功能包括:穩定的OpenSSL支援、更多的測試準備語句、更多的測試一個表格的多個字元集。
MySQL 4.1或許是第一個實際「長大成人」的MySQL版本。由於4.1版本中一些新增加的特性和功能(例如地理資料、子選擇語句、衍生表),Oracle第一次開始真正關注MySQL。
MySQL 5.0
支援儲存過程。預存程序是一個開發人員在其他資料庫環境最常用的ANSI SQL標準,對於MySQL來說,這已經姍姍來遲了。 MySQL 5.0所支援的預存程序的語法類似Oracle PL/SQL和T-SQL。
觸發程式(發生某個事件時所稱的預存程序)
支援指針
真正支援VARCHAR資料類型,解決了一個長期存在的MySQL VARCHAR bug。
在MyISAM表中對RTREE索引的支持,將使存取地理資料變得很容易。
MySQL 5.1
相對於5.0版本,MySQL 5.1實作了一些新的功能:
線上備份(允許新增replication slave,不必關閉主伺服器)。
BIT類型,實際佔用1位,而不是1個字元。
失敗保護(failsafe)複製
-