ann
          冰是沒有未來的,因為它的永恒
          posts - 107,comments - 34,trackbacks - 0
           

          數據庫服務器,應對是高并發的訪問,每天都有大量的讀寫刪除操作。因此,時間一長服務器的內存就耗盡,數據庫的占的空間也很大。為了應對這個情況,我制定兩個常用的維護操作。

          一、注重日常清理(VACUUM;)。因為有大量的更新(update)"刪除(delete)操作,會有大量的空間需要釋放。

          每日執行一次VACUUM,每周訪問量低的時候執行VACUUM FULL;

          語法結構;

          VACUUM [ FULL | FREEZE ] [ VERBOSE ] [ table ]
          VACUUM [ FULL | FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]

          FULL ------選擇"完全"清理,這樣可以恢復更多的空間, 但是花的時間更多并且在表上施加了排它鎖。
          FREEZE ---------選擇激進的元組"凍結"。
          VERBOSE --------- 為每個表打印一份詳細的清理工作報告。
          ANALYZE --------- 更新用于優化器的統計信息,以決定執行查詢的最有效方法
          table ------- 要清理的表的名稱(可以有模式修飾)。缺省時是當前數據庫中的所有表。
          column ---------要分析的具體的列/字段名稱。缺省是所有列/字段。

          VACUUM 回收已刪除元組占據的存儲空間。 在一般的 PostgreSQL 操作里, 那些已經 DELETE 的元組或者被 UPDATE 過后過時的元組是沒有從它們所屬的表中物理刪除的; 在完成 VACUUM 之前它們仍然存在。 因此我們有必須周期地運行 VACUUM, 特別是在常更新的表上,如果沒有參數,VACUUM 處理當前數據庫里每個表, 如果有參數,VACUUM 只處理那個表,簡單的 VACUUM (沒有FULL) 只是簡單地回收空間并且令其可以再次使用;

          VACUUM命令的含義為:垃圾收集以及可選地分析一個數據庫。VACUUM回收已刪除元組占據的存儲空間。在一般的 PostgreSQL 操作里, 那些已經 DELETE 的元組或者被 UPDATE 過后過時的元組是沒有從它們所屬的表中物理刪除的; 在完成 VACUUM 之前它們仍然存在。 由于以下幾個原因,我們必須周期性運行 PostgreSQL 的 VACUUM 命令∶ 1.恢復那些由已更新的或已刪除的行占據的磁盤空間。

          例子:

          #psql -U pgsql dbname
          dbname#VACUUM;

          搞定!

          二、重建索引(REINDEX)

          語法
          REINDEX { INDEX | TABLE | DATABASE | SYSTEM } name [ FORCE ]
          描述
              REINDEX命令用來重建索引。舊的索引將被刪除,重新讀取索引的父表中的數據來重建索引。REINDEX命令不支持并發創建索引的功能。在下面的情況下,應該重建索引:
          ·         一個索引中的數據已被破壞,包含非法的數據。軟件錯誤和硬件問題都會導致索引被損壞。

          ·         索引中包含許多空的或者幾乎是空的數據頁。應該重建索引,回收物理存儲空間。

          ·         該變了索引的存儲參數fillfactor的值,只有重建索引,新的參數值才能完全生效。

          ·         使用CREATE INDEX CONCURRENTLY命令創建索引時遇到錯誤,留下一個非法的索引。

           例子
          (1)重建索引my_index:REINDEX INDEX my_index;
          (2)重建表my_table 上的所有索引:REINDEX TABLE my_table;
           (3)重建數據庫中的所有索引:REINDEX DATABASE broken_db;

          #psql -U pgsql dbname
          dbname#REINDEX DATABASE dbname;


          通過這兩個維護,可以及時釋放廢棄的資源,讓數據庫輕裝運行,速度更快

          posted on 2010-01-07 15:55 冰是沒有未來的,因為它的永恒 閱讀(671) 評論(0)  編輯  收藏 所屬分類: postges database

          當下,把心放下 放下如果是可能的,那一定是在當下,
          不在過去,也不在未來。
          當下放下。唯有活在當下,你的問題才能放下。

          主站蜘蛛池模板: 兖州市| 秀山| 吉隆县| 延寿县| 喀喇| 夏河县| 富蕴县| 太原市| 靖宇县| 沙河市| 唐山市| 犍为县| 汨罗市| 友谊县| 高台县| 邹平县| 鸡东县| 苍溪县| 闸北区| 蓝田县| 罗源县| 安塞县| 林口县| 九寨沟县| 招远市| 清河县| 通许县| 读书| 芜湖县| 屏山县| 汉阴县| 湟源县| 定日县| 喜德县| 布尔津县| 三原县| 眉山市| 汝城县| 象州县| 安福县| 东光县|