MySQL最初的開發(fā)者的意圖是用mSQL和他們自己的快速低級例程(ISAM)去連接表格。不管怎樣,在經(jīng)過一些測試后,開發(fā)者得出結(jié)論:mSQL并沒有他們需要的那么快和靈活。這導(dǎo)致了一個使用幾乎和mSQL一樣的API接口的用于他們的數(shù)據(jù)庫的新的SQL接口的產(chǎn)生,這樣,這個API被設(shè)計成允許為用于mSQL而寫的第三方代碼更容易移植到MySQL。
MySQL這個名字是怎么來的已經(jīng)不清楚了。基本指南和大量的庫和工具帶有前綴“my”已經(jīng)有10年以上,而且不管怎樣,MySQL AB創(chuàng)始人之一的Monty Widenius的女兒也叫My。這兩個到底是哪一個給出了MySQL這個名字至今依然是個密,包括開發(fā)者在內(nèi)也不知道。
MySQL的海豚標(biāo)志的名字叫“sakila”,它是由MySQL AB的創(chuàng)始人從用戶在“海豚命名”的競賽中建議的大量的名字表中選出的。獲勝的名字是由來自非洲斯威士蘭的開源軟件開發(fā)者Ambrose Twebaze提供。根據(jù)Ambrose所說,Sakila來自一種叫SiSwati的斯威士蘭方言,也是在Ambrose的家鄉(xiāng)烏干達(dá)附近的坦桑尼亞的Arusha的一個小鎮(zhèn)的名字。
MySQL是一個小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQL AB公司。目前MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。
1.使用C和C++編寫,并使用了多種
編譯器進行測試,保證源代碼的可移植性
2.支持AIX、
FreeBSD、HP-UX、
Linux、Mac OS、
Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統(tǒng)
3.為多種編程語言提供了API。這些編程語言包括
C、C++、Eiffel、Java、
Perl、
PHP、Python、Ruby和Tcl等。
4.支持
多線程,充分利用CPU資源
5.優(yōu)化的
SQL查詢算法,有效地提高查詢速度
6.既能夠作為一個單獨的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個庫而嵌入到其他的軟件中提供多語言支持,常見的
編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名
7.提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫連接途徑
8.提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫操作的管理工具
9.可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫
與其他的大型數(shù)據(jù)庫例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之處,如規(guī)模小、功能有限(MySQL不支持視圖(已經(jīng)被列入5.1版的開發(fā)計劃)、事件等)等,但是這絲毫也沒有減少它受歡迎的程度。對于一般的個人使用者和中小型企業(yè)來說,MySQL提供的功能已經(jīng)綽綽有余,而且由于MySQL是開放源碼軟件,因此可以大大降低總體擁有成本。
目前Internet上流行的網(wǎng)站構(gòu)架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作為操作系統(tǒng),Apache作為Web服務(wù)器,MySQL作為數(shù)據(jù)庫,PHP作為服務(wù)器端腳本解釋器。由于這四個軟件都是遵循GPL的開放源碼軟件,因此使用這種方式不用花一分錢就可以建立起一個穩(wěn)定、免費的網(wǎng)站系統(tǒng)。
可以使用命令行工具管理MySQL數(shù)據(jù)庫(命令mysql 和 mysqladmin),也可以從MySQL的網(wǎng)站下載圖形管理工具MySQL Administrator和MySQL Query Browser。
phpMyAdmin是由php寫成的MySQL資料庫系統(tǒng)管理程式,讓管理者可用Web介面管理MySQL資料庫。
phpMyBackupPro也是由PHP寫成的,可以透過Web介面創(chuàng)建和管理數(shù)據(jù)庫。它可以創(chuàng)建偽cronjobs,可以用來自動在某個時間或周期備份MySQL 數(shù)據(jù)庫。
MyISAM? ?? ?Mysql的默認(rèn)數(shù)據(jù)庫,最為常用。擁有較高的插入,查詢速度,但不支持事務(wù)
InnoDB? ?? ?事務(wù)型數(shù)據(jù)庫的首選引擎,支持
ACID事務(wù),支持行級鎖定
BDB? ?? ?? ?源自Berkeley DB,事務(wù)型數(shù)據(jù)庫的另一種選擇,支持COMMIT和ROLLBACK等其他事務(wù)特性
Memory? ?? ?所有數(shù)據(jù)置于內(nèi)存的存儲引擎,擁有極高的插入,更新和查詢效率。但是會占用和數(shù)據(jù)量成正比的內(nèi)存空間。并且其內(nèi)容會在Mysql重新啟動時丟失
Merge? ?? ? 將一定數(shù)量的MyISAM表聯(lián)合而成一個整體,在超大規(guī)模數(shù)據(jù)存儲時很有用
Archive? ???非常適合存儲大量的獨立的,作為歷史記錄的數(shù)據(jù)。因為它們不經(jīng)常被讀取。Archive擁有高效的插入速度,但其對查詢的支持相對較差
Federated? ?將不同的Mysql服務(wù)器聯(lián)合起來,邏輯上組成一個完整的數(shù)據(jù)庫。非常適合分布式應(yīng)用
Cluster/NDB 高冗余的存儲引擎,用多臺數(shù)據(jù)機器聯(lián)合提供服務(wù)以提高整體性能和安全性。適合數(shù)據(jù)量大,安全和性能要求高的應(yīng)用
CSV? ?? ?? ?邏輯上由逗號分割數(shù)據(jù)的存儲引擎
BlackHole? ?黑洞引擎,寫入的任何數(shù)據(jù)都會消失
另外,Mysql的存儲引擎接口定義良好。有興趣的開發(fā)者通過閱讀文檔編寫自己的存儲引擎。
單點(Single),適合小規(guī)模應(yīng)用
復(fù)制(Replication),適合中小規(guī)模應(yīng)用
集群(Cluster),適合大規(guī)模應(yīng)用
左光華的mysql網(wǎng)絡(luò)數(shù)據(jù)庫開發(fā)教學(xué)視頻
http://www.tudou.com/playlist/mysql/Mysql6.0的alpha版于2007年初發(fā)布,新版增加了對falcon存儲引擎的支持。Falcon是Mysql社區(qū)自主開發(fā)的引擎,支持ACID特性事務(wù),支持行鎖,擁有高性能的并發(fā)性。Mysql AB公司想用Falcon替代已經(jīng)非常流行的InnoDB引擎,因為擁有后者技術(shù)的InnoBase已經(jīng)被競爭對手Oracle所收購。
2008年1月16日,
Sun Microsystems宣布收購MySQL AB,出價約10億美元現(xiàn)金外加期權(quán)。
http://www.mysql.com/news-and-events/sun-to-acquire-mysql.html