MySQL與Access的區(qū)別_mysql數(shù)據(jù)庫
發(fā)表時(shí)間:2023-08-12 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]為了適應(yīng)日新月異的技術(shù),有相當(dāng)多的軟件工程師逐漸地從桌面軟件諸如 Microsoft Access 以及 SQL Server,轉(zhuǎn)到使用 MySQL。雖然嚴(yán)格說來MySQL 并非 SQL Serv...
為了適應(yīng)日新月異的技術(shù),有相當(dāng)多的軟件工程師逐漸地從桌面軟件諸如 Microsoft Access 以及 SQL Server,轉(zhuǎn)到使用 MySQL。雖然嚴(yán)格說來MySQL 并非 SQL Server 的對手,但許多服務(wù)提供商都支持 MySQL,并視之為便宜而有效率的替代品。
Susan Sales Harkins 經(jīng)常在 CNET Builder.com 發(fā)表文章,是一位精通微軟 Office 的專家。她也是Using Microsoft Access 97和Using Microsoft Access 2000兩書的作者,這兩本書均由 Que 所出版。
Martin W. P. Reid 也經(jīng)常在 CNET Builder.com 發(fā)表文章,是英國貝爾法斯特女王大學(xué)(Queen's University) 的分析師暨程序設(shè)計(jì)員。他也指導(dǎo)關(guān)系型設(shè)計(jì)的課程;工作之余也為北愛爾蘭的一些小型企業(yè)充當(dāng)顧問。
▲考慮使用 MySQL 的原因
如果你要找的是可靠的軟件,以便支持你的網(wǎng)站開發(fā)工作,那么以下的原因就說明了你為什么應(yīng)該考慮 MySQL而不是其它∶
·它便宜(通常是免費(fèi))。
·它的網(wǎng)絡(luò)承載比較少。
·它經(jīng)過很好的優(yōu)化(Highly Optimized)。
·應(yīng)用程序通過它做備份來比較簡單。
·它為各種不同的資料格式提供有彈性的擴(kuò)展介面 (ODBC)。
·它較好學(xué),且操作簡單。
·你負(fù)擔(dān)得起的客戶支持費(fèi)用。
▲關(guān)于“$”的問題
簡單的說,你不會找到比 MySQL 更便宜的了。事實(shí)上,對大多數(shù)用戶來說,MySQL 是免費(fèi)的。有時(shí)候雖然是要付出一小筆的授權(quán)費(fèi),但是這個(gè)付費(fèi)規(guī)定只限于以下兩種情況∶
·以內(nèi)嵌(embedded)的方式使用 MySQL
·只使用 MySQL 的商業(yè)用途軟件
例如,Windows 版本的 MySQL ,需要授權(quán)。雖然只付比美金 $200 元多一點(diǎn)點(diǎn)的費(fèi)用,MySQL 還是比其他任何軟件來得更便宜多了。Office XP Developer 的零售價(jià)是美金 $799 元,升級版則是美金 $549 元。Access 2002 的價(jià)格是美金 $339 元,升級版則是美金 $109 元。
▲ 避免堵塞
針對多個(gè)使用者共同讀寫信息的需求,Access 根本不是 MySQL 的對手。Access 在大約十五個(gè)使用者連上來的時(shí)候,就輸?shù)袅恕N覀冞聽說過當(dāng)只有五個(gè)人連上來時(shí), 就會有一些問題(這并不是說,只有五個(gè)人能夠同時(shí)連上由 Access 支持的網(wǎng)站)。“同時(shí)連結(jié)”(Simultaneous connection)事實(shí)上是一種并發(fā)處理(concurrent process)。因此,雖然事實(shí)上 Access 可以處理的連結(jié)數(shù)目是無限制的,但只要那些連結(jié)保持在并發(fā)處理的范圍限制內(nèi)就沒關(guān)系。對于只讀網(wǎng)站(這些網(wǎng)站并非你想像中的少數(shù))它可以支持到最多到 255 個(gè)使用者。而較大的網(wǎng)站,則無可避免的必須升級到 SQL Server 以提高穩(wěn)定性和效率。
相對說來,MySQL 內(nèi)定最大連結(jié)數(shù)為 100 個(gè)使用者。但是,我們絕對不可以用一個(gè)程序的內(nèi)建設(shè)定來判斷它的效能。到目前為止,我們還沒聽說過使用 MySQL 的較大而且訪問頻繁的網(wǎng)站上的使用者有任何抱怨。除此之外,即使有網(wǎng)絡(luò)上有 大量 的資料往來,似乎并不會對MYSQL的查詢優(yōu)化(query optimization)造成多大的影響。
在 Windows 98 上使用相同的硬件和數(shù)據(jù)尺寸,MySQL 表現(xiàn)得比 Access 2000 還要快 – 但只是并非所有的情況下都是如此。 這兩者在資料更新方面的效能,有著很大的差異,同樣的資料更新,Access 要花上兩倍的時(shí)間。如果是在高速系統(tǒng)上做小量的資料的處理,你不會去注意到這兩者間的差異。 但只有在處理的是幾十萬筆資料的時(shí)候,這效能上的差異才會明顯。MySQL 只在處理對象結(jié)構(gòu)(object structure)的時(shí)候,才會輸給 Access。 當(dāng)建立表格(table) 以及索引的時(shí)候,MySqL 會將表格鎖住,如此一來會導(dǎo)致正在進(jìn)行的大量資料處理速度慢下來。然而以上所提到的最后一個(gè)問題在網(wǎng)站開發(fā)時(shí),通常并不會造成麻煩。 因?yàn)榫W(wǎng)站上,我們所重視的是用戶來訪時(shí)查詢的速度,而非資料儲存結(jié)構(gòu)本身。因此,在這個(gè)領(lǐng)域,MySQL 勝利。
▲MYSQL其它的優(yōu)點(diǎn)
·優(yōu)化
對于 MySQL 的優(yōu)化,我們可以說,主要的問題在于你的硬件條件,而非 MySQL 本身。不過對于 Access,(以及其他桌面軟件)事情就不是這樣了。 沒錯(cuò),Microsoft Jet Database 的確實(shí)有效率,不過它還不是最快的。如果你的設(shè)計(jì)得非常差,你的網(wǎng)站還是會受到影響而速度變慢的。 結(jié)構(gòu)設(shè)計(jì)也會影響到 MySQL,例如,MySQL 并不支持外鍵(foreign key)。這個(gè)缺點(diǎn)會影響到你的設(shè)計(jì)以及網(wǎng)站的效率。對于使用 MySQL 做的網(wǎng)站,你應(yīng)該注意的是,如何讓存取IO減少到最低值、如何讓一個(gè)或多個(gè) CPU 隨時(shí)保持在高速作業(yè)的狀態(tài)、以及適當(dāng)?shù)木W(wǎng)絡(luò)帶寬, 而非實(shí)際上的設(shè)計(jì)以及資料查詢語句。事實(shí)上,有些網(wǎng)站開發(fā)者將 MySQL 稱為目前市面上跑得最快的。不過,當(dāng)你的有很多表格需要同時(shí)在一個(gè)事務(wù)過程(transaction)內(nèi)完成更新的時(shí)候,MySQL 的確跑得不怎么樣。
·備份
如果你曾經(jīng)有過搶救一個(gè)損壞的 MDB 檔案的慘痛經(jīng)驗(yàn),那么你會對 MySQL 表示非常激賞。這是 MySQL 另一個(gè)勝過 Access 的地方。首先,mysqldump 會產(chǎn)生一個(gè)比 Access 好很多而且也更可靠的備份檔案。相比之下,在 Access中你只是將一個(gè) MDB 檔拷貝起來做備份。其次,即使 MySQL 的備份有部分損壞,復(fù)原起來也要比一個(gè)損壞的 MDB 檔要容易得多了。
·可延伸性(Scalability)以及資料處理能力
套句登山者的話來說,將 Access 來跟 MySQL 相比,簡直就是像把印第安那的小山丘拿來跟科羅拉多洛磯山脈的 Pike's Peak 頂相比較。事實(shí)就是這么簡單∶MySQL 可以處理的檔案比 Access 所能處理的檔案大很多。如果你硬將 Access 弄到 100MB 的 MDB 檔案時(shí),你要準(zhǔn)備好一個(gè)字典厚的紀(jì)錄本來記錄來自客戶對于網(wǎng)站效率低下的抱怨。而類似的在 MySQL 上面跑,就不會發(fā)生承載過重的跡象。
另外,MySQL 同時(shí)提供高度多樣性,能夠提供很多不同的使用者介面,包括命令行客戶端操作,網(wǎng)頁瀏覽器,以及各式各樣的程序語言介面,例如 C+,Perl,Java,PHP,以及 Python。你可以使用事先包裝好的客戶端,或者干脆自己寫一個(gè)合適的應(yīng)用程序。MySQL 可用于 Unix,Windows,以及 OS/2 等平臺,因此它可以用在個(gè)人電腦或者是上。
沒錯(cuò),Microsoft ActiveX Data Objects Library(ADO)的確使得 Access 在外部資料市場(foreign data market)上能夠做更具彈性的應(yīng)用。它能夠讓你不用管資料的所在位置而取出資料,然後在公用的介面上(即網(wǎng)頁瀏覽器)將資料顯示出來。不過,其壞處是 ADO 畢竟是比較笨重(它本身就是個(gè)資源大雜燴)而且學(xué)習(xí)它要花不少的金錢跟時(shí)間,就算你是一個(gè)能力不錯(cuò)的開發(fā)工程師或者軟件工程師也一樣。沒有人能在一天內(nèi)將 ADO 學(xué)會。
▲學(xué)習(xí)曲線
如果你已經(jīng)熟悉技術(shù),那么基本上你已經(jīng)沒什么問題了。精通的人在一天之內(nèi)就可以把 MySQL 學(xué)會,把這個(gè)經(jīng)驗(yàn)加到他的履歷表里面去。相較之下,Access 是個(gè)復(fù)雜得多的及開發(fā)工具。即使是一個(gè)能力不錯(cuò)的開發(fā)工程師也需要一段時(shí)間才能具備足夠的專業(yè)知識,有效地使用這個(gè)軟件。
正如你期待的,MySQL 支持結(jié)構(gòu)化查詢語言(Structured Query Language ,SQL)。如果你已經(jīng)學(xué)會某種版本的 SQL 語言,事情會好辦很多。具有 VB 或者是 VBA 知識背景的開發(fā)工程師會發(fā)現(xiàn),他們以前所具備的 ASP 背景,能夠幫助他們縮短學(xué)習(xí)時(shí)間。
▲客戶支持
雖然好用而且免費(fèi)的客戶支持已不存在,然而MySQL 倒提供了一些電子群組名單供您參考。有一些是頗具技術(shù)性的,而且會員們往往互相提供最佳的客戶支持 -- 他們彼此分享經(jīng)驗(yàn)和專業(yè)知識。此外,你還可以購買具有 客戶支持 的版本,包括 email 支持或者電話支持的方式。大致上來說,客戶支持費(fèi)率并非固定的,因此我們無法提供你相關(guān)價(jià)位的信息。
▲MySQL 的不足之處
Access 是一個(gè)關(guān)聯(lián)性管理系統(tǒng)(RDBMS),然而 MySQL 并非在每一個(gè)層面都是如此。這表示,雖然 MySQL 很好用,它還不是最好的。 以下列表記錄了目前關(guān)聯(lián)性層面以及管理層面,MySQL 尚未支持的部分:
MySQL 沒法處理復(fù)雜的關(guān)聯(lián)性功能,例如,子查詢(subqueries),雖然大多數(shù)的子查詢都可以改寫成 join。我們期待下一版出來時(shí),這項(xiàng)功能會被加進(jìn)來。
另一個(gè) MySQL 沒有提供支持的功能是事務(wù)處理(transaction)以及事務(wù)的提交(commit)/撤銷(rollback)。 一個(gè)事務(wù)指的是被當(dāng)作一個(gè)單位來共同執(zhí)行的一群或一套命令。如果一個(gè)事務(wù)沒法完成,那么整個(gè)事務(wù)里面沒有一個(gè)指令是真正執(zhí)行下去的。對于必須處理線上訂單的商業(yè)網(wǎng)站來說, MySQL 沒有支持這項(xiàng)功能,的確讓人覺得很失望。 但是可以用MaxSQL,一個(gè)分開的,它能通過外掛的表格來支持事務(wù)功能。
外鍵(foreign key)以及參考完整性限制(referential integrity)可以讓你制定表格中資料間的約束,然後將約束(constraint)加到你所規(guī)定的資料里面。這些MYSQL沒有的功能表示一個(gè)有賴復(fù)雜的資料關(guān)系的應(yīng)用程序并不適合使用 MySQL。 當(dāng)我們說 MySQL 不支持外鍵時(shí),我們指的就是的參考完整性限制 -- MySQL 并沒有支持外鍵的規(guī)則,當(dāng)然更沒有支持連鎖刪除(cascading delete)的功能。 簡短的說,如果你的工作需要使用復(fù)雜的資料關(guān)聯(lián),那你還是用原來的 Access 吧。
你在 MySQL 中也不會找到存儲進(jìn)程(stored procedure)以及觸發(fā)器(trigger)。(針對這些功能,在 Access 提供了相對的事件進(jìn)程(event procedure)。)
Access 的 GetRows 功能,提供了較好的資料拾取。
▲總結(jié)
下面這個(gè)表格能讓你對于 MySQL,Access,以及 SQL Server 大致上比起來是怎么樣有個(gè)基本概念:
□訪問頻繁的網(wǎng)站
·MySQL √
·Access √**
·SQL Server √
□復(fù)雜的資料關(guān)聯(lián)
·MySQL ×
·Access √
·SQL Server √
□在線訂單處理
·MySQL √*
·Access √***
·SQL Server √
□兼容性
·MySQL ×
·Access √****
·SQL Server √
□易于使用及操作
·MySQL √
·Access ×
·SQL Server ×
注:
* 需要MaxSQL
** 前提是資料只讀的話
*** 通過Jet SQL獲得的附加功能
**** 因?yàn)橹挥蠥DO
如果你需要使用復(fù)雜的,并且有很多資源和金錢,那么你就用 SQL Server 吧。如果你仍舊需要復(fù)雜的但是卻沒有雄厚的後援,那么用 Access 看看。至于其他的人,至少應(yīng)該給 MySQL 一個(gè)使用的機(jī)會吧!
Microsoft Access在很多地方得到廣泛使用,例如小型企業(yè),大公司的部門。