宇宙最強數(shù)據(jù)庫——PostgreSQL for Windows 16_x64綠色精簡版(僅25MB)
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
懶得勤快的博客_互聯(lián)網(wǎng)分享精神masuit.com|ldqk.org|ldqk.xyz|masuit.org宇宙最強數(shù)據(jù)庫——PostgreSQL for Windows 16_x64綠色精簡版(僅25MB) PostgreSQL是一種特性非常齊全的自由軟件的對象-關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(ORDBMS),是以加州大學(xué)計算機系開發(fā)的POSTGRES。POSTGRES的許多領(lǐng)先概念只是在比較遲的時候才出現(xiàn)在商業(yè)網(wǎng)站數(shù)據(jù)庫中。PostgreSQL支持大部分的SQL標(biāo)準(zhǔn)并且提供了很多其他現(xiàn)代特性,如復(fù)雜查詢、外鍵、觸發(fā)器、視圖、事務(wù)完整性、多版本并發(fā)控制等。同樣,PostgreSQL也可以用許多方法擴展,例如通過增加新的數(shù)據(jù)類型、函數(shù)、操作符、聚集函數(shù)、索引方法、過程語言等。另外,因為許可證的靈活,任何人都可以以任何目的免費使用、修改和分發(fā)PostgreSQL。 特點1)維護者是PostgreSQL Global Development Group,首次發(fā)布于1989年6月。 9)My ISAM表處理方式方面,MySQL對于無事務(wù)的MyISAM表,采用表鎖定,1個長時間運行的查詢很可能會阻礙對表的更新,而PostgreSQL不存在這樣的問題。 對比mysql1、PostgreSQL的穩(wěn)定性極強,Innodb等引擎在崩潰、斷電之類的災(zāi)難場景下抗打擊能力有了長足的進步,然而很多Mysql用戶都遇到過Server級的數(shù)據(jù)庫丟失的場景---Mysql系統(tǒng)庫是MyISAM的,相較而言,PG數(shù)據(jù)庫在這方面要好一些。
PostgreSQL相對于MySQL的優(yōu)勢1)不僅僅是關(guān)系型數(shù)據(jù)庫除了存儲正常的數(shù)據(jù)類型外,還支持存儲:
json和jsonb之間的區(qū)別: jsonb和json在更高的層面上看起來幾乎是一樣的,但在存儲實現(xiàn)上是不同的。
當(dāng)我們比較寫入數(shù)據(jù)速度時,由于數(shù)據(jù)存儲的方式的原因,jsonb會比json稍微的慢一點。json列會每次都解析存儲的值,這意味著鍵的順序要和輸入的時候一樣。但jsonb不同,以二進制格式存儲且不保證鍵的順序。因此,如果你有軟件需要依賴鍵的順序,jsonb可能不是你的應(yīng)用的最佳選擇。使用jsonb的優(yōu)勢還在于你可以輕易的整合關(guān)系型數(shù)據(jù)和非關(guān)系型數(shù)據(jù), PostgreSQL對于mongodb這類的基于文檔的數(shù)據(jù)庫是個不小的威脅,畢竟如果一個表中只有一列數(shù)據(jù)的類型是半結(jié)構(gòu)化的,沒有必要為了遷就它而整個表的設(shè)計采用schemaless的結(jié)構(gòu)。 2)支持地理信息處理擴展PostGIS 為PostgreSQL提供了存儲空間地理數(shù)據(jù)的支持,使PostgreSQL成為了一個空間數(shù)據(jù)庫,能夠進行空間數(shù)據(jù)管理、數(shù)量測量與幾何拓撲分析。在功能上,和MYSQL對比,PostGIS具有下列優(yōu)勢:
O2O業(yè)務(wù)場景中的LBS業(yè)務(wù)使用PostgreSQL + PostGIS有無法比擬的優(yōu)勢。 3)可以快速構(gòu)建REST APIPostgREST 可以方便的為任何 PostgreSQL 數(shù)據(jù)庫提供完全的 RESTful API 服務(wù)。 4)支持樹狀結(jié)構(gòu)支持R-trees這樣可擴展的索引類型,可以更方便地處理一些特殊數(shù)據(jù)。MySQL 處理樹狀的設(shè)計會很復(fù)雜, 而且需要寫很多代碼, 而 PostgreSQL 可以高效處理樹結(jié)構(gòu)。 5)有極其強悍的 SQL 編程能力支持遞歸,有非常豐富的統(tǒng)計函數(shù)和統(tǒng)計語法支持。
6)外部數(shù)據(jù)源支持可以把 70 種外部數(shù)據(jù)源 (包括 Mysql, Oracle, CSV, hadoop …) 當(dāng)成自己數(shù)據(jù)庫中的表來查詢。Postgres有一個針對這一難題的解決方案:一個名為“外部數(shù)據(jù)封裝器(Foreign Data Wrapper,F(xiàn)DW)”的特性。該特性最初由PostgreSQL社區(qū)領(lǐng)袖Dave Page四年前根據(jù)SQL標(biāo)準(zhǔn)SQL/MED(SQL Management of External Data)開發(fā)。FDW提供了一個SQL接口,用于訪問遠程數(shù)據(jù)存儲中的遠程大數(shù)據(jù)對象,使DBA可以整合來自不相關(guān)數(shù)據(jù)源的數(shù)據(jù),將它們存入Postgres數(shù)據(jù)庫中的一個公共模型。這樣,DBA就可以訪問和操作其它系統(tǒng)管理的數(shù)據(jù),就像在本地Postgres表中一樣。例如,使用FDW for MongoDB,數(shù)據(jù)庫管理員可以查詢來自文檔數(shù)據(jù)庫的數(shù)據(jù),并使用SQL將它與來自本地Postgres表的數(shù)據(jù)相關(guān)聯(lián)。借助這種方法,用戶可以將數(shù)據(jù)作為行、列或JSON文檔進行查看、排序和分組。他們甚至可以直接從Postgres向源文檔數(shù)據(jù)庫寫入(插入、更細或刪除)數(shù)據(jù),就像一個一體的無縫部署。也可以對Hadoop集群或MySQL部署做同樣的事。FDW使Postgres可以充當(dāng)企業(yè)的中央聯(lián)合數(shù)據(jù)庫或“Hub”。) 7)沒有字符串長度限制一般關(guān)系型數(shù)據(jù)庫的字符串有限定長度8k左右,無限長 TEXT 類型的功能受限,只能作為外部大數(shù)據(jù)訪問。而PostgreSQL的 TEXT 類型可以直接訪問,SQL語法內(nèi)置正則表達式,可以索引,還可以全文檢索,或使用xml xpath。MySQL 的各種text字段有不同的限制,要手動區(qū)分 small text, middle text, large text… PostgreSQL 沒有這個限制,text 能支持各種大小。 8)支持圖結(jié)構(gòu)數(shù)據(jù)存儲沒有具體使用過,具體可以自己搜索下。 9)支持窗口函數(shù)窗口函數(shù)提供跨行相關(guān)的當(dāng)前查詢行集執(zhí)行計算的能力。僅當(dāng)調(diào)用跟著OVER子句的聚集函數(shù),作為窗口函數(shù);否則它們作為常規(guī)的聚合函數(shù)。窗口也是一種分組,但和 group by 的分組不同。窗口,可以提供分組之外,還可以執(zhí)行對每個窗口進行計算??梢韵嘞癯墒莋roup by 后,然后對每個分組進行計算,而不像Group by ,只是單純地分組。MySQL 不支持 OVER 子句, 而PostgreSQL支持。OVER 子句能簡單的解決 “每組取 top 5” 的這類問題。MySQL支持的SQL語法(ANSI SQL標(biāo)準(zhǔn))的很小一部分。不支持遞歸查詢、通用表表達式(Oracle的with 語句)或者窗口函數(shù)(分析函數(shù))。 10)對索引的支持更強PostgreSQL 的可以使用函數(shù)和條件索引,這使得PostgreSQL數(shù)據(jù)庫的調(diào)優(yōu)非常靈活,mysql就沒有這個功能,條件索引在web應(yīng)用中很重要。對于索引類型:
InnoDB的表和索引都是按相同的方式存儲。也就是說表都是索引組織表。這一般要求主鍵不能太長而且插入時的主鍵最好是按順序遞增,否則對性能有很大影響。PostgreSQL不存在這個問題。 索引類型方面,MySQL取決于存儲引擎。MyISAM:BTREE,InnoDB:BTREE。PostgreSQL支持 B-樹、哈希、R-樹和 Gist 索引。 11)集群支持更好Mysql Cluster可能與你的想象有較大差異。開源的cluster軟件較少。復(fù)制(Replication)功能是異步的并且有很大的局限性。例如,它是單線程的(single-threaded),因此一個處理能力更強的Slave的恢復(fù)速度也很難跟上處理能力相對較慢的Master。 PostgreSQL有豐富的開源cluster軟件支持。plproxy 可以支持語句級的鏡像或分片,slony 可以進行字段級的同步設(shè)置,standby 可以構(gòu)建WAL文件級或流式的讀寫分離集群,同步頻率和集群策略調(diào)整方便,操作非常簡單。 另外,PostgreSQL的主備復(fù)制屬于物理復(fù)制,相對于MySQL基于binlog的邏輯復(fù)制,數(shù)據(jù)的一致性更加可靠,復(fù)制性能更高,對主機性能的影響也更小。對于WEB應(yīng)用來說,復(fù)制的特性很重要,mysql到現(xiàn)在也是異步復(fù)制,pgsql可以做到同步,異步,半同步復(fù)制。還有mysql的同步是基于binlog復(fù)制,類似oracle golden gate,是基于stream的復(fù)制,做到同步很困難,這種方式更加適合異地復(fù)制,pgsql的復(fù)制基于wal,可以做到同步復(fù)制。同時,pgsql還提供stream復(fù)制。 12)事務(wù)隔離做的更好MySQL 的事務(wù)隔離級別 repeatable read 并不能阻止常見的并發(fā)更新, 得加鎖才可以, 但悲觀鎖會影響性能, 手動實現(xiàn)樂觀鎖又復(fù)雜. 而 PostgreSQL 的列里有隱藏的樂觀鎖 version 字段, 默認的 repeatable read 級別就能保證并發(fā)更新的正確性, 并且又有樂觀鎖的性能。 13)對于字符支持更好一些MySQL 里需要 utf8mb4 才能顯示 emoji 的坑, PostgreSQL 沒這個坑。 14)對表連接支持較完整對表連接支持較完整,MySQL只有一種表連接類型:嵌套循環(huán)連接(nested-loop),不支持排序-合并連接(sort-merge join)與散列連接(hash join)。PostgreSQL都支持。 15)存儲方式支持更大的數(shù)據(jù)量PostgreSQL主表采用堆表存放,MySQL采用索引組織表,能夠支持比MySQL更大的數(shù)據(jù)量。 16)時間精度更高MySQL對于時間、日期、間隔等時間類型沒有秒以下級別的存儲類型,而PostgreSQL可以精確到秒以下。 17)優(yōu)化器的功能較完整MySQL對復(fù)雜查詢的處理較弱,查詢優(yōu)化器不夠成熟,explain看執(zhí)行計劃的結(jié)果簡單。性能優(yōu)化工具與度量信息不足。 PostgreSQL很強大的查詢優(yōu)化器,支持很復(fù)雜的查詢處理。explain返回豐富的信息。提供了一些性能視圖,可以方便的看到發(fā)生在一個表和索引上的select、delete、update、insert統(tǒng)計信息,也可以看到cache命中率。網(wǎng)上有一個開源的pgstatspack工具。 18)序列支持更好MySQL 不支持多個表從同一個序列中取 id, 而 PostgreSQL 可以。 19)對子查詢支持更好對子查詢的支持。雖然在很多情況下在SQL語句中使用子查詢效率低下,而且絕大多數(shù)情況下可以使用帶條件的多表連接來替代子查詢,但是子查詢的存在在很多時候仍然不可避免。而且使用子查詢的SQL語句與使用帶條件的多表連接相比具有更高的程序可讀性。幾乎任何數(shù)據(jù)庫的子查詢 (subquery) 性能都比 MySQL 好。 20)增加列更加簡單MySQL表增加列,基本上是重建表和索引,會花很長時間。PostgreSQL表增加列,只是在數(shù)據(jù)字典中增加表定義,不會重建表. MySQL相對于PostgreSQL的優(yōu)勢1)MySQL比PostgreSQL更流行流行對于一個商業(yè)軟件來說,也是一個很重要的指標(biāo),流行意味著更多的用戶,意味著經(jīng)受了更多的考驗,意味著更好的商業(yè)支持、意味著更多、更完善的文檔資料。易用,很容易安裝。第三方工具,包括可視化工具,讓用戶能夠很容易入門。 2)回滾實現(xiàn)更優(yōu)innodb的基于回滾段實現(xiàn)的MVCC機制,相對PG新老數(shù)據(jù)一起存放的基于XID的MVCC機制,是占優(yōu)的。新老數(shù)據(jù)一起存放,需要定時觸發(fā)VACUUM,會帶來多余的IO和數(shù)據(jù)庫對象加鎖開銷,引起數(shù)據(jù)庫整體的并發(fā)能力下降。而且VACUUM清理不及時,還可能會引發(fā)數(shù)據(jù)膨脹。 3)在Windows上運行更可靠與PostgreSQL相比,MySQL更適宜在Windows環(huán)境下運行。MySQL作為一個本地的Windows應(yīng)用程序運行(在 NT/Win2000/WinXP下,是一個服務(wù)),而PostgreSQL是運行在Cygwin模擬環(huán)境下。PostgreSQL在Windows下運行沒有MySQL穩(wěn)定,應(yīng)該是可以想象的。 4)線程模式相比進程模式的優(yōu)勢MySQL使用了線程,而PostgreSQL使用的是進程。在不同線程之間的環(huán)境轉(zhuǎn)換和訪問公用的存儲區(qū)域顯然要比在不同的進程之間要快得多。
5)權(quán)限設(shè)置上更加完善MySQL在權(quán)限系統(tǒng)上比PostgreSQL某些方面更為完善。PostgreSQL只支持對于每一個用戶在一個數(shù)據(jù)庫上或一個數(shù)據(jù)表上的 insert、select和update/delete的授權(quán),而MySQL允許你定義一整套的不同的數(shù)據(jù)級、表級和列級的權(quán)限。對于列級的權(quán)限, PostgreSQL可以通過建立視圖,并確定視圖的權(quán)限來彌補。MySQL還允許你指定基于主機的權(quán)限,這對于目前的PostgreSQL是無法實現(xiàn)的,但是在很多時候,這是有用的。 6)存儲引擎插件化機制MySQL的存儲引擎插件化機制,使得它的應(yīng)用場景更加廣泛,比如除了innodb適合事務(wù)處理場景外,myisam適合靜態(tài)數(shù)據(jù)的查詢場景。 7)適應(yīng)24/7運行MySQL可以適應(yīng)24/7運行。在絕大多數(shù)情況下,你不需要為MySQL運行任何清除程序。PostgreSQL目前仍不完全適應(yīng)24/7運行,這是因為你必須每隔一段時間運行一次VACUUM。 8)更加試用于簡單的場景PostgreSQL只支持堆表,不支持索引組織表,Innodb只支持索引組織表。
由于索引組織表是按一個索引樹,一般它訪問數(shù)據(jù)塊必須按數(shù)據(jù)塊之間的關(guān)系進行訪問,而不是按物理塊的訪問數(shù)據(jù)的,所以當(dāng)做全表掃描時要比堆表慢很多,這可能在OLTP中不明顯,但在數(shù)據(jù)倉庫的應(yīng)用中可能是一個問題。 總結(jié)MySQL從一開始就沒有打算做所有事情,因而它在功能方面有一定的局限性,并不能滿足一些先進應(yīng)用程序的要求。MySQL對某些功能(例如引用、事務(wù)、審計等)的實現(xiàn)方式使得它與其他的關(guān)系型數(shù)據(jù)庫相比缺少了一些可靠性。對于簡單繁重的讀取操作,使用PostgreSQL可能有點小題大做,同時性能也比MySQL這樣的同類產(chǎn)品要差。除非你需要絕對的數(shù)據(jù)完整性,ACID遵從性或者設(shè)計復(fù)雜,否則PostgreSQL對于簡單的場景而言有點多余。 如何你確定只在MySQL和PostgreSQL中進行選擇,以下規(guī)則總是有效的:
修改說明保留全部 PostgreSQL 相關(guān)功能 刪除自帶的 pgadmin 4 刪除文檔 懶得勤快的博客_互聯(lián)網(wǎng)分享精神masuit.com|ldqk.org|ldqk.xyz|masuit.org宇宙最強數(shù)據(jù)庫——PostgreSQL for Windows 16_x64綠色精簡版(僅25MB) 刪除開發(fā)用頭文件 刪除開發(fā)用靜態(tài)連接庫 刪除 Stack Build 工具 寫了一個管理數(shù)據(jù)庫用的批處理 使用前請先安裝VC++運行庫。 下載地址15.4: https://ldqk.lanzouc.com/izNTD16m0noh 16:https://ldqk.lanzouj.com/iXlVY186s7ab Mod包PostGIS空間數(shù)據(jù)庫:https://www.123pan.com/s/EywDVv-C0CBd.html timescaledb時序數(shù)據(jù)庫:https://ldqk.lanzouk.com/imPEw10sreij 安裝GIS空間數(shù)據(jù)庫直接運行安裝包跟著向?qū)б宦废乱徊郊纯伞?a style="font-size: medium; box-sizing: border-box; margin: 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; line-height: inherit; vertical-align: baseline; position: absolute; z-index: -1; text-decoration-line: none !important; display: inline !important;"> 安裝timescaledb時序數(shù)據(jù)庫教程設(shè)置pgsql的環(huán)境變量 需要在path中添加你所安裝的postgresql路徑下的bin和lib,我這里是:C:\Users\Administrator\Desktop\web\pgsql-14.3-winx64\bin和C:\Users\Administrator\Desktop\web\pgsql-14.3-winx64\lib。 然后將下載好的timescaledb的壓縮包打開: 選擇setup.exe,這里需要用管理員權(quán)限運行不然后面安裝會有問題。 除了上面那個路徑外其他的選擇yes就行。安裝完timescaledb把postgresql服務(wù)進程開啟,開啟過程和關(guān)閉類似。 安裝完成,可以執(zhí)行create EXTENSION IF NOT EXISTS timescaledb CASCADE;檢測是否安裝成功。 懶得勤快的博客_互聯(lián)網(wǎng)分享精神masuit.com|ldqk.org|ldqk.xyz|masuit.org宇宙最強數(shù)據(jù)庫——PostgreSQL for Windows 16_x64綠色精簡版(僅25MB) 出現(xiàn)如上圖的信息說明安裝成功。 該文章在 2023/9/13 11:36:57 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |