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服務器變量中有不少可以在不重新啟動服務器的情況下進行更改,由於重新啟動會恢復舊的設置,因此這個特性非常有用。