2016-04-29 61 views
0

我必須對postgres數據庫執行每月維護。
我油灰到系統中,導航到數據庫,然後運行對40頁不同的表3個命令:我可以編寫我每月的postgres維護嗎?

CLUSTER [table1] USING [primarykey]; 
ANALYZE [table1]; 
REINDEX TABLE [table1]; 

我不得不等待每個命令執行完畢之前,我可以運行下一個(即CLUSTER,等待幾分鐘 - ANALYZE等待 - ,REINDEX等待 - )


這樣做很簡單,但需要大約30-45分鐘的時間才能複製和粘貼120行,一行時間...有什麼辦法可以自動化這個過程嗎?
我對腳本沒有經驗,對於postgreSQL我知之甚少。

我的問題有點獨特,因爲我無法在postgreSQL數據庫中安裝任何東西。我希望將此腳本本地化到我的計算機上,然後在維護時能夠運行它。

+0

[PostgreSQL中的事件調度器?]可能的重複?(http://stackoverflow.com/questions/6839469/event-scheduler-in-postgresql) –

+1

任何不使用cron的理由? –

+0

@PeterEisentraut我不知道那是什麼,但我即將谷歌!從你的陳述中,我認爲我可以用cron – z0nia

回答

0
  1. 集羣會自動重新建立索引表的索引。在對其進行羣集後,沒有理由立即對錶進行重新索引。
  2. 你真的需要做這個東西嗎?你有證據表明你的表需要集羣嗎?或者你只是假設他們的確是因爲你從互聯網上讀到的東西,指的是由一個不知道他們首先討論的內容的人編寫的十年前的PostgreSQL版本?你可能真的會從中受益。更不可能的是,這只是浪費時間。
  3. 如果您對腳本一無所知,那麼您需要了解一些關於腳本的知識。您應該將您的帖子標記爲腳本,無論您使用哪種shell /語言。

在覈心部分,您所要做的就是編寫一系列要從命令行執行的命令,並將它們推送到文本文件中。最簡單的方法可能是在本地計算機上安裝psql,如果它尚未存在。

psql -c 'cluster foobar' -h thehost.example.com 
psql -c 'analyze foobar' -h thehost.example.com 

您可能需要做一些配置,使與任何身份驗證方法必須到位這方面的工作,但不知道是我不能進一步置評其身份驗證方法。

如果集羣出於某種原因失敗,沒有理由繼續嘗試分析它。 (但這樣做也沒有什麼壞處)。如果你想微調這種情況,有很多種方法可以做到這一點,這取決於你正在編寫腳本的shell以及你想要做什麼。

+0

做到這一點,謝謝你的第一個提示,我不再重新索引。關於你的第二點,我不知道這是否是100%必要的,但它是由系統的支持團隊推薦的。這種自動化是否可以通過puTTy來實現? – z0nia

相關問題