Mysql schema设计中的缺陷
Posted 重学计算机
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql schema设计中的缺陷相关的知识,希望对你有一定的参考价值。
太多的列
太多的关联
全能的枚举
变相的枚举
非此发明的NULL
1、太多的列
从行缓冲中将编码过的列转换成行数据结构的操作代价是非常高的
2、太多的关联
EAV设计模式 - 实体(Entity)-属性(Attribute)-值(Value)是一个糟糕的设计模式,在mysql下不能靠谱的工作。Mysql限制了最多只能61张表,但是EVA数据库需要许多自关联。
如果希望查询执行的快速且并发性好的,单个查询最好在12个表以内。
3、全能的枚举
避免将一些可能涉及多个值的字段,用枚举来设计,这样如果要扩展,将是一个很糟糕的设计,因为每一次都是需要做一次ALTER TABLE,在早期版本,这个操作是阻塞的。
这种可以用整数作为外键关联到字典表活着查找表来查找具体的值
4、变相的枚举
枚举列允许在列中存储一组定义值中的单个值,集合(set)列则允许在列中存储一组定义值中的一个或者多个值,有时这会造成混乱。
如果这里真和假不会同时出现,那么毫无疑问应该使用枚举列替代集合列
5、非此发明的NULL
如果一定要存储一个“空值” 不一定非得使用null,也可以是0,某个特殊值,或者空字符串替代,但是还是要看场景,替代方案收益大,就用替代方案,不行也可以使用null
下一节 范式和反范式
以上是关于Mysql schema设计中的缺陷的主要内容,如果未能解决你的问题,请参考以下文章
MySQL Schema设计一个MySQL里的JQuery:common_schema (先存着)
MySQL Schema设计利用Python操作Schema
MySQL 数据库 Schema 设计的性能优化①:高效的模型设计