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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # CLUSTER ## Name CLUSTER?--?根據一個索引對某個表盤簇化排序 ## Synopsis ``` CLUSTER [VERBOSE] _table_name_ [ USING _index_name_ ] CLUSTER [VERBOSE] ``` ## 描述 `CLUSTER`指示PostgreSQL基于索引`_index_name_`的內容對表`_table_name_`進行存儲盤簇化排序。 索引必須已經在表`_table_name_`上定義過的索引。 當對一個表盤簇化排序后,該表的物理存儲將基于索引順序排序。盤簇化是一次性操作:當表將來被更新之后,更改的內容不會被盤簇化排序。 也就是說,系統不會試圖按照索引順序對更新過的記錄重新盤簇化排序。 (如果用戶想要這個效果,可以通過周期性地手工執行該命令的方法重新盤簇化排序。 并且,設置表的`FILLFACTOR`存儲參數為小于100%可以幫助盤簇化排序在更新時排序,因為若有足夠的空間可用,更新的行可以保存在相同的頁面位置。) 在對一個表盤簇化排序之后,PostgreSQL會記憶使用了哪個索引上進行了盤簇化排序。 `CLUSTER` `_table_name_`的形式在表以前進行盤簇化排序的同一個索引上重新盤簇化排序。 也可以用`CLUSTER` 或`SET WITHOUT CLUSTER`形式來設置用于進行盤簇化排序的索引,或清除任何之前的設置。 不含參數的`CLUSTER`會將當前用戶所擁有的當前數據庫中的所有先前進行盤簇化排序的表重新處理,或者如果是超級用戶使用這個命令時,則對所有進行過盤簇化排序表重新處理。 這種形式的`CLUSTER`不能在一個事務里面調用。 在對一個表進行盤簇化排序的時候,會在其上請求一個`ACCESS EXCLUSIVE`鎖。這樣就避免了在`CLUSTER`完成之前執行任何其它的數據庫操作(包括讀寫)。 ## 參數 `_table_name_` 表的名稱(可以有模式修飾)。 `_index_name_` 一個索引名稱。 `VERBOSE` 當每一個表進行盤簇化排序時打印一個處理情況報告。 ## 注意 如果你只是隨機的訪問表中的行,那么表中數據的實際存儲順序是無關緊要的。 但是,如果對某些特定數據的訪問較多,而且有一個索引將這些數據分組,那么使用`CLUSTER`會非常有益處。 如果從一個表中請求一定索引范圍的值,或者是一個索引值對應多行,`CLUSTER`也會有助于應用,因為如果索引標識出第一匹配行所在的存儲頁,所有其它行也可能已經在同一個存儲頁里了,這樣便節省了磁盤訪問的時間,加速了查詢。 `CLUSTER`在盤簇化排序的處理過程中,可以按一個索引順序,也可以按一個排序后的順序掃描內容。 它會基于查詢規劃器的成本參數和表的統計信息選擇一個相對較快的方法。 `CLUSTER`在盤簇化排序的處理過程中,系統先創建一個按照索引順序建立的表的臨時拷貝。同時也建立表上的每個索引的臨時拷貝。 因此,需要磁盤上有足夠的剩余空間,至少是表大小和索引大小的和。 當使用順序掃描和排序操作時,系統會創建臨時排序文件,這樣極端情況下,磁盤空間會需要至少約2倍的表大小和索引大小。 這個方法一般比使用索引的方法要快一點,但如果對磁盤空間的要求不可接受,可以臨時設置[enable_sort](#calibre_link-1611) 為 `off`來禁用這個選擇。 建議在執行盤簇化排序前,將[maintenance_work_mem](#calibre_link-1150)參數設置為一個合理的較大數值(但不要超過可以保留給`CLUSTER`使用的內存大小)。 因為規劃器記錄著有關表的排序的統計,所以建議在最近盤簇化排序后的表上運行[ANALYZE](#calibre_link-589)。否則,規劃器可能會選擇很差勁的查詢規劃。 因為`CLUSTER`記錄著哪些索引用于過盤簇化排序,所以用戶可以第一次手工指定表使用指定索引進行盤簇化排序,以后設置一個周期化執行的維護腳本,只需執行不帶參數的`CLUSTER`命令,即可實現對想要周期性盤簇化排序的表進行自動更新。 ## 例子 按照索引`employees_ind`的順序對`employees`表進行盤簇化排序: ``` CLUSTER employees USING employees_ind; ``` 使用以前用過的同一個索引對`employees`表進行盤簇化排序: ``` CLUSTER employees; ``` 對以前盤簇化排序過的所有表進行重新盤簇化排序: ``` CLUSTER; ``` ## 兼容性 SQL標準里沒有`CLUSTER`語句。 ``` CLUSTER _index_name_ ON _table_name_ ``` 的語法也兼容PostgreSQL 8.3之前的版本 ## 參見 [clusterdb](#calibre_link-1612)
                  <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>

                              哎呀哎呀视频在线观看