<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    afunms

    My Software,My Dream—Forge a more perfect NMS product.

    MySQL和PostgreSQL的優(yōu)劣較量

    轉(zhuǎn):http://news.csdn.net/n/20060801/93169.html

    這篇文章中,我們選用MySQL 4.0.2-alpha與PostgreSQL 7.2進(jìn)行比較,因?yàn)镸ySQL 4.0.2-alpha開(kāi)始支持事務(wù)的概念,因此這樣的比較對(duì)于MySQL應(yīng)該較為有利。
      我們這樣的比較不想僅僅成為一份性能測(cè)試報(bào)告,因?yàn)橹辽購(gòu)奈覀€(gè)人來(lái)看,對(duì)于一個(gè)數(shù)據(jù)庫(kù),穩(wěn)定性和速度并不能代表一切。對(duì)于一個(gè)成熟的數(shù)據(jù)庫(kù),穩(wěn)定性肯定會(huì)日益提供。而隨著硬件性能的飛速提高,速度也不再是什么太大的問(wèn)題。
      
      一、兩者的共同優(yōu)勢(shì)
      這兩個(gè)產(chǎn)品都屬于開(kāi)放源碼的一員,性能和功能都在高速地提高和增強(qiáng)。MySQL AB的人們和PostgreSQL的開(kāi)發(fā)者們都在盡可能地把各自的數(shù)據(jù)庫(kù)改得越來(lái)越好,所以對(duì)于任何商業(yè)數(shù)據(jù)庫(kù)使用其中的任何一個(gè)都不能算是錯(cuò)誤的選擇。
      
      二、兩者不同的背景
      MySQL的背后是一個(gè)成熟的商業(yè)公司,而PostgreSQL的背后是一個(gè)龐大的志愿開(kāi)發(fā)組。這使得MySQL的開(kāi)發(fā)過(guò)程更為慎重,而PostgreSQL的反應(yīng)更為迅速。
      這樣的兩種背景直接導(dǎo)致了各自固有的優(yōu)點(diǎn)和缺點(diǎn)。
      
      三、MySQL的主要優(yōu)點(diǎn)
      1、首先是速度,MySQL通常要比PostgreSQL快得多。MySQL自已也宣稱速度是他們追求的主要目標(biāo)之一,基于這個(gè)原因,MySQL在以前的文檔中也曾經(jīng)說(shuō)過(guò)并不準(zhǔn)備支持事務(wù)和觸發(fā)器。但是在最新的文檔中,我們看到MySQL 4.0.2-alpha已經(jīng)開(kāi)始支持事務(wù),而且在MySQL的TODO中,對(duì)觸發(fā)器、約束這樣的注定會(huì)降低速度的功能也列入了日程。但是,我們?nèi)匀挥欣碛上嘈牛琈ySQL將有可能一直保持速度的優(yōu)勢(shì)。
      2、MySQL比PostgreSQL更流行,流行對(duì)于一個(gè)商業(yè)軟件來(lái)說(shuō),也是一個(gè)很重要的指標(biāo),流行意味著更多的用戶,意味著經(jīng)受了更多的考驗(yàn),意味著更好的商業(yè)支持、意味著更多、更完善的文檔資料。
      3、與PostgreSQL相比,MySQL更適宜在Windows環(huán)境下運(yùn)行。MySQL作為一個(gè)本地的Windows應(yīng)用程序運(yùn)行(在NT/Win2000/WinXP下,是一個(gè)服務(wù)),而PostgreSQL是運(yùn)行在Cygwin模擬環(huán)境下。PostgreSQL在Windows下運(yùn)行沒(méi)有MySQL穩(wěn)定,應(yīng)該是可以想象的。
      4、MySQL使用了線程,而PostgreSQL使用的是進(jìn)程。在不同線程之間的環(huán)境轉(zhuǎn)換和訪問(wèn)公用的存儲(chǔ)區(qū)域顯然要比在不同的進(jìn)程之間要快得多。
      5、MySQL可以適應(yīng)24/7運(yùn)行。在絕大多數(shù)情況下,你不需要為MySQL運(yùn)行任何清除程序。PostgreSQL目前仍不完全適應(yīng)24/7運(yùn)行,這是因?yàn)槟惚仨毭扛粢欢螘r(shí)間運(yùn)行一次VACUUM。
      6、MySQL在權(quán)限系統(tǒng)上比PostgreSQL某些方面更為完善。PostgreSQL只支持對(duì)于每一個(gè)用戶在一個(gè)數(shù)據(jù)庫(kù)上或一個(gè)數(shù)據(jù)表上的INSERT、SELECT和UPDATE/DELETE的授權(quán),而MySQL允許你定義一整套的不同的數(shù)據(jù)級(jí)、表級(jí)和列級(jí)的權(quán)限。對(duì)于列級(jí)的權(quán)限,PostgreSQL可以通過(guò)建立視圖,并確定視圖的權(quán)限來(lái)彌補(bǔ)。MySQL還允許你指定基于主機(jī)的權(quán)限,這對(duì)于目前的PostgreSQL是無(wú)法實(shí)現(xiàn)的,但是在很多時(shí)候,這是有用的。
      7、由于MySQL 4.0.2-alpha開(kāi)始支持事務(wù)的概念,因此事務(wù)對(duì)于MySQL不再僅僅成為劣勢(shì)。相反,因?yàn)镸ySQL保留無(wú)事務(wù)的表類型。這就為用戶提供了更多的選擇。
      8、MySQL的MERGE表提供了一個(gè)獨(dú)特管理多個(gè)表的方法。
      9、MySQL的myisampack可以對(duì)只讀表進(jìn)行壓縮,此后仍然可以直接訪問(wèn)該表中的行。
      
      四、PostgreSQL的主要優(yōu)點(diǎn):
      1、對(duì)事務(wù)的支持與MySQL相比,經(jīng)歷了更為徹底的測(cè)試。對(duì)于一個(gè)嚴(yán)肅的商業(yè)應(yīng)用來(lái)說(shuō),事務(wù)的支持是不可或缺的。
      2、MySQL對(duì)于無(wú)事務(wù)的MyISAM表。采用表鎖定,一個(gè)長(zhǎng)時(shí)間運(yùn)行的查詢很可能會(huì)長(zhǎng)時(shí)間地阻礙對(duì)表的更新。而PostgreSQL不存在這樣的問(wèn)題。
      3、PostgreSQL支持存儲(chǔ)過(guò)程,而目前MySQL不支持,對(duì)于一個(gè)嚴(yán)肅的商業(yè)應(yīng)用來(lái)說(shuō),作為數(shù)據(jù)庫(kù)本身,有眾多的商業(yè)邏輯的存在,此時(shí)使用存儲(chǔ)過(guò)程可以在較少地增加數(shù)據(jù)庫(kù)服務(wù)器的負(fù)擔(dān)的前提下,對(duì)這樣的商業(yè)邏輯進(jìn)行封裝,并可以利用數(shù)據(jù)庫(kù)服務(wù)器本身的內(nèi)在機(jī)制對(duì)存儲(chǔ)過(guò)程的執(zhí)行進(jìn)行優(yōu)化。此外存儲(chǔ)過(guò)程的存在也避免了在網(wǎng)絡(luò)上大量的原始的SQL語(yǔ)句的傳輸,這樣的優(yōu)勢(shì)是顯而易見(jiàn)的。
      4、對(duì)視圖的支持,視圖的存在同樣可以最大限度地利用數(shù)據(jù)庫(kù)服務(wù)器內(nèi)在的優(yōu)化機(jī)制。而且對(duì)于視圖權(quán)限的合理使用,事實(shí)上可以提供行級(jí)別的權(quán)限,這是MySQL的權(quán)限系統(tǒng)所無(wú)法實(shí)現(xiàn)的。
      5、對(duì)觸發(fā)器的支持,觸發(fā)器的存在不可避免的會(huì)影響數(shù)據(jù)庫(kù)運(yùn)行的效率,但是與此同時(shí),觸發(fā)器的存在也有利于對(duì)商業(yè)邏輯的封裝,可以減少應(yīng)用程序中對(duì)同一商業(yè)邏輯的重復(fù)控制。合理地使用觸發(fā)器也有利于保證數(shù)據(jù)的完整性。
      6、對(duì)約束的支持。約束的作用更多地表現(xiàn)在對(duì)數(shù)據(jù)完整性的保證上,合理地使用約束,也可以減少編程的工作量。
      7、對(duì)子查詢的支持。雖然在很多情況下在SQL語(yǔ)句中使用子查詢效率低下,而且絕大多數(shù)情況下可以使用帶條件的多表連接來(lái)替代子查詢,但是子查詢的存在在很多時(shí)候仍然不可避免。而且使用子查詢的SQL語(yǔ)句與使用帶條件的多表連接相比具有更高的程序可讀性。
      8、支持R-trees這樣可擴(kuò)展的索引類型,可以更方便地處理一些特殊數(shù)據(jù)。
      9、PostgreSQL可以更方便地使用UDF(用戶定義函數(shù))進(jìn)行擴(kuò)展。
      
      五、那么我究竟應(yīng)該使用MySQL還是PostgreSQL
      這個(gè)問(wèn)題很難說(shuō)得清,而且事實(shí)上除了MySQL和PostgreSQL外,使用Oracle、Sybase、Informix等也是明智的選擇。如何你確定只在MySQL和PostgreSQL中進(jìn)行選擇,以下規(guī)則總是有效的。
      1、如果你的操作系統(tǒng)是Windows,你應(yīng)該使用MySQL。
      2、如果你對(duì)數(shù)據(jù)庫(kù)并不了十分了解,甚至不知道事務(wù)、存儲(chǔ)過(guò)程等究竟是什么,你應(yīng)該使用MySQL。
      3、如果你的應(yīng)用對(duì)數(shù)據(jù)的完整性和嚴(yán)肅性要求不高,但是追求處理的高速度。例如是一個(gè)論壇和社區(qū),你應(yīng)該使用MySQL。
      4、你的應(yīng)用是一個(gè)嚴(yán)肅的商業(yè)應(yīng)用,對(duì)數(shù)據(jù)完整性要求很高。而且你希望對(duì)一些商業(yè)數(shù)據(jù)邏輯進(jìn)行很好的封裝,例如是一個(gè)網(wǎng)上銀行,你應(yīng)該使用PostgreSQL。
      5、你的應(yīng)用處理的是地理數(shù)據(jù),由于R-TREES的存在,你應(yīng)該使用PostgreSQL。
      6、你是一個(gè)數(shù)據(jù)庫(kù)內(nèi)核的狂熱愛(ài)好者,你甚至希望擁有你自己版本的數(shù)據(jù)庫(kù),毫無(wú)疑問(wèn),你必須使用PostgreSQL,沒(méi)準(zhǔn)下一個(gè)PostgreSQL版本中某一個(gè)模塊的作者就是你。
      
        六、后記
      以上只是作者從自己的理解盡量客觀公正地評(píng)價(jià)MySQL和PostgreSQL的優(yōu)劣。其中的帶有傾向性的意見(jiàn)只代表作者個(gè)人觀點(diǎn),有關(guān)這兩個(gè)數(shù)據(jù)庫(kù),歡迎廣大朋友提出自己的看法。


     

    posted on 2008-09-28 21:05 afunms 閱讀(168) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    My Links

    News

    留言簿(18)

    隨筆檔案

    相冊(cè)

    搜索

    最新評(píng)論

    閱讀排行榜

    主站蜘蛛池模板: 亚洲AV成人精品网站在线播放| 成年女人毛片免费播放视频m| 国产亚洲一区二区三区在线不卡| 高潮毛片无遮挡高清免费| 日韩一级视频免费观看| 亚洲欧洲无码一区二区三区| 日韩一级免费视频| 国产亚洲精品美女久久久久| 亚洲国产日韩成人综合天堂| 国产精品免费大片一区二区| 国产亚洲综合久久系列| 中文字幕在线免费| 亚洲免费视频网址| 性做久久久久免费观看| jizz在线免费观看| 亚洲av福利无码无一区二区 | 亚洲性一级理论片在线观看| 99re热免费精品视频观看 | 国产91在线|亚洲| 卡1卡2卡3卡4卡5免费视频| 国产尤物在线视精品在亚洲| 丁香五月亚洲综合深深爱| 久久精品无码专区免费东京热 | 免费一级特黄特色大片| 亚洲色婷婷一区二区三区| 美女内射无套日韩免费播放| 亚洲综合色婷婷在线观看| 亚洲午夜国产片在线观看| 一区二区三区观看免费中文视频在线播放 | 91精品成人免费国产| 亚洲国产精品久久丫| 日韩精品亚洲专区在线观看| 日本免费人成网ww555在线| 亚洲影视自拍揄拍愉拍| 亚洲国产精品第一区二区三区| 国产精品99久久免费观看| 亚洲AV无码一区二区三区牲色| 国产亚洲精品岁国产微拍精品| 成年女人视频网站免费m| 三年片免费高清版 | 久久综合图区亚洲综合图区|