目錄:
pg_buffercache
pgfincore
pg_prewarm
dstat
Linux ftools
使用pg_prewarm預先載入關係/索引:
pgfincore 輸出:
怎樣重新整理在作業系統緩衝中的關係/索引 ?
使用pg_prewarm的range功能預先載入隨機塊.
PostgreSQL 的詳細介紹:請點這裡
PostgreSQL 的:請點這裡
推薦閱讀:
Ubuntu下LAPP(Linux+Apache+PostgreSQL+PHP)環境的配置與安裝
緩衝…. !!, 它很難在一篇文章中解釋清楚。但是我會努力分享我從Heikki, Robert Haas, Bruce Momjian那裡學到的知識。在PostgreSQL裡有兩層:PG共用緩衝和作業系統頁面緩衝,任何讀寫都會通過作業系統緩衝(迄今為止還沒有其它途徑)。Postgres把資料寫在作業系統頁面緩衝,使用者覺得資料好像回寫到了磁碟,之後作業系統緩衝才會寫到對應的物理磁碟位置。PG共用緩衝無法控制系統頁面緩衝,甚至連繫統緩衝是什麼都不知道。所以,Postgres DBA或者專家給出的大多數建議都是更快的磁碟讀寫或者更好的緩衝。
PostgreSQL的緩衝/緩衝和其它資料庫十分相像並且十分複雜。因為我有Oracle和mindset背景,所以我使用怎麼樣/什麼時候/什麼/為什麼等提問方式,關於資料庫的緩衝緩衝,固定的緩衝,重新整理資料庫緩衝,以及預先載入資料庫等方面,我都是從這種方式獲得答案的,然而這種方式有點與眾不同。儘管我的問題很煩人,但是他們總是耐心的回答,使我明白擴充我的知識,反過來,你才能閱讀這篇博文… ..
在一些學習上,我畫了一幅Postgres中資料在記憶體和磁碟之間傳遞的,以及一些重要的工具和Robert Hass提供的新補丁(pg_prewarm).
pg_buffercache
它是一個contrib模組,它會告訴你什麼是PostgreSQL緩衝。像下面安裝:
postgres=# CREATE EXTENSION pg_buffercache
pgfincore
它有一個顯示資料在作業系統頁面緩衝中資訊的功能。Pgfincore和pg_buffercache聯合會十分方便的。現在,它可以同時獲得PG緩衝和作業系統頁面緩衝資訊。感謝Cerdic Villemain。Pgfincore的主幹是fadvise,fincore,它倆是linux ftools。你可以使用源碼安裝fincore/fadvise。你可以使用pgfincore contrib模組或者ftools,都會產生同樣的結果。我試了兩者,它們都十分簡單優秀。
安裝:
下載最新版本:
http://pgfoundry.org/frs/download.php/3186/pgfincore-v1.1.1.tar.gz使用root使用者:
export PATH=/usr/local/pgsql91/bin:$PATH //設定執行pg_config的路徑
tar -xvf pgfincore-v1.1.1.tar.gz
cd pgfincore-1.1.1
make clean
make
make install現在串連到PG,運行下面的命令:
postgres=# CREATE EXTENSION pgfincore;
pg_prewarm
預先載入關係/索引到PG緩衝中,在PostgreSQL中可能嗎?當然可以了,感謝Robert Hass,他提交一些補丁到社區,期待它能夠在PG 9.2或者PG 9.3中可行。然而,你可以使用這個補丁在PG 9.1做一些測試。
pg_prewarm
有三種模式:
PREFETCH: 非同步擷取資料區塊到作業系統緩衝中,而不是PG緩衝(提示只是作業系統緩衝)
READ:讀取所有的資料區塊到虛擬緩衝中,然後寫到作業系統緩衝中(提示只是作業系統緩衝)
BUFFER:讀取所有的或者一些資料區塊到資料庫緩衝中。
安裝:
我把pg_prewarm補丁加入到PG源碼安裝中,你需要調整你的每步安裝。
解壓PG源碼路徑: /usr/local/src/postgresql-9.1.3
PG安裝路徑: /usr/local/pgsql91
所有下載路徑: /usr/local/src
注意:應用pg_prewarm補丁之前安裝PG
1. 下載補丁,放在/usr/local/src
http://archives.postgresql.org/pgsql-hackers/2012-03/binRVNreQMnK4.bin
補丁附加郵件地址
http://archives.postgresql.org/message-id/CA+TgmobRrRxCO+t6gcQrw_dJw+Uf9ZEdwf9beJnu+RB5TEBjEw@mail.gmail.com
2. 在下載之後,到PG源碼目錄,然後執行下面幾步。
# cd /usr/local/src/postgresql-9.1.3
# patch -p1 < ../pg_prewarm.bin (在下載之後我重新命名了pg_prewarm)
# make -C contrib/pg_prewarm
# make -C contrib/pg_prewarm instal3. 上面的命令會在$PGPATH/contrib/extension目錄裡建立檔案。現在準備添加contrib模組了。
postgres=# create EXTENSION pg_prewarm;
CREATE EXTENSION
postgres=# \dx
List of installed extensions
Name | Version | Schema | Description
----------------+---------+------------+----------------------------------------
pg_buffercache | 1.0 | public | examine the shared buffer cache
pg_prewarm | 1.0 | public | prewarm relation data
pgfincore | 1.1.1 | public | examine and manage the os buffer cache
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(4 rows)文檔:
/usr/local/src/postgres-9.1.3/doc/src/sqml
[root@localhost sgml]# ll pgpre*
-rw-r--r-- 1 root root 2481 Apr 10 10:15 pgprewarm.sgml
dstat
它是vmstat, netstat, top等工具的組合到一起成了一個”dstat”linux命令。當資料庫表現不正常時,從作業系統層級瞭解語句,我們會開啟好幾個終端來顯示進程,記憶體,磁碟讀寫,網路資訊,但是在這些視窗切換是十分痛苦的。所以,dstat有幾個選項來協助顯示所有的命令在一個輸出視窗中。
安裝:
Dstat下載串連:(RHEL 6)
wget http://pkgs.repoforge.org/dstat/dstat-0.7.2-1.el6.rfx.noarch.rpm或者
yum install dstat文檔:http://dag.wieers.com/home-made/dstat/