乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      [轉(zhuǎn)帖]超詳細(xì)的PostgreSQL體系結(jié)構(gòu)總結(jié),值得收藏

       印度阿三17 2019-10-09

      超詳細(xì)的PostgreSQL體系結(jié)構(gòu)總結(jié),值得收藏

      https://www.toutiao.com/i6715390855772897800/

      ?

      原創(chuàng)?波波說運(yùn)維?2019-07-26 00:03:00

      概述

      今天本文主要從日志文件、參數(shù)文件、控制文件、數(shù)據(jù)文件、redo日志(WAL)、后臺進(jìn)程這六個方面來介紹一下PostgreSQL的架構(gòu)。


      架構(gòu)

      PostgreSQL的主要架構(gòu)如下:

      超詳細(xì)的PostgreSQL體系結(jié)構(gòu)總結(jié),值得收藏

      ?

      ?


      一、日志文件

      1、日志文件種類

      1)$PGDATA/log 運(yùn)行日志(pg10之前為$PGDATA/pg_log)

      2)$PGDATA/pg_wal 重做日志(pg10之前為$PGDATA/pg_xlog)

      3)$PGDATA/pg_xact 事務(wù)提交日志(pg10之前為$PGDATA/pg_clog)

      4)服務(wù)器日志,可以在啟動的時候指定,比如pg_ctl start -l ./alert.log

      2、 運(yùn)行日志

      運(yùn)行日志主要相關(guān)的參數(shù)如下,默認(rèn)沒有開啟的話沒有l(wèi)og目錄,開啟后會自動生成。

      超詳細(xì)的PostgreSQL體系結(jié)構(gòu)總結(jié),值得收藏

      ?

      超詳細(xì)的PostgreSQL體系結(jié)構(gòu)總結(jié),值得收藏

      ?

      ?

      3、事務(wù)日志pg_xact

      pg_xact是事務(wù)提交日志,記錄了事務(wù)的元數(shù)據(jù)。默認(rèn)開啟。內(nèi)容一般不能直接讀。

      4、 服務(wù)器日志

      如果用pg_ctl啟動的時候沒有指定-l參數(shù)來指定服務(wù)器日志,錯誤可能會輸出到cmd前臺。服務(wù)器日志記錄了數(shù)據(jù)庫的重要信息。

      lsof或許可以過濾出在寫的日志文件

      $lsof -c postgres| grep REG | grep -v /usr | grep -v /dev | grep -v /SYS

      ?


      二、參數(shù)文件

      1、 postgresql.conf

      pg的主要參數(shù)文件,有很詳細(xì)的說明和注釋,和Oracle的pfile,MySQL的my.cnf類似。默認(rèn)在$PGDATA下。很多參數(shù)修改后都需要重啟。9.6之后支持了alter system來修改,修改后的會存在$PGDATA/postgresql.auto.conf下,可以reload或者 restart來使之生效。

      主要的參數(shù)如下:

      超詳細(xì)的PostgreSQL體系結(jié)構(gòu)總結(jié),值得收藏

      ?

      超詳細(xì)的PostgreSQL體系結(jié)構(gòu)總結(jié),值得收藏

      ?

      ?

      2、pg_hba.conf

      這個是黑白名單的設(shè)置。文件里有詳細(xì)的參數(shù)說明,默認(rèn)參數(shù)如下:

      type?列有l(wèi)ocal,host,hostssl,hostnossl四種。local是本地認(rèn)證

      database?可以是all,或者指定的數(shù)據(jù)庫

      user列可以是all,或者具體的用戶

      address?可以是ip或者網(wǎng)段

      method比較重要,有"trust", "reject", "md5", "password", "scram-sha-256", "gss", "sspi", "ident", "peer", "pam", "ldap", "radius" or "cert"這么多可選。trust是免密登錄;reject是黑名單拒絕;md5是加密的密碼;password是沒有加密的密碼;ident是Linux下PostgreSQL默認(rèn)的local認(rèn)證方式,凡是能正確登錄服務(wù)器的操作系統(tǒng)用戶(注:不是數(shù)據(jù)庫用戶)就能使用本用戶映射的數(shù)據(jù)庫用戶不需密碼登錄數(shù)據(jù)庫

      3、 pg_ident.conf

      pg_ident.con是用戶映射配置文件。結(jié)合pg_hba.connf中,method為ident可以用特定的操作系統(tǒng)用戶和指定的數(shù)據(jù)庫用戶登錄數(shù)據(jù)庫。如下:

      pg_ident.conf如下:

      超詳細(xì)的PostgreSQL體系結(jié)構(gòu)總結(jié),值得收藏

      ?

      pg_hba.conf如下:

      超詳細(xì)的PostgreSQL體系結(jié)構(gòu)總結(jié),值得收藏

      ?


      三、控制文件

      1、 控制文件位置

      $PGDATA/global/pg_control

      控制文件在數(shù)據(jù)庫目錄的global目錄下??刂莆募涗浟藬?shù)據(jù)庫的重要信息。

      2、 查看控制文件

      pg_controldata可以查看控制文件的內(nèi)容

      $ pg_controldata $PGDATA
      pg_control version number: 1100
      Catalog version number: 201809051
      Database system identifier: 6684270596680436587 #dbid
      Database cluster state: in production # primary
      pg_control last modified: Thu 16 May 2019 02:26:37 PM CST
      Latest checkpoint location: 0/48812A0
      Latest checkpoint's REDO location: 0/4881268 #redo 位置
      Latest checkpoint's REDO WAL file: 000000010000000000000001 #wal文件號
      Latest checkpoint's TimeLineID: 1
      Latest checkpoint's PrevTimeLineID: 1
      Latest checkpoint's full_page_writes: on
      Latest checkpoint's NextXID: 0:572 #下一個事務(wù)id
      Latest checkpoint's NextOID: 16388 #下一個OID
      .....

      controlfile記錄了數(shù)據(jù)庫運(yùn)行的一些信息,比如數(shù)據(jù)庫id,是否open,wal的位置,checkpoint的位置,等等。controlfile是很重要的文件,數(shù)據(jù)庫部署和調(diào)整。


      四、數(shù)據(jù)文件

      1、page

      pg中,每個索引和表都是一個單獨(dú)的文件,pg中叫做page。默認(rèn)是每個大于1G的page會被分割pg_class.relfilenode.1這樣的文件。

      Page默認(rèn)大小為8KB,最大32KB,一個數(shù)據(jù)塊中可存放多行的數(shù)據(jù)。塊中的結(jié)構(gòu)如下圖:

      超詳細(xì)的PostgreSQL體系結(jié)構(gòu)總結(jié),值得收藏

      ?

      塊頭記錄了如下信息:

      • 塊的checksum值
      • 空閑空間的起始位置和結(jié)束位置
      • 特殊數(shù)據(jù)的起始位置
      • 其他一些信息
      • 行指針是一個32bit的數(shù)字,具體結(jié)構(gòu)如下:
      • 行內(nèi)容的偏移量,占15bit;
      • 指針的標(biāo)記,占2bit;
      • 行內(nèi)容的長度,占15bit。

      行指針中表示行內(nèi)容的偏移量是15bit,能表示的最大偏移量是2^15=32768,因此塊的最大大小是32768,即32KB。

      2、page物理位置

      page的物理位置在$PGDATA/BASE/DATABASE_OID/PG_CLASS.RELFILENODE

      需要注意的是,pg_class.relfilenode類似dba_objects.data_object_id,truncate表之后relfilenode會變。對應(yīng)的物理文件名字也會變。


      五、WAL日志

      1、wal位置

      wal在$PGDATA/pg_wal下。10之前為pg_xlog

      2、wal命名格式

      文件名稱為16進(jìn)制的24個字符組成,每8個字符一組,每組的意義如下

      超詳細(xì)的PostgreSQL體系結(jié)構(gòu)總結(jié),值得收藏

      ?

      3、手動切換WAL日志的命令

      在PG10之前:

      highgo=# select pg_switch_xlog();
      pg_switch_xlog
      ----------------
      0/B000C48
      (1 row)

      在PG10之后:

      highgo=# select pg_switch_wal();
      pg_switch_wal
      ----------------
      0/B000C48
      (1 row)

      六、后臺進(jìn)程

      pg后臺進(jìn)程說明如下:

      超詳細(xì)的PostgreSQL體系結(jié)構(gòu)總結(jié),值得收藏

      ?

      來源:https://www./content-2-496051.html

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多