<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          PgFincorePostgreSQL 內(nèi)存頁管理函數(shù)

          聯(lián)合創(chuàng)作 · 2023-09-30 21:01

          PgFincore 包含一組用于管理 PostgreSQL 內(nèi)存中頁面的函數(shù)。

          使用PostgreSQL,每個(gè)表或索引通常都分成1GB的段,并且每個(gè)段都分為內(nèi)存中的頁面和文件系統(tǒng)的塊。

          這些功能使您可以知道某個(gè)關(guān)系中的哪個(gè)磁盤塊以及多少磁盤塊在操作系統(tǒng)的頁面緩存中。它可以將結(jié)果提供為VarBit,并可以存儲(chǔ)在表中。然后,使用此表,由于流復(fù)制,甚至在其他服務(wù)器中,也可以為該關(guān)系的每個(gè)塊恢復(fù)頁面緩存狀態(tài)。

          其他功能用于在整個(gè)關(guān)系(每個(gè)段)上設(shè)置POSIX_FADVISE標(biāo)志。比較有用的可能是WILLNEEDDONTNEED,它們分別從頁面緩存中推入和彈出關(guān)系的每個(gè)段。

          至少使用表名或索引名(或oid)作為參數(shù)調(diào)用每個(gè)函數(shù),并遍歷關(guān)系的每個(gè)段。

          安裝

          從源代碼:

          make clean
          make
          su
          make install
          

          對(duì)于PostgreSQL> = 9.1,登錄數(shù)據(jù)庫并:

          mydb=# CREATE EXTENSION pgfincore;
          

          對(duì)于其他發(fā)行版,請(qǐng)從sql腳本創(chuàng)建函數(shù)(它應(yīng)該在contrib目錄中):

          psql mydb -f pgfincore.sql
          

          PgFincore還隨附Debian腳本來構(gòu)建您自己的軟件包:

          aptitude install debhelper postgresql-server-dev-all postgresql-server-dev-9.1
          # or postgresql-server-dev-8.4|postgresql-server-dev-9.0
          make deb
          dpkg -i ../postgresql-9.1-pgfincore_1.1.1-1_amd64.deb
          

          PgFincore 在http://yum.postgresql.org/上用于RPM打包 。PgFincore 在http://pgapt.debian.net/上用于debian打包。

           

          以下是一些用法示例。如果您想了解更多詳細(xì)信息,請(qǐng)?jiān)L問Documentation_

          獲取關(guān)系的當(dāng)前狀態(tài)

          可能有用:

          cedric=# select * from pgfincore('pgbench_accounts');
                relpath       | segment | os_page_size | rel_os_pages | pages_mem | group_mem | os_pages_free | databit | pages_dirty | group_dirty 
          --------------------+---------+--------------+--------------+-----------+-----------+---------------+---------+-------------+-------------
           base/11874/16447   |       0 |         4096 |       262144 |    262144 |         1 |         81016 |         |           0 |           0
           base/11874/16447.1 |       1 |         4096 |        65726 |     65726 |         1 |         81016 |         |           0 |           0
          (2 rows)
          
          Time: 31.563 ms
          

          在OS頁面緩沖區(qū)中加載表或索引

          您可能希望嘗試在OS頁面緩存中保留一個(gè)表或索引,或者在執(zhí)行眾所周知的大查詢之前減少表的裝載時(shí)間(減少查詢時(shí)間)。

          為此,只需執(zhí)行以下查詢:

          cedric=# select * from pgfadvise_willneed('pgbench_accounts');
                relpath       | os_page_size | rel_os_pages | os_pages_free 
          --------------------+--------------+--------------+---------------
           base/11874/16447   |         4096 |       262144 |        169138
           base/11874/16447.1 |         4096 |        65726 |        103352
          (2 rows)
           
          Time: 4462,936 ms
          
          • os_page_size報(bào)告頁面大小為4KB。
          • rel_os_pages列是指定文件的頁數(shù)。
          • os_pages_free是內(nèi)存(用于緩存)中的可用頁數(shù)。

          快照和還原表或索引(或更多)的OS頁緩沖區(qū)狀態(tài)

          您可能希望像執(zhí)行快照一樣將表或索引還原到OS頁面緩存中。例如,如果您必須重新引導(dǎo)服務(wù)器,則PostgreSQL啟動(dòng)時(shí),第一個(gè)查詢可能會(huì)變慢,因?yàn)镻ostgreSQL或OS都沒有在各自的緩存中包含有關(guān)這些第一個(gè)查詢所涉及的關(guān)系的頁面。

          執(zhí)行快照和還原非常簡(jiǎn)單:

          -- Snapshot
          cedric=# create table pgfincore_snapshot as
          cedric-#   select 'pgbench_accounts'::text as relname,*,now() as date_snapshot
          cedric-#   from pgfincore('pgbench_accounts',true);
          
          -- Restore
          cedric=# select * from pgfadvise_loader('pgbench_accounts', 0, true, true,
                                 (select databit from  pgfincore_snapshot
                                  where relname='pgbench_accounts' and segment = 0));
               relpath      | os_page_size | os_pages_free | pages_loaded | pages_unloaded 
          ------------------+--------------+---------------+--------------+----------------
           base/11874/16447 |         4096 |         80867 |       262144 |              0
          (1 row)
          
          Time: 35.349 ms
          
          • pages_loaded列報(bào)告已將多少頁讀取到內(nèi)存中(它們可能已經(jīng)存儲(chǔ)在備忘錄中)
          • pages_unloaded列報(bào)告從內(nèi)存中刪除了多少頁(它們可能尚未存儲(chǔ)在備忘錄中);
          瀏覽 17
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  999久久 | 爱草综合| 波多野结衣一品二品免费观看AV | 爱爱视频免费看 | 五月丁香色色激情综合 |