您好:
如果每天隨時都有新增的資料 (一個月大約新增一億筆左右),適合用 MySQL 的 innodb 引擎資料庫 , 還是 PostgreSQL ?
我看了一下 MySQL 的相關資料,如果經常會有新增、修改、刪除的話,必須定時去做 Check Table 和 optimize table ,而且執行這兩個指令的時候,資料表無法 新增、修改、刪除資料。 如果資料筆數多的時候等於要停機很久一段時間。
之前用過 MS-SQL 好像沒有一定需要做這種類似重整或優化的作業。
PostgreSQL 遇到像這種 隨時都有新增、查詢的資料表有沒有甚麼情況是需要做這種可能會停機很久的維護?
感謝您的回覆,謝謝。
一億筆資料?
是一個字母或數字就是一筆!還是如 ERP 中整份訂單資料為一筆!
就安全性、管理性、維護性,你的狀況建議改用 Oracle 還是妥當些
大量刪除,會讓你的dead_tup變多,
PostgreSQL 有 autovacuum功能, 觸發條件可以自己調整筆數或比例,
也可以為特定table設置不用全域。
普通 vacuum透過手動或autovacuum去做 ,如果是手動執行full vacuum 就需要停用,
不過這種等級的資料與異動量,
預設值是不太好的,硬體資源也要充沛,worker的數量跟資源調整...等細項參數就顯得重要
經驗不夠就要常常觀察怎麼調整到最後才對自己有利。
查詢可能另外建立Hot Standby Replication,查詢往查Standby Server,或是多掛幾台另外搭建connection pool服務,做性能耗用的分流(讓主資料庫認真做異動類事務)跟連線數紓解。
如果非很精準的及時需求,走async mode(常異動資料且要求極短時間要求資料一致性不適合)。
不然就花錢買oracle企業版+顧問,硬體規也拉高。
(要快就是花錢)
不然嘗試用用noSQL類的資料庫,MongoDB,看看能不能符合使用上的需求,
當然沒用過noSQL,可能初期會很不習慣吃力。
巨量資料用mongodb處理,處理的結果存回SQL DB
這種異質資料庫各取所長的配合方式。