明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

MySQL以速度為目標(biāo)(zt)

[摘要]MySQL以速度為目標(biāo) -------------------------------------------------------------------------------- MySQL和PostgreSQL都是非常著名的數(shù)據(jù)庫(kù)開(kāi)放源碼項(xiàng)目,而且都有取代商用數(shù)據(jù)庫(kù)系統(tǒng)的趨勢(shì),但兩者有著不...
MySQL以速度為目標(biāo)



--------------------------------------------------------------------------------


MySQL和PostgreSQL都是非常著名的數(shù)據(jù)庫(kù)開(kāi)放源碼項(xiàng)目,而且都有取代商用數(shù)據(jù)庫(kù)系統(tǒng)的趨勢(shì),但兩者有著不同的設(shè)計(jì)目標(biāo)。一般而言,如果需要更快的速度,可以優(yōu)先考慮MySQL,而如果需要一些新的特色,那可以選擇PostgreSQL。

目前MySQL由MySQL AB公司維護(hù),其最新穩(wěn)定版本為3.23,支持事務(wù)處理的3.23Max版也進(jìn)入了Beta測(cè)試階段,而它的最新開(kāi)發(fā)版本4.0已經(jīng)進(jìn)入了Alpha測(cè)試階段。它略顯不尋常的許可費(fèi)用,很容易讓用戶對(duì)它印象深刻。它的價(jià)格隨平臺(tái)和安裝方式的不同而改變,其Windows版本在任何情況下都不免費(fèi),而對(duì)任何Unix/Linux版本,如果用戶或系統(tǒng)管理員自己安裝是免費(fèi)的,第三方安裝則必須支付許可費(fèi)用。

MySQL是基于C/S體系結(jié)構(gòu)的網(wǎng)絡(luò)數(shù)據(jù)庫(kù)管理系統(tǒng)。它的設(shè)計(jì)以速度為主要目標(biāo),可以快速處理多個(gè)用戶的查詢請(qǐng)求,在處理客戶端連接時(shí)的速度也非?,很適合用做Web站點(diǎn)的后臺(tái)數(shù)據(jù)庫(kù)。相對(duì)而言,PostgreSQL的執(zhí)行速度比較慢,它對(duì)每個(gè)連接都生成一個(gè)子進(jìn)程,而生成子進(jìn)程、建立后臺(tái)服務(wù)進(jìn)程的步驟減慢了它的執(zhí)行速度。MySQL的服務(wù)器功能很緊湊,各種復(fù)雜的功能處理(比如XML支持)完全被放到客戶端進(jìn)行,這使得增加功能時(shí)不會(huì)犧牲數(shù)據(jù)庫(kù)服務(wù)器的速度和可靠性。而且它已被商業(yè)內(nèi)存檢測(cè)程序證明不存在內(nèi)存泄露,連續(xù)中斷和程序崩潰的現(xiàn)象也很罕見(jiàn),在穩(wěn)定性上比PostgreSQL要強(qiáng)一些。

在最初的設(shè)計(jì)階段,MySQL主要面向中等規(guī)模的數(shù)據(jù)庫(kù),也就是說(shuō),數(shù)據(jù)庫(kù)的規(guī)模大約有幾千萬(wàn)行,每個(gè)表大約100MB。隨著MySQL項(xiàng)目的發(fā)展,它的使用領(lǐng)域也逐漸擴(kuò)展到TB規(guī)模的大型數(shù)據(jù)庫(kù)和小型的手持或嵌入式設(shè)備領(lǐng)域。但是在短期內(nèi),MySQL不會(huì)支持實(shí)時(shí)數(shù)據(jù)庫(kù)或大規(guī)模集群數(shù)據(jù)庫(kù)。雖然在其3.23版本中,它通過(guò)MyISAM表,可以使系統(tǒng)在理論上能夠支持8000PB的表。但由于操作系統(tǒng)的限制,在大部分Linux系統(tǒng)下,它僅能處理最大為2GB或4GB的表。在3.23版本中,還加入了支持大型服務(wù)器集群的復(fù)制、InnoDB的事務(wù)表處理器、Berkerley DB事務(wù)表處理器接口、全文本搜索、MyODBC 2.5接口、MyISAM表的自動(dòng)檢查和修復(fù)、批量插入等新模塊。

InnoDB和BDB事務(wù)表處理器的引入使MySQL中使用這些方式存儲(chǔ)的數(shù)據(jù)表具有很好的事務(wù)處理能力。不過(guò)對(duì)于其他方式存儲(chǔ)的表,使用原子操作維護(hù)完整性和一致性通常會(huì)損失一些性能。在完整性非常重要時(shí),可以使用LOCK TABLES進(jìn)行表鎖定。從3.23.44開(kāi)始,InnoDB表支持外碼限制檢查,不過(guò)它的使用,特別是誤用外碼可能會(huì)導(dǎo)致較嚴(yán)重的問(wèn)題。

MySQL不支持嵌套查詢功能,給開(kāi)發(fā)人員帶來(lái)很大不便。它只支持SQL92的一個(gè)子集,而不像PostgreSQL那樣支持SQL92的一個(gè)通用子集。所以對(duì)于邏輯比較復(fù)雜的查詢,往往要建立臨時(shí)表來(lái)保存中間信息,有時(shí)候這種方式會(huì)使一些查詢語(yǔ)句的表述很不直觀或者根本無(wú)法表示。

不過(guò)在MySQL 4.0系統(tǒng)中,又增加了一些新特性,比如支持fail-safe方式復(fù)制和聯(lián)機(jī)備份的工作方式,以適應(yīng)關(guān)鍵任務(wù)和大負(fù)載運(yùn)行的用戶。它還對(duì)大段文本采用新的全文索引,使用戶可以用自然語(yǔ)言描述進(jìn)行檢索操作。此外,在4.0之前的版本中只能通過(guò)明文進(jìn)行服務(wù)器和客戶端之間的連接,若要提供較強(qiáng)的安全性必須在服務(wù)器和客戶端之間架設(shè)防火墻;而4.0版本在客戶機(jī)和服務(wù)器之間支持安全通信方式,其mysqld服務(wù)器守護(hù)進(jìn)程可以使用安全套接字(SSL)和客戶機(jī)進(jìn)行通信。另外它通過(guò)對(duì)MyISAM在表級(jí)加入符號(hào)連接,使得在Windows系統(tǒng)下也能支持符號(hào)連接處理。

(計(jì)算機(jī)世界報(bào) 第11期B24)