<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 58.1\. 數據庫文件布局 本節在文件和目錄的層次上描述存儲格式。 傳統上,數據庫集群所需要的配置和數據文件都存儲在集群的數據目錄里, 通常用環境變量`PGDATA`來引用。(用于定義它的環境變量名稱之后) `PGDATA`的一個常見位值`/var/lib/pgsql/data`。 不同服務器實例管理的多個集群, 可以在同一臺機器上共存。 `PGDATA`目錄包含一些子目錄和控制文件,在[Table 58-1](#calibre_link-2328)中顯示。 除了這些必要的東西外,集群配置文件`postgresql.conf`, `pg_hba.conf`和 `pg_ident.conf`通常都存儲在`PGDATA`這里。 (盡管PostgreSQL 8.0和之后版本中,有可能把它們放在其他地方)。 **Table 58-1\. `PGDATA`內容** | 項 | 描述 | | --- | --- | | `PG_VERSION` | 一個包含PostgreSQL主版本號的文件 | | `base` | 包含與每個數據庫對應的子目錄的子目錄 | | `global` | 包含集群范圍的表的子目錄,比如`pg_database` | | `pg_clog` | 包含事務提交狀態數據的子目錄 | | `pg_multixact` | 包含多重事務狀態數據的子目錄(使用共享的行鎖) | | `pg_notify` | 包含LISTEN/NOTIFY狀態數據的子目錄 | | `pg_serial` | 包含已提交可串行化事務信息的子目錄 | | `pg_snapshots` | 包含輸出快照的子目錄 | | `pg_stat_tmp` | 包含臨時文件的統計子系統的子目錄 | | `pg_subtrans` | 包含子事務狀態數據的子目錄 | | `pg_tblspc` | 包含指向表空間的符號鏈接的子目錄 | | `pg_twophase` | 包含用于預備事務的狀態文件的子目錄 | | `pg_xlog` | 包含WAL(預寫日志)文件的子目錄 | | `postmaster.opts` | 一個記錄服務器最后一次啟動時使用的命令行參數的文件 | | `postmaster.pid` | 一個鎖文件, 記錄著當前服務器主進程ID(PID),集群數據目錄路徑,服務器主起始時間戳,端口號, Unix-域套接目錄路徑(Windows上空),第一個有效listen_address(IP地址或者`*`, 如果不監聽TCP,則為空),以及共享內存段ID, (在服務器關閉之后此文件就不存在了)。 | 對于集群里的每個數據庫,在`PGDATA``/base`里都有對應的一個子目錄, 子目錄的名字是該數據庫在`pg_database`里的OID。 這個子目錄是該數據庫文件的缺省位置;特別值得一提的是, 該數據庫的系統表存儲在此。 每個表和索引都存儲在獨立的文件里,對于普通關系,這些文件 以該表或者該索引的_filenode_號命名, 該號碼可以在`pg_class`.`relfilenode`中找到。 但是對于臨時性關系,文件名稱形式`t``_BBB_`_`_FFF_`, 其中`_BBB_`是創建文件的后端ID,并且`_FFF_`是filenode號。 在任何情況下,除了主文件(a/k/a主叉文件), 每個表和索引有個_自由空間映射_(參閱[Section 58.3](#calibre_link-1512)), 其用來存儲關于在關系中可用的自由空間的信息。 自用空間映射存儲在文件名為filenode編號加上后綴`_fsm`的文件里。 表也有_可見映射_,存儲在一個分叉文件,后綴為`_vm`, 用來跟蹤那些已知沒有死行的頁, 該可見映射在[Section 58.4](#calibre_link-1513)進一步的描述。 未記錄的表和索引有三分之一分支,被稱之為初始化分支,使用后綴`_init` 存儲在分支中(參閱[Section 58.5](#calibre_link-1514))。 | **Caution** | |:--- | | 請注意,雖然一個表的filenode通常和它的OID相同,但實際上并_不_必須如此; 有些操作,比如`TRUNCATE`, `REINDEX`, `CLUSTER` 以及一些特殊的`ALTER TABLE`形式, 都可以改變filenode而同時保留OID。避免假定filenode和表OID相同。 還有,對于某種系統表包括`pg_class`自身, `pg_class`.`relfilenode`包含零。 這些表的實際的filenode編號存儲在低級別的數據結構, 并且可以使用`pg_relation_filenode()`函數獲取。 | 在表或者索引超過1 GB之后,將分割成1GB大小的_段_。 第一個段的文件名和filenode相同; 隨后的段名名為filenode.1, filenode.2 ... 等等。 這樣的安排避免了在某些平臺上的有文件大小限制的問題。 (實際上,1GB只是缺省的段大小。當構建PostgreSQL時, 可以使用配置選項`--with-segsize`調整段大小。) 原則上,自由空間映射和可見映射叉文件可能需要多個段, 盡管這在實踐中不可能發生。 一個表如果有些字段里面可能存儲相當大的數據, 那么就會有個相關聯的_TOAST_表, 用于存儲無法在表的數據行中放置的超大行外數據。 如果有的話,`pg_class`.`reltoastrelid` 從一個表鏈接到它的TOAST表。 參閱[Section 58.2](#calibre_link-80)獲取更多信息。 表的內容和索引在[Section 58.6](#calibre_link-1172)中有討論。 表空間把情況搞得更復雜些。 每個用戶定義的表空間都在`PGDATA``/pg_tblspc`目錄里面有一個符號連接, 它指向物理的表空間目錄(就是在`CREATE TABLESPACE`命令里聲明的那個目錄)。 這個符號連接是用表空間的 OID 命名的。 在物理的表空間目錄內部,有個依賴PostgreSQL服務器版本的命名的子目錄, 如`PG_9.0_201008051`。 (使用這個子目錄的原因是為了讓后續版本的數據庫不產生沖突的情況下, 可以使用相同的`CREATE TABLESPACE`位置值。) 在有指定版本的子目錄里,每個在表空間中有元素的數據庫有個子目錄, 命名為數據庫的OID。表和索引存儲在那個目錄, 使用filenode命名方法。`pg_default`沒有通過`pg_tblspc`關聯, 但是對應`PGDATA``/base`。類似的還有, `pg_global`沒有通過`pg_tblspc`關聯, 而是對應`PGDATA``/global`。 `pg_relation_filepath()`函數用于顯示任何關系的全路徑。(相對于`PGDATA`) 替代記住許多上述規則,它往往是有用的。但是請記住, 這個函數只給了關系主分叉文件的第一部分的名稱—你可能還需要一段 數字和/或`_fsm` or `_vm`用來找到關聯該關系的所有文件。 創建臨時文件(對于操作如更多數據于可適合內存的排序) 在`PGDATA``/base/pgsql_tmp`,或如果表空間不是指定的`pg_default`, 在表空間目錄下的`pgsql_tmp`子目錄。 臨時文件的名表示為`pgsql_tmp``_PPP_`.`_NNN_`, 這里`_PPP_`是后臺擁有的PID和`_NNN_`是后臺來區分不同的臨時文件。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看