2014-02-12 23 views
1

我們有一個數據庫表,它跟蹤對長字符串的更改以進行審計。這些數據與bzip等壓縮得很好,因爲這些行共享了很多文本。當用MySQL壓縮表時數據壓縮得不是很好,而且我認爲這是因爲MySQL使用的壓縮只會壓縮單個行中的重複內容。壓縮MySQL中行之間共享的數據

有沒有辦法在MySQL中透明地壓縮行信息,其中重複主要是在行之間而不是在單行中?

+1

不是如果你想再次查詢表。但是對於存儲,當然,通常只需要轉儲或數據文件(在MySQL中導入InnoDB .ibd文件雖然有點麻煩,但工作量很大)。你存儲什麼,數據的_new_數據或增量_diffs_? – Wrikken

+0

我們存儲舊數據的完整副本,而不是差異。 – Phyxx

+0

那麼,在那裏獲得很多......當然,在某個時間點獲取數據需要更多的資源,但通常這些類型的審計表使用的存儲優勢超過了這些。如果持續不斷的「審計」,那麼它將不那麼有吸引力。您還可以設計一個最多使用N個增量差異的模式,之後再次使用中間數據的完整副本,這樣可以減少一些額外的存儲空間,但會阻止長時間重建特定數據。 – Wrikken

回答

0

查看文檔,似乎最好的辦法是將歷史審計數據放入壓縮的只讀表中,並將其與可接受新內容的新表合併。這將是一個將舊數據移動到壓縮表的手動過程,但它可以讓我們壓縮所有行。