<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] > [home](https://www.pgpool.net/docs/pgpool-II-3.5.4/doc/pgpool-zh_cn.html#memqcache) ## 概述 * **連接池** pgpool-II 保持已經連接到 PostgreSQL 服務器的連接, 并在使用相同參數(例如:用戶名,數據庫,協議版本) 連接進來時重用它們。 它減少了連接開銷,并增加了系統的總體吞吐量。 * **復制** pgpool-II 可以管理多個 PostgreSQL 服務器。 激活復制功能并使在2臺或者更多 PostgreSQL 節點中建立一個實時備份成為可能, 這樣,如果其中一臺節點失效,服務可以不被中斷繼續運行。 * **負載均衡** 如果數據庫進行了復制(可能運行在復制模式或者主備模式下), 則在任何一臺服務器中執行一個 SELECT 查詢將返回相同的結果。 pgpool-II 利用了復制的功能以降低每臺 PostgreSQL 服務器的負載。 它通過分發 SELECT 查詢到所有可用的服務器中,增強了系統的整體吞吐量。 在理想的情況下,讀性能應該和 PostgreSQL 服務器的數量成正比。 負載均很功能在有大量用戶同時執行很多只讀查詢的場景中工作的效果最好。 * **限制超過限度的連接** PostgreSQL 會限制當前的最大連接數,當到達這個數量時,新的連接將被拒絕。 增加這個最大連接數會增加資源消耗并且對系統的全局性能有一定的負面影響。 pgpool-II 也支持限制最大連接數,但它的做法是將連接放入隊列,而不是立即返回一個錯誤。 * **緩存查詢結果** pgpool 可用于緩存查詢結果,并且支持內存行和mamache 注意事項 - 不支持windows ## 安裝 ``` ./configure --prefix=path --with-pgsql=path PostgreSQL 的客戶端庫安裝的頂層目錄。默認值由 pg_config 提供 --with-openssl pgpool-II 程序將提供 OpenSSL 支持。默認是禁用 OpenSSL 支持的。V2.3 - --with-memcached=path pgpool-II 的二進制程序將使用 memcached 作為 基于內存的查詢緩存。你必須先安裝 libmemcached。 V3.2 - ``` 編譯 ``` make make install ``` ## 安裝依賴插件 ### pgpool_regclass 如果你在使用 PostgreSQL 8.0 或之后的版本,強烈推薦在需要訪問的 PostgreSQL 中安裝 pgpool_regclass 函數,因為它被 pgpool-II 內部使用。 如果不這樣做,在不同的 schema 中處理相同的表名會出現問題(臨時表不會出問題 ``` $ cd pgpool-II-x.x.x/sql/pgpool-regclass $ make $ make install $ psql -f pgpool-regclass.sql template1 ``` > 應在每臺通過 pgpool-II 訪問的數據庫中執行 pgpool-regclass.sql 或者 CREATE EXTENSION。 你不需要在你執行“psql -f pgpool-regclass.sql template1” 或者 CREATE EXTENSION 后建立的數據庫中這么做, 因為這個模板數據庫將被克隆成新建的數據庫 ### pgpool_recovery 用于在線恢復 ``` $ cd pgpool-II-x.x.x/sql/pgpool-recovery $ make $ make install $ psql -f pgpool-recovery.sql template1 ``` **配置 pgpool.pg_ctl** ``` $ cat >> /usr/local/pgsql/postgresql.conf pgpool.pg_ctl = '/usr/local/pgsql/bin/pg_ctl' $ pg_ctl reload -D /usr/local/pgsql/data ``` ## 功能 ### 流復制 * 這些查詢只允許被發送到主節點 * INSERT, UPDATE, DELETE, COPY FROM, TRUNCATE, CREATE, DROP, ALTER, COMMENT * SELECT ... FOR SHARE | UPDATE * 在事務隔離級別為 SERIALIZABLE 的 SELECT * 比 ROW EXCLUSIVE MODE 更嚴厲的 LOCK 命令 * DECLARE, FETCH, CLOSE * SHOW * 一些事務相關命令: * BEGIN READ WRITE, START TRANSACTION READ WRITE * SET TRANSACTION READ WRITE, SET SESSION CHARACTERISTICS AS TRANSACTION READ WRITE * SET transaction\_read\_only = off * 兩步提交命令:PREPARE TRANSACTION, COMMIT PREPARED, ROLLBACK PREPARED * LISTEN, UNLISTEN, NOTIFY * VACUUM * 一些序列生成器操作函數(nextval 和 setval) * 大對象建立命令 ### 緩存 基于內存的查詢緩存 **限制** * 基于內存的查詢緩存通過監視 UPDATE,INSERT,ALTER TABLE一類的查詢語句來自動刪除緩存的數據。 但 pgpool-II 無法發現通過觸發器、外鍵和 DROP TABLE CASCADE 產生的非顯式的更新。 你可以通過配置[memqcache\_expire](https://www.pgpool.net/docs/pgpool-II-3.5.4/doc/pgpool-zh_cn.html#MEMQCACHE_EXPIRE)讓 pgpool 在固定時間周期內自動刪除緩存來避免這個問題, 你也可以通過配置[black\_memqcache\_table\_list](https://www.pgpool.net/docs/pgpool-II-3.5.4/doc/pgpool-zh_cn.html#BLACK_MEMQCACHE_TABLE_LIST)來讓 pgpool 的基于內存的緩存忽略指定的表。 * 如果你使用 pgpool-II 的**多個實例**來使用共享內存進行緩存,可能出現一個 pgpool 發現表被更新了因而刪除了緩存,但另一個依舊使用舊的緩存。 對于這種情況,使用 **memcached** 是一個更好的策略。 **啟用基于內存的查詢緩存** 可以是 “shmem”(共享內存) 或者 “memcached” ``` memqcache_method = 'shmem' ``` **基于內存緩存被禁用的情況** * SELECT 語句以 `/\*NO QUERY CACHE\*/` 注釋開始 * SELECT 包含以下表的[black\_memqcache\_table\_list](https://www.pgpool.net/docs/pgpool-II-3.5.4/doc/pgpool-zh_cn.html#BLACK_MEMQCACHE_TABLE_LIST) * SELECT FOR SHARE / UPDATE * SELECT 包含 un-immutable 函數 * SELECT 包含 TEMP TABLE * SELECT 包含 系統對象 * SELECT 包含 VIEW 和 不記錄日志的表。但如果表在[white\_memqcache\_table\_list](https://www.pgpool.net/docs/pgpool-II-3.5.4/doc/pgpool-zh_cn.html#WHITE_MEMQCACHE_TABLE_LIST)中,結果還是會被緩存的。 * SELECT 包含 VIEW * SELECT 在一個被終止的顯示事務中 * SELECT 結果超出[memqcache\_maxcache](https://www.pgpool.net/docs/pgpool-II-3.5.4/doc/pgpool-zh_cn.html#MEMQCACHE_MAXCACHE) **監控緩存 ** ``` 2012-05-01 15:42:09 LOG: pid 20181: query result fetched from cache. statement: select * from t1; pool_status 命令顯示緩存的命中率。 memqcache_stats_start_time | Tue May 1 15:41:59 2012 | Start time of query cache stats memqcache_no_cache_hits | 80471 | Number of SELECTs not hitting query cache memqcache_cache_hits | 36717 | Number of SELECTs hitting query cache 在本例中,你可以通過以下方法計算: (memqcache_cache_hits) / (memqcache_no_cache_hits+memqcache_cache_hits) = 36717 / (36717 + 80471) = 31.3% show pool_cache 也顯示相同的結果。 ```
                  <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>

                              哎呀哎呀视频在线观看