真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

PostgreSQL怎么用系統(tǒng)表來分析postgresql的問題

這篇文章將為大家詳細講解有關PostgreSQL怎么用系統(tǒng)表來分析postgresql的問題,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

目前創(chuàng)新互聯已為超過千家的企業(yè)提供了網站建設、域名、虛擬空間、成都網站托管、企業(yè)網站設計、華坪網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

數據庫中本身的系統(tǒng)表提供了對外展示當前數據庫狀態(tài)的作用,其中這些系統(tǒng)表可以監(jiān)控系統(tǒng)的狀態(tài),查詢執(zhí)行計劃的狀態(tài),以及作為服務器管理狀態(tài)顯示的一部分。

對于任何的數據庫理解和巧妙的使用這些系統(tǒng)表都很重要。

一般來說如果客戶開始抱怨你的應用使用的postgresql 反映緩慢,或者你自己發(fā)現部分查詢反饋的時間已經很慢,已經肉眼可查的時候,該怎么做。

1  查看cache hit ratio  這個東西其實放到其他數據庫也是一樣,如果你的內存對于系統(tǒng)的緩沖支持不足,需要的數據無法駐留在內存,經常會產生 fault page (有些數據庫對于讀取的數據不在內存中的一種叫法), 那就必須要要查看你的一個系統(tǒng)參數 cache hit ratio ,大部分建議最低不要低于95%,如果達到99% 才是一個令人滿意的數字。

不同的在于每種數據庫對于查詢的方便些和便捷性,從我掌握的數據庫來說,PG獲取 cache hit ratio的方法比較簡單。

PostgreSQL怎么用系統(tǒng)表來分析postgresql的問題

select  sum(heap_blks_read) as heap_read,

        sum(heap_blks_hit) as heap_hit,

sum(heap_blks_hit) /(sum(heap_blks_hit) + sum(heap_blks_read)) as ratio 

from pg_statio_user_tables;

其實研究一下 pg_statio_uer_tables 這張表,可以很容易發(fā)現通過pg_statio_user_tables 這張表可以變化出多種系統(tǒng)的指標參數。

而實際上這個pg_statio_user_tables 是一個view 從 pg_statio_all_tables 中變化而成的

 SELECT pg_statio_all_tables.relid,

    pg_statio_all_tables.schemaname,

    pg_statio_all_tables.relname,

    pg_statio_all_tables.heap_blks_read,

    pg_statio_all_tables.heap_blks_hit,

    pg_statio_all_tables.idx_blks_read,

    pg_statio_all_tables.idx_blks_hit,

    pg_statio_all_tables.toast_blks_read,

    pg_statio_all_tables.toast_blks_hit,

    pg_statio_all_tables.tidx_blks_read,

    pg_statio_all_tables.tidx_blks_hit

   FROM pg_statio_all_tables

  WHERE (pg_statio_all_tables.schemaname <> ALL (ARRAY['pg_catalog'::name, 'information_schema'::name])) AND pg_statio_all_tables.schemaname !~ '^pg_toast'::text;

而什么會引起 cache hit ratio 比較低的問題

1 設計的表中存儲了比較大的字段或者存儲其他方式的不適合存儲在傳統(tǒng)數據庫的數據,例如大型的圖片,或者大量的文字,并且經常調用

2 由于vacuum 的問題,dead tuple 沒有及時被清理,

3 查詢并未被優(yōu)化,大量的走了 sequential scans 的方式

4 你缺乏足夠的內存來進行目前面對的查詢活動

那么接下來的問題如果從找尋到底哪個表可能會存在問題的角度入手,可以馬上先看一下

2  pg_stat_database 這個系統(tǒng)表,這樣表可以很清楚的給出如下信息

PostgreSQL怎么用系統(tǒng)表來分析postgresql的問題

1  單獨每個數據庫產生的事務多少

2  回滾事務有多少,(從這點就可以看出某些問題)

3  整體數據庫的讀寫比 , tup_fetched 與 tup_inserted, tup_updated, tup_deleted 和的比率

4   查詢數據回饋與實際數據的搜索的比率,也就是查找多少數據返回的行數與對應到底數據庫檢索了多少行 tup_fetched / tup_returned

5  是否數據庫有死鎖

等等以上信息。應該可以確認至少那個數據庫是 熱的,或者對比歷史同期數據指標,指標不大對,那就可以繼續(xù)針對這個數據庫進行問題的查找.

在確認了數據庫后,下一步就可以開始針對這個數據庫的表進行問題的確認了。

3 pg_stat_all_tables

select * from pg_stat_all_tables where relname not like 'pg%' and relname not like 'sql%';

PostgreSQL怎么用系統(tǒng)表來分析postgresql的問題

通過pg_stat_all_tables 可以將當前數據庫中的表進行一個梳理,例如某個表的數據的 insert ,update del ,以及查詢中使用的到的,以及查詢的比率,還有了解到一個表最后一次 autovacuum的時間,等等有用的信息,尤其可以通過n_dead_tup     這個參數的跟蹤,得到某個表是否有事務沒有commit 制造了大量的 dead_tup 或者長事務,造成某個時間段的 dead_tup急劇上升等等,問題。

然后我們在得到這些證據后,就可以將其report 給相關的開發(fā)人員,并且通過 POSTGRESQL 的慢查詢來進一步確認某些設計的問題,或者語句缺少索引的問題。

關于“PostgreSQL怎么用系統(tǒng)表來分析postgresql的問題”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。


網站題目:PostgreSQL怎么用系統(tǒng)表來分析postgresql的問題
鏈接地址:http://weahome.cn/article/pohepe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部