❶ postgresql是什麼資料庫請詳解一下,謝謝
PostgreSQL 是一種非常復雜的對象-關系型資料庫管理系統(ORDBMS), 也是目前功能最強大,特性最豐內富和最復雜的自由容軟體資料庫系統。有些特性甚至連商業資料庫都不具備。這個起源於伯克利(BSD)的資料庫研究計劃目前已經衍生成一項國際開發項目, 並且有非常廣泛的用戶。
PostgreSQL 可以說是最富特色的自由資料庫管理系統,甚至我們也可以說是最強大的自由軟體資料庫管理系統。事實上, PostgreSQL 的特性覆蓋了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以說是目前世界上最豐富的數據類型的支持,其中有些數據類型可以說連商業資料庫都不具備, 比如 IP 類型和幾何類型等;其次,PostgreSQL 是全功能的自由軟體資料庫,很長時間以來,PostgreSQL 是唯一支持事務、子查詢、多版本並行控制系統、數據完整性檢查等特性的唯一的一種自由軟體的資料庫管理系統。直到最近才有 Inprise 的 InterBase 以及 SAP 等廠商將其原先專有軟體開放為自由軟體之後才打破了這個唯一。
❷ PostgreSQL從菜鳥到專家 什麼是PostgreSQL資料庫
PostgreSQL資料庫是一個免費的、開放源碼的、大型關系資料庫管理系統。PostgreSQL資料庫有不同平台的版本,支持Windows, Linux, Unidx等等系統平台。
其官方網站為: htttp://www.postgresql.org。
❸ postgreSQL資料庫查詢時間久
先看一下,你在count時,是否有其他的sql在同一個資料庫執行,如果有,也會出現時間加長。
用explain 查看一下,主要的cost在哪裡
❹ 怎麼寫mysql資料庫延遲級聯刪除命令
使用 bcc 工具觀測 MySQL:1)dbstat功能:將 MySQL/PostgreSQL 的查詢延遲匯總為直方圖
語法:
dbstat [-h] [-v] [-p [PID [PID ...]]] [-m THRESHOLD] [-u] [-i INTERVAL] {mysql,postgres}
選項:
{mysql,postgres} # 觀測哪種資料庫-h, --help # 顯示幫助然後退出-v, --verbose # 顯示BPF程序-p [PID [PID ...]], --pid [PID [PID ...]] # 要觀測的進程號,空格分隔-m THRESHOLD, --threshold THRESHOLD # 只統計查詢延遲比此閾值高的-u, --microseconds # 以微秒為時間單位來顯示延遲(默認單位:毫秒)-i INTERVAL, --interval INTERVAL # 列印摘要的時間間隔(單位:秒)
示例:
# 使用 sysbench 在被觀測資料庫上執行 select[root@liuan tools]# dbstat mysql -p `pidof mysqld` -uTracing database queries for pids 3350 slower than 0 ms...^C[14:42:26] query latency (us)
2)dbslower
功能:跟蹤 MySQL/PostgreSQL 的查詢時間高於閾值
語法:
dbslower [-h] [-v] [-p [PID [PID ...]]] [-x PATH] [-m THRESHOLD] {mysql,postgres}
參數:
{mysql,postgres} # 觀測哪種資料庫 -h, --help # 顯示幫助然後退出 -v, --verbose # 顯示BPF程序 -p [PID [PID ...]], --pid [PID [PID ...]] # 要觀測的進程號,空格分隔 -m THRESHOLD, --threshold THRESHOLD # 只統計查詢延遲比此閾值高的 -x PATH, --exe PATH # 資料庫二進制文件的位置
示例:
# 使用sysbench在被觀測資料庫上執行update_index [root@liuan tools]# dbslower mysql -p `pidof mysqld` -m 2 Tracing database queries for pids 3350 slower than 2 ms... TIME(s) PID MS QUERY 1.765087 3350 2.996 UPDATE sbtest1 SET k=k+1 WHERE id=963 3.187147 3350 2.069 UPDATE sbtest1 SET k=k+1 WHERE id=628 5.945987 3350 2.171 UPDATE sbtest1 SET k=k+1 WHERE id=325 7.771761 3350 3.853 UPDATE sbtest1 SET k=k+1 WHERE id=5955. 使用限制
bcc 基於 eBPF 開發(需要 Linux 3.15 及更高版本)。bcc 使用的大部分內容都需要 Linux 4.1 及更高版本。
"bcc.usdt.USDTException: failed to enable probe 'query__start'; a possible cause can be that the probe requires a pid to enable" 需要 MySQL 具備 Dtrace tracepoint。
❺ 寫數據到PostgreSQL資料庫錯誤問題,怎麼解決
1、使用CREATEDATABASE該命令將創建一個資料庫PostgreSQL的shell提示符,但你應該有適當的許可權來創建資料庫。默認情況下,創建新的資料庫將通過克隆標准系統資料庫template1。語法:CREATEDATABASE語句的基本語法如下:CREATEDATABASEdbname;其中dbname是要創建的資料庫的名稱。例子:下面是一個簡單的例子,這將創建testdb在PostgreSQL模式:postgres=#CREATEDATABASEtestdb;postgres-#2、使用createdb的命令PostgreSQL命令行可執行createdb是是SQL命令CREATEDATABASE一個包裝器。此命令和SQL命令CREATEDATABASE之間唯一的區別是,前者可以直接在命令行中運行,它允許的注釋被添加到資料庫中,全部在一個命令。語法:createdb語法如下所示:createdb[option][dbname[description]]參數下表列出了參數及它們的描述。參數名稱描述..optionscommand-.選項下表列出了命令行參數CREATEDB接收:選項描述-.-.-.-.-.--,andexit.-.-.-UusernameUsernametoconnectas.-wNeverissueapasswordprompt.-.打開命令提示符,然後去是PostgreSQL安裝所在的目錄。進入到bin目錄,執行下面的命令創建一個資料庫。createdb-hlocalhost-p5432-Upostgresstestdbpassword******上面的命令會提示Postgres的默認的PostgreSQL管理用戶的密碼,以便提供密碼和繼續創建新的資料庫。一旦創建資料庫時可以使用上述方法,可以檢查它在列表中的資料庫使用l即反斜線el命令如下:postgres-#lListofdatabasesName|Owner|Encoding|Collate|Ctype|Accessprivileges-----------+----------+----------+---------+-------+-----------------------postgres|postgres|UTF8|C|C|template0|postgres|UTF8|C|C|=c/postgres+|||||postgres=CTc/postgrestemplate1|postgres|UTF8|C|C|=c/postgres+|||||postgres=CTc/postgrestestdb|postgres|UTF8|C|C|(4rows)postgres-#
❻ Postgresql資料庫壓力測試下真的會逐漸變慢嗎
任何系統,在壓力增大的情況下,都會下降的
❼ postgresql資料庫
目前沒有現成的函數可以做到通過鍵值更新json中的值,也無法插入一對鍵值。回
對於這種鍵值對類型的json數據,可答以考慮轉換成text,然後由text進行運算,再轉換成json值。示例如下:
withsas(select'{"a":"Hello","b":"World!"}'::jsonasj1)
selects.j1,j1::textasj2,
replace(j1::text,(s.j1->'b')::text,'"Andy"'::text)::jsonasj2,--替換b鍵值的內容
(replace(s.j1::text,'}','')||','||replace(('{"c":"OK?"}'::json)::text,'{',''))::jsonasj3--添加一個鍵值對,目前未能插入到指定位置
froms;
❽ MySQL資料庫與PostgreSQL資料庫比較 哪個資料庫更好些
如果打算為項目選擇一款免費、開源的資料庫,那麼你可能會在MySQL與PostgreSQL之間猶豫不定。MySQL與PostgreSQL都是免費、開源、強大、且功能豐富的資料庫。你主要的問題可能是:哪一個才是最好的開源資料庫,MySQL還是PostgreSQL呢?該選擇哪一個開源資料庫呢?
在選擇資料庫時,你所做的是個長期的決策,因為後面如果再改變決定將是非常困難且代價高昂的。你希望一開始就選擇正確。兩個流行的開源資料庫MySQL與PostgreSQL常常成為最後要選擇的產品。對這兩個開源資料庫的高層次概覽將會有助於你選擇最適合自己需要的。
MySQL
MySQL相對來說比較年輕,首度出現在1994年。它聲稱自己是最流行的開源資料庫。MySQL就是LAMP(用於Web開發的軟體包,包括 Linux、Apache及Perl/PHP/Python)中的M。構建在LAMP棧之上的大多數應用都會使用MySQL,包括那些知名的應用,如 WordPress、Drupal、Zend及phpBB等。
一開始,MySQL的設計目標是成為一個快速的Web伺服器後端,使用快速的索引序列訪問方法(ISAM),不支持ACID。經過早期快速的發展之 後,MySQL開始支持更多的存儲引擎,並通過InnoDB引擎實現了ACID。MySQL還支持其他存儲引擎,提供了臨時表的功能(使用MEMORY存 儲引擎),通過MyISAM引擎實現了高速讀的資料庫,此外還有其他的核心存儲引擎與第三方引擎。
MySQL的文檔非常豐富,有很多質量不錯的免費參考手冊、圖書與在線文檔,還有來自於Oracle和第三方廠商的培訓與支持。
MySQL近幾年經歷了所有權的變更和一些頗具戲劇性的事件。它最初是由MySQL AB開發的,然後在2008年以10億美金的價格賣給了Sun公司,Sun公司又在2010年被Oracle收購。Oracle支持MySQL的多個版 本:Standard、Enterprise、Classic、Cluster、Embedded與Community。其中有一些是免費下載的,另外一 些則是收費的。其核心代碼基於GPL許可,對於那些不想使用GPL許可的開發者與廠商來說還有商業許可可供使用。
現在,基於最初的MySQL代碼還有更多的資料庫可供選擇,因為幾個核心的MySQL開發者已經發布了MySQL分支。最初的MySQL創建者之一 Michael "Monty" Widenius貌似後悔將MySQL賣給了Sun公司,於是又開發了他自己的MySQL分支MariaDB,它是免費的,基於GPL許可。知名的 MySQL開發者Brian Aker所創建的分支Drizzle對其進行了大量的改寫,特別針對多CPU、雲、網路應用與高並發進行了優化。
PostgreSQL
PostgreSQL標榜自己是世界上最先進的開源資料庫。PostgreSQL的一些粉絲說它能與Oracle相媲美,而且沒有那麼昂貴的價格和傲慢的客服。它擁有很長的歷史,最初是1985年在加利福尼亞大學伯克利分校開發的,作為Ingres資料庫的後繼。
PostgreSQL是完全由社區驅動的開源項目,由全世界超過1000名貢獻者所維護。它提供了單個完整功能的版本,而不像MySQL那樣提供了 多個不同的社區版、商業版與企業版。PostgreSQL基於自由的BSD/MIT許可,組織可以使用、復制、修改和重新分發代碼,只需要提供一個版權聲 明即可。
可靠性是PostgreSQL的最高優先順序。它以堅如磐石的品質和良好的工程化而聞名,支持高事務、任務關鍵型應用。PostgreSQL的文檔非 常精良,提供了大量免費的在線手冊,還針對舊版本提供了歸檔的參考手冊。PostgreSQL的社區支持是非常棒的,還有來自於獨立廠商的商業支持。
數據一致性與完整性也是PostgreSQL的高優先順序特性。PostgreSQL是完全支持ACID特性的,它對於資料庫訪問提供了強大的安全性 保證,充分利用了企業安全工具,如Kerberos與OpenSSL等。你可以定義自己的檢查,根據自己的業務規則確保數據質量。在眾多的管理特性 中,point-in-time recovery(PITR)是非常棒的特性,這是個靈活的高可用特性,提供了諸如針對失敗恢復創建熱備份以及快照與恢復的能力。但這並不是 PostgreSQL的全部,項目還提供了幾個方法來管理PostgreSQL以實現高可用、負載均衡與復制等,這樣你就可以使用適合自己特定需求的功能 了。
平台
MySQL與PostgreSQL都出現在一些高流量的Web站點上:
MySQL:Slashdot、Twitter、Facebook與Wikipedia
PostgreSQL:Yahoo使用了一個修改的PostgreSQL資料庫來處理每天數以億計的事件,還有Reddit和Disqus
MySQL與PostgreSQL都能運行在多個操作系統上,如Linux、Unix、Mac OS X與Windows。他們都是開源、免費的,因此測試他們時的唯一代價就是你的時間與硬體。他們都很靈活且具有可伸縮性,可用在小型系統和大型分布式系統 上。MySQL在一個領域上要比PostgreSQL更進一步,那就是它的觸角延伸到了嵌入式領域,這是通過libmysqld實現的。 PostgreSQL不支持嵌入式應用,依然堅守在傳統的客戶端/伺服器架構上。
MySQL通常被認為是針對網站與應用的快速資料庫後端,能夠進行快速的讀取和大量的查詢操作,不過在復雜特性與數據完整性檢查方面不太盡如人意。 PostgreSQL是針對事務型企業應用的嚴肅、功能完善的資料庫,支持強ACID特性和很多數據完整性檢查。他們二者都在某些任務上具有很快的速 度,MySQL不同存儲引擎的行為有較大差別。MyISAM引擎是最快的,因為它只執行很少的數據完整性檢查,適合於後端讀操作較多的站點,不過對於包含 敏感數據的讀/寫資料庫來說就是個災難了,因為MyISAM表最終可能會損壞。MySQL提供了修復MySQL表的工具,不過對於敏感數據來說,支持 ACID特性的InnoDB則是個更好的選擇。
與之相反,PostgreSQL則是個只有單一存儲引擎的完全集成的資料庫。你可以通過調整postgresql.conf文件的參數來改進性能,也可以調整查詢與事務。PostgreSQL文檔對於性能調優提供了非常詳盡的介紹。
MySQL與PostgreSQL都是高可配置的,並且可以針對不同的任務進行相應的優化。他們都支持通過擴展來添加額外的功能。
一個常見的誤解就是MySQL要比PostgreSQL更容易學習。關系資料庫系統都是非常復雜的,這兩個資料庫的學習曲線其實是差不多的。
標准兼容性
PostgreSQL旨在實現SQL兼容性(當前標準是ANSI-SQL:2008)。MySQL則兼容大部分SQL,不過還有自己的擴展,可以支 持NoSQL特性,這在參考手冊中都有介紹。每種方式都有優缺點。兼容標准會讓資料庫管理員、資料庫開發者與應用開發者更舒服一些,因為這意味著他們只需 學習一套標准、一套特性和命令即可。這會節省時間,提升效率,也不會被鎖定在特定的廠商上。
支持使用非標準的自定義功能的人們認為這樣可以快速採用新的特性,而不必等待標准進程完成。ANSI/ISO標准在不斷演化,因此標准兼容性也是個 變化的目標:知名的關系型資料庫Microsoft SQL Server、Oracle與IBM DB2也只是部分兼容於標准。
結論
雖然有不同的歷史、引擎與工具,不過並沒有明確的參考能夠表明這兩個資料庫哪一個能夠適用於所有情況。很多組織喜歡使用PostgreSQL,因為 它的可靠性好,在保護數據方面很擅長,而且是個社區項目,不會陷入廠商的牢籠之中。MySQL更加靈活,提供了更多選項來針對不同的任務進行裁剪。很多時 候,對於一個組織來說,對某個軟體使用的熟練程度要比特性上的原因更重要。
❾ SQL語句優化,使用postgresql資料庫,查詢下面sql,需要20多分鍾:
postgresql(8.2)的配置文件中有一個參數log_min_ration_statement,意思是只log執行時間大於設定值的語句,如果設為0,表示log所有語句;如果設為-1,表示不log任何語句。
看起來,這個配置選項對性能的調整是很有用的,比如可以設置:
log_min_ration_statement = 1000
則只log執行時間大於1s的語句,重點優化這些sql語句就好了。
然而,奇怪的,這個選項不太容易生效!經過反復試驗,原來需要如下配置:
#debug_print_parse = off
#debug_print_rewritten = off
#debug_print_plan = off
#debug_pretty_print = off
log_connections = off
#log_disconnections = off
log_ration = off
log_line_prefix = '%t [%p]: [%l-1] ' # Special values:
# %u = user name
# %d = database name
# %r = remote host and port
# %h = remote host
# %p = PID
# %t = timestamp (no milliseconds)
# %m = timestamp with milliseconds
# %i = command tag
# %c = session id
# %l = session line number
# %s = session start timestamp
# %x = transaction id
# %q = stop here in non-session
# processes
# %% = '%'
# e.g. '<%u%%%d> '
log_statement = 'none' # none, mod, ddl, all
#log_statement = 'all' # none, mod, ddl, all
#log_hostname = off
注意看上面的其中兩個選項的設置:
log_ration = off
log_statement = 'none'
這兩個選項的意思是不log任何sql語句和執行時間,但是恰恰是關閉了這兩個,log_min_ration_statement才會生效!可能postgresql內部 對這兩個選項做了「互斥」處理吧。
❿ postgreSQL資料庫有什麼用啊
優點事實上, PostgreSQL 的特性覆蓋了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以說是目前世界上最豐富的數據類型的支持,其中有些數據類型可以說連商業資料庫都不具備, 比如 IP 類型和幾何類型等;其次,PostgreSQL 是全功能的自由軟體資料庫,很長時間以來,PostgreSQL 是唯一支持事務、子查詢、多版本並行控制系統、數據完整性檢查等特性的唯一的一種自由軟體的資料庫管理系統。直到最近才有 Inprise 的 InterBase 以及 SAP 等廠商將其原先專有軟體開放為自由軟體之後才打破了這個唯一。最後,PostgreSQL擁有一支非常活躍的開發隊伍,而且在許多黑客的努力下,PostgreSQL 的質量日益提高。
從技術角度來講,PostgreSQL 採用的是比較經典的 C/S (client/server)結構,也就是一個客戶端對應一個伺服器端守護進程的模式,這個守護進程分析客戶端來的查詢請求,生成規劃樹,進行數據檢索並最終把結果格式化輸出後返回給客戶端。為了便於客戶端的程序的編寫,由資料庫伺服器提供了統一的客戶端 C 介面。而不同的客戶端介面都是源自這個 C 介面,比如 ODBC,JDBC,Python,Perl ,Tcl,C/C++,ESQL 等, 同時也要指出的是,PostgreSQL 對介面的支持也是非常豐富的,幾乎支持所有類型的資料庫客戶端介面。這一點也可以說是 PostgreSQL 一大優點。
缺點
從 Postgres 開始,PostgreSQL 就經受了多次變化。
首先,早期的 PostgreSQL 繼承了幾乎所有 Ingres, Postgres, Postgres95 的問題:過於學院味,因為首先它的目的是資料庫研究,因此不論在穩定性, 性能還是使用方便方面,長期以來一直沒有得到重視,直到 PostgreSQL 項目開始以後,情況才越來越好,目前,PostgreSQL 已經完全可以勝任任何中上規模範圍內的應用范圍的業務。目前有報道的生產資料庫的大小已經有 TB 級的數據量,已經逼近 32 位計算的極限。不過學院味也給 PostgreSQL 帶來一個意想不到的好處:大概因為各大學的軟硬體環境差異太大的緣故,它是目前支持平台最多的資料庫管理系統的一種,所支持的平台多達十幾種,包括不同的系統,不同的硬體體系。至今,它仍然保持著支持平台最多的資料庫管理系統的稱號。
其次,PostgreSQL 的確還欠缺一些比較高端的資料庫管理系統需要的特性,比如資料庫集群,更優良的管理工具和更加自動化的系統優化功能 等提高資料庫性能的機制等。