国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫(kù) > MySQL > 正文

評(píng)價(jià):MySQL和PostgreSQL的優(yōu)劣較量

2024-07-24 12:55:32
字體:
供稿:網(wǎng)友
  • 本文來源于網(wǎng)頁設(shè)計(jì)愛好者web開發(fā)社區(qū)http://www.html.org.cn收集整理,歡迎訪問。
  • 這篇文章中,我們選用mysql 4.0.2-alpha與postgresql 7.2進(jìn)行比較,因?yàn)閙ysql 4.0.2-alpha開始支持事務(wù)的概念,因此這樣的比較對(duì)于mysql應(yīng)該較為有利。

      我們這樣的比較不想僅僅成為一份性能測(cè)試報(bào)告,因?yàn)橹辽購(gòu)奈覀€(gè)人來看,對(duì)于一個(gè)數(shù)據(jù)庫(kù),穩(wěn)定性和速度并不能代表一切。對(duì)于一個(gè)成熟的數(shù)據(jù)庫(kù),穩(wěn)定性肯定會(huì)日益提供。而隨著硬件性能的飛速提高,速度也不再是什么太大的問題。

      

      一、兩者的共同優(yōu)勢(shì)

      這兩個(gè)產(chǎn)品都屬于開放源碼的一員,性能和功能都在高速地提高和增強(qiáng)。mysql ab的人們和postgresql的開發(fā)者們都在盡可能地把各自的數(shù)據(jù)庫(kù)改得越來越好,所以對(duì)于任何商業(yè)數(shù)據(jù)庫(kù)使用其中的任何一個(gè)都不能算是錯(cuò)誤的選擇。

      

      二、兩者不同的背景

      mysql的背后是一個(gè)成熟的商業(yè)公司,而postgresql的背后是一個(gè)龐大的志愿開發(fā)組。這使得mysql的開發(fā)過程更為慎重,而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)說過并不準(zhǔn)備支持事務(wù)和觸發(fā)器。但是在最新的文檔中,我們看到mysql 4.0.2-alpha已經(jīng)開始支持事務(wù),而且在mysql的todo中,對(duì)觸發(fā)器、約束這樣的注定會(huì)降低速度的功能也列入了日程。但是,我們?nèi)匀挥欣碛上嘈?,mysql將有可能一直保持速度的優(yōu)勢(shì)。

      2、mysql比postgresql更流行,流行對(duì)于一個(gè)商業(yè)軟件來說,也是一個(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)行沒有mysql穩(wěn)定,應(yīng)該是可以想象的。

      4、mysql使用了線程,而postgresql使用的是進(jìn)程。在不同線程之間的環(huán)境轉(zhuǎ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可以通過建立視圖,并確定視圖的權(quán)限來彌補(bǔ)。mysql還允許你指定基于主機(jī)的權(quán)限,這對(duì)于目前的postgresql是無法實(shí)現(xiàn)的,但是在很多時(shí)候,這是有用的。

      7、由于mysql 4.0.2-alpha開始支持事務(wù)的概念,因此事務(wù)對(duì)于mysql不再僅僅成為劣勢(shì)。相反,因?yàn)閙ysql保留無事務(wù)的表類型。這就為用戶提供了更多的選擇。

      8、mysql的merge表提供了一個(gè)獨(dú)特管理多個(gè)表的方法。

      9、mysql的myisampack可以對(duì)只讀表進(jìn)行壓縮,此后仍然可以直接訪問該表中的行。

      

      四、postgresql的主要優(yōu)點(diǎn):

      1、對(duì)事務(wù)的支持與mysql相比,經(jīng)歷了更為徹底的測(cè)試。對(duì)于一個(gè)嚴(yán)肅的商業(yè)應(yīng)用來說,事務(wù)的支持是不可或缺的。

      2、mysql對(duì)于無事務(wù)的myisam表。采用表鎖定,一個(gè)長(zhǎng)時(shí)間運(yùn)行的查詢很可能會(huì)長(zhǎng)時(shí)間地阻礙對(duì)表的更新。而postgresql不存在這樣的問題。

      3、postgresql支持存儲(chǔ)過程,而目前mysql不支持,對(duì)于一個(gè)嚴(yán)肅的商業(yè)應(yīng)用來說,作為數(shù)據(jù)庫(kù)本身,有眾多的商業(yè)邏輯的存在,此時(shí)使用存儲(chǔ)過程可以在較少地增加數(shù)據(jù)庫(kù)服務(wù)器的負(fù)擔(dān)的前提下,對(duì)這樣的商業(yè)邏輯進(jìn)行封裝,并可以利用數(shù)據(jù)庫(kù)服務(wù)器本身的內(nèi)在機(jī)制對(duì)存儲(chǔ)過程的執(zhí)行進(jìn)行優(yōu)化。此外存儲(chǔ)過程的存在也避免了在網(wǎng)絡(luò)上大量的原始的sql語句的傳輸,這樣的優(yōu)勢(shì)是顯而易見的。

      4、對(duì)視圖的支持,視圖的存在同樣可以最大限度地利用數(shù)據(jù)庫(kù)服務(wù)器內(nèi)在的優(yōu)化機(jī)制。而且對(duì)于視圖權(quán)限的合理使用,事實(shí)上可以提供行級(jí)別的權(quán)限,這是mysql的權(quán)限系統(tǒng)所無法實(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語句中使用子查詢效率低下,而且絕大多數(shù)情況下可以使用帶條件的多表連接來替代子查詢,但是子查詢的存在在很多時(shí)候仍然不可避免。而且使用子查詢的sql語句與使用帶條件的多表連接相比具有更高的程序可讀性。

      8、支持r-trees這樣可擴(kuò)展的索引類型,可以更方便地處理一些特殊數(shù)據(jù)。

      9、postgresql可以更方便地使用udf(用戶定義函數(shù))進(jìn)行擴(kuò)展。

      

      五、那么我究竟應(yīng)該使用mysql還是postgresql

      這個(gè)問題很難說得清,而且事實(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ǔ)過程等究竟是什么,你應(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)核的狂熱愛好者,你甚至希望擁有你自己版本的數(shù)據(jù)庫(kù),毫無疑問,你必須使用postgresql,沒準(zhǔn)下一個(gè)postgresql版本中某一個(gè)模塊的作者就是你。

      

    后記

      以上只是作者從自己的理解盡量客觀公正地評(píng)價(jià)mysql和postgresql的優(yōu)劣。其中的帶有傾向性的意見只代表作者個(gè)人觀點(diǎn),有關(guān)這兩個(gè)數(shù)據(jù)庫(kù),歡迎廣大朋友提出自己的看法。

    發(fā)表評(píng)論 共有條評(píng)論
    用戶名: 密碼:
    驗(yàn)證碼: 匿名發(fā)表
    主站蜘蛛池模板: 郎溪县| 临高县| 龙南县| 陵川县| 鄱阳县| 桐梓县| 泽库县| 西乌| 平昌县| 合阳县| 江油市| 永宁县| 库伦旗| 大港区| 绥芬河市| 齐齐哈尔市| 临安市| 石家庄市| 修武县| 荥阳市| 罗源县| 繁峙县| 仁布县| 建德市| 万年县| 名山县| 平潭县| 临沂市| 阳朔县| 新竹市| 堆龙德庆县| 合川市| 通州区| 哈巴河县| 历史| 慈利县| 英超| 兴安盟| 蓬莱市| 葵青区| 澜沧|