zoukankan      html  css  js  c++  java
  • 查看字段postgresql pg_buffercache

    废话就不多说了,开始。。。

        pg_buffercache块模是用于查看shared buffer cache信息,定决shared buffer cache大还是小。

        Installing pg_buffercache into a database:

        $ createdb pgbench
    $ psql -d pgbench -f /usr/share/postgresql/contrib/pg_buffercache.sql

        两步便可成完

        pg_buffercache.sql内容:

        /* contrib/pg_buffercache/pg_buffercache--1.0.sql */

        -- complain if script is sourced in psql, rather than via CREATE EXTENSION
    \echo Use "CREATE EXTENSION pg_buffercache" to load this file. \quit

        -- Register the function.
    CREATE FUNCTION pg_buffercache_pages()
    RETURNS SETOF RECORD
    AS 'MODULE_PATHNAME', 'pg_buffercache_pages'
    LANGUAGE C;

        -- Create a view for convenient access.
    CREATE VIEW pg_buffercache AS
            SELECT P.* FROM pg_buffercache_pages() AS P
            (bufferid integer, relfilenode oid, reltablespace oid, reldatabase oid,
             relforknumber int2, relblocknumber int8, isdirty bool, usagecount int2);

        -- Don't want these to be available to public.
    REVOKE ALL ON FUNCTION pg_buffercache_pages() FROM PUBLIC;
    REVOKE ALL ON pg_buffercache FROM PUBLIC;

        建创函数和图视,收回PUBLIC 权限。

        

    Name Type References Description
    bufferid integer   ID, in the range 1..shared_buffers
    relfilenode oid pg_class.relfilenode Filenode number of the relation
    reltablespace oid pg_tablespace.oid Tablespace OID of the relation
    reldatabase oid pg_database.oid Database OID of the relation
    relblocknumber bigint   Page number within the relation
    relforknumber smallint   Fork number within the relation
    isdirty boolean   Is the page dirty?
    usagecount smallint   Page LRU count
        每日一道理
    风,渐渐吹起,吹乱了我的发丝,也让我的长裙有些飘动。绿叶仿佛在风中起舞,离开了树,投向了大地,却不知这样会枯萎,我弯下腰,轻轻拾起一片树叶,那非常有序的茎脉,是一种美的点缀。我有些哀叹:绿叶啊,绿叶,你这般美丽地从树上轻轻飘下,随风起舞,却不知已被人称之为落叶!

        pg_buffercache应用:

        查看shared buffers小大:

        postgres=# SELECT name,setting,unit,current_setting(name) FROM pg_settings WHERE name='shared_buffers';
          name      | setting | unit | current_setting 
    ----------------+---------+------+-----------------
     shared_buffers | 4096    | 8kB  | 32MB
    (1 row)

        postgres=# select count(*) from pg_buffercache;

     count 
    -------
      4096
    (1 row)

        可见block量数分歧,小大分歧。

        查看以后数据库buffer的应用情况排名:

        SELECT
    c.relname,
    count(*) AS buffers
    FROM pg_class c
    INNER JOIN pg_buffercache b
    ON b.relfilenode=c.relfilenode
    INNER JOIN pg_database d
    ON (b.reldatabase=d.oid AND d.datname=current_database())
    GROUP BY c.relname
    ORDER BY 2 DESC
    LIMIT 10;

              relname          | buffers 
    ---------------------------+---------
     pg_statistic              |      15
     pg_operator               |      13
     pg_depend_reference_index |      13
     pg_depend                 |      13
     pg_rewrite                |       8
     pg_depend_depender_index  |       6
     pg_toast_2619             |       6
     pg_index                  |       6
     pg_extension              |       5
     pg_namespace              |       5
    (10 rows)

        应用pg_buffercache较比灵巧,可以通过isdirty字段询查脏块,如果是未应用的buffer,那么除了bufferid,其他字段都为空值。

        select count(*) from pg_buffercache where isdirty is true;

        select count(*)*8/1024||'MB' from pg_buffercache where relfilenode is null and reltablespace is null and reldatabase is null and relforknumber is null and relblocknumber is null and isdirty is null and usagecount is null;

        查看buffercache对象的应用小大以及百分比

        SELECT
    c.relname,
    pg_size_pretty(count(*) * 8192) as buffered,
    round(100.0 * count(*) /
    (SELECT setting FROM pg_settings
    WHERE name='shared_buffers')::integer,1)
    AS buffers_percent,
    round(100.0 * count(*) * 8192 /
    pg_relation_size(c.oid),1)
    AS percent_of_relation
    FROM pg_class c
    INNER JOIN pg_buffercache b
    ON b.relfilenode = c.relfilenode
    INNER JOIN pg_database d
    ON (b.reldatabase = d.oid AND d.datname = current_database())
    GROUP BY c.oid,c.relname
    ORDER BY 3 DESC
    LIMIT 10;

                 relname              | buffered | buffers_percent | percent_of_relation 
    ----------------------------------+----------+-----------------+---------------------
     pg_statistic                     | 120 kB   |             0.4 |               100.0
     pg_depend                        | 104 kB   |             0.3 |                29.5
     pg_operator                      | 104 kB   |             0.3 |               100.0
     pg_depend_reference_index        | 104 kB   |             0.3 |                50.0
     pg_rewrite                       | 64 kB    |             0.2 |                66.7
     pg_operator_oid_index            | 32 kB    |             0.1 |               100.0
     pg_statistic_relid_att_inh_index | 32 kB    |             0.1 |               100.0
     pg_operator_oprname_l_r_n_index  | 40 kB    |             0.1 |               100.0
     pg_depend_depender_index         | 48 kB    |             0.1 |                22.2
     pg_amop_fam_strat_index          | 32 kB    |             0.1 |               100.0

        缓冲区应用分布:

        SELECT
    c.relname, count(*) AS buffers,usagecount
    FROM pg_class c
    INNER JOIN pg_buffercache b
    ON b.relfilenode = c.relfilenode
    INNER JOIN pg_database d
    ON (b.reldatabase = d.oid AND d.datname = current_database())
    GROUP BY c.relname,usagecount
    ORDER BY c.relname,usagecount;

                 relname              | buffers | usagecount 
    -----------------------------------+---------+------------
     pg_aggregate                      |       1 |          5
     pg_aggregate_fnoid_index          |       1 |          4
     pg_aggregate_fnoid_index          |       1 |          5
     pg_am                             |       1 |          5
     pg_amop                           |       3 |          5
     pg_amop_fam_strat_index           |       1 |          1
     pg_amop_fam_strat_index           |       3 |          5
     pg_amop_opr_fam_index             |       3 |          5
     pg_amproc                         |       1 |          4
     pg_amproc                         |       1 |          5
     pg_amproc_fam_proc_index          |       2 |          5
     pg_attrdef                        |       1 |          3
     pg_attrdef_adrelid_adnum_index    |       2 |          3
     pg_attrdef_oid_index              |       1 |          1
     pg_attrdef_oid_index              |       1 |          2
     pg_cast                           |       2 |          5
     pg_cast_source_target_index       |       2 |          5
     pg_collation                      |       1 |          1
     pg_collation_oid_index            |       1 |          3
     pg_collation_oid_index            |       2 |          5
     pg_constraint                     |       1 |          1
     pg_default_acl_role_nsp_obj_index |       1 |          5
     pg_depend                         |       3 |          1
     pg_depend                         |       1 |          2
     pg_depend                         |       9 |          5
     pg_depend_depender_index          |       1 |          4
     pg_depend_depender_index          |       5 |          5
     pg_depend_reference_index         |       2 |          1
     pg_depend_reference_index         |       1 |          2
     pg_depend_reference_index         |       1 |          4
     pg_depend_reference_index         |       9 |          5

        太长这里截取部分。

    文章结束给大家分享下程序员的一些笑话语录: Borland说我很有前途,Sun笑了;Sun说我很有钱,IBM笑了;IBM说我很专业,Sybase笑了;Sybase说我数据库很牛,Oracle笑了;Oracle说我是开放的,Linux笑了;Linux说我要打败Unix,微软笑了;微软说我的系统很稳定,我们都笑了。

  • 相关阅读:
    BZOJ 4032: [HEOI2015]最短不公共子串 (dp*3 + SAM)
    后缀自动机详解!
    BZOJ 3926: [Zjoi2015]诸神眷顾的幻想乡(广义后缀自动机 多串)
    BZOJ 3938 Robot
    [JSOI2008]Blue Mary开公司
    [ZJOI2017]树状数组
    [JSOI2015]非诚勿扰
    [HNOI2011]任务调度
    BZOJ 3680 吊打XXX
    POJ 3318 Matrix Multiplication
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3065329.html
Copyright © 2011-2022 走看看