2016-07-26 164 views
2

假設我有一個包含多列的數據庫。在每一列中都有許多值相似的值。數據庫如何處理冗餘值?

例如,我可以有一個名爲「Description」的列,其值可以是「這是測量的描述」。本說明在此欄中最多可以出現1000000次。

我的問題不是我如何優化這個數據庫的設計,而是數據庫如何處理這樣的冗餘值。這些冗餘值是否像完美設計一樣有效地存儲(相對於數據庫的總大小)?如果是這樣,這些值如何壓縮?

回答

2

唯一正確答案是:取決於數據庫和配置。因爲這個沒有銀彈。一些數據庫只存儲每個列的值(一些列存儲等),但從技術上講沒有必要做或不做。

在一些數據庫中,你可以讓數據庫管理系統提出了優化和在這種情況下,它可能提議只保存現有的值,這將字符串減少引用該字符串的ID的ENUM領域。這種「優化」是有代價的,例如,當您要在字段描述中添加一個新值時,您必須修改ENUM字段。

根據實際使用情況,這些優化是不值錢的,或者甚至是一個顯示停止符,例如當數據更改頻繁(插入或更新)時。與實際處理查詢相比,dbms將花費更多的時間來管理唯一性/重複項。

關於壓縮的問題:還取決於配置和數據庫系統我猜,也取決於字段類型。文本數據可以被壓縮,並且在非索引文本字段的情況下,使用簡單的壓縮算法應該幾乎沒有缺點。我懷疑哪種算法取決於dbms和配置。

除非你變得更具體,否則我相信沒有更具體的答案。

+0

謝謝。這意味着額外的配置必須適用於我的情況... – Ohumeronen