2011-03-07 50 views
1

我有一個應用程序,我很快將做一個重要的重寫,它將大量的瞬態斑點存儲在數據庫中。應用程序將在每天的過程中插入並刪除大量的斑點(每個斑點最多5MB)。目前,該應用程序使用非常舊的PostgreSQL版本(7.3.x)。使用這個版本的PostgreSQL,我們必須定期運行外部真空處理來控制數據庫的大小,另外這個過程需要關閉應用程序才能正常運行。PostgreSQL vs MySQL用於處理插入/刪除大量的斑點

我們正在研究升級到最新的PostgreSQL或遷移到另一個數據庫。具體而言,我們有興趣遷移到MySQL。我想知道這裏的任何人是否熟悉這些服務器的最新版本的blob處理支持,並提供任何建議,哪些人可能對不斷插入和除去blob的應用程序執行最佳操作。兩臺服務器之間的其他功能差異對我們來說不是問題。

我做了一些研究,發現MySQL和PostgreSQL之間有很多功能比較,但沒有真正解決這個問題。我希望這裏的某個人可能對一個或兩個數據庫系統的這方面有一些經驗。

感謝

回答

1

的Postgres 7.x中確實是一個重大的PITA當談到吸塵。 9.0是lot這方面比較好。 autovacuum守護進程可以在每個表的級別上進行配置,因爲我認爲8.3,對於所描述的場景,您可能會對該表格(或涉及多個表格的表格)採取非常積極的措施。

對於是否刪除帶有BLOB(即bytea)列的行,我認爲不重要。特別是因爲blob無論如何都是非線性存儲的(你可能需要爲所謂的TOAST表配置auto-vaccuum守護進程,但我不確定)

問題在於有多少行(佔行總數的百分比),您在表中刪除/更新,而不是每個blob有多大。儘管我喜歡PostgreSQL,但我不得不承認,整個真空主題(即使每個版本變得更容易和更容易)仍然是其最薄弱的一點(以及很多麻煩的來源)。

我無法對MySQL做任何說法,因爲我從未在生產環境中使用它。與你相比,其他功能(旁邊的斑點)重要的足以讓我遠離MySQL - 如果它僅用於許可證。

+1

感謝您的信息。我讀過一些關於自動清理能力的內容。我不會考慮任何需要配置'TOAST'表的過程。 – Michael 2011-03-07 19:59:17

+0

其實我不確定是否需要爲TOAST表格配置它,但它可能是可能的 – 2011-03-07 20:25:49