2016-07-26 120 views
2

假设我有一个包含多列的数据库。在每一列中都有许多值相似的值。数据库如何处理冗余值?

例如,我可以有一个名为“Description”的列,其值可以是“这是测量的描述”。本说明在此栏中最多可以出现1000000次。

我的问题不是我如何优化这个数据库的设计,而是数据库如何处理这样的冗余值。这些冗余值是否像完美设计一样有效地存储(相对于数据库的总大小)?如果是这样,这些值如何压缩?

回答

2

唯一正确答案是:取决于数据库和配置。因为这个没有银弹。一些数据库只存储每个列的值(一些列存储等),但从技术上讲没有必要做或不做。

在一些数据库中,你可以让数据库管理系统提出了优化和在这种情况下,它可能提议只保存现有的值,这将字符串减少引用该字符串的ID的ENUM领域。这种“优化”是有代价的,例如,当您要在字段描述中添加一个新值时,您必须修改ENUM字段。

根据实际使用情况,这些优化是不值钱的,或者甚至是一个显示停止符,例如当数据更改频繁(插入或更新)时。与实际处理查询相比,dbms将花费更多的时间来管理唯一性/重复项。

关于压缩的问题:还取决于配置和数据库系统我猜,也取决于字段类型。文本数据可以被压缩,并且在非索引文本字段的情况下,使用简单的压缩算法应该几乎没有缺点。我怀疑哪种算法取决于dbms和配置。

除非你变得更具体,否则我相信没有更具体的答案。

+0

谢谢。这意味着额外的配置必须适用于我的情况... – Ohumeronen