知识大全 MySQL schema设计中的陷阱
Posted 结构
篇首语:夫学须志也,才须学也。非学无以广才,非志无以成学。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 MySQL schema设计中的陷阱相关的知识,希望对你有一定的参考价值。
高性能MySQL:MySQL schema设计中的陷阱 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
MySQL schema 设计中的陷阱
虽然有一些普遍的好或坏的设计原则 但也有一些问题是由MySQL 的实现机制导致的 这意味着有可能犯一些只在MySQL 下发生的特定错误 本节我们讨论设计MySQL 的schema 的问题 这也许会帮助你避免这些错误 并且选择在MySQL 特定实现下工作得更好的替代方案
太多的列
MySQL 的存储引擎API 工作时需要在服务器层和存储引擎层之间通过行缓冲格式拷贝数据 然后在服务器层将缓冲内容解码成各个列 从行缓冲中将编码过的列转换成行数据结构的操作代价是非常高的 MyISAM 的定长行结构实际上与服务器层的行结构正好匹配 所以不需要转换 然而 MyISAM 的变长行结构和InnoDB 的行结构则总是需要转换 转换的代价依赖于列的数量 当我们研究一个CPU 占用非常高的案例时 发现客户使用了非常宽的表(数千个字段) 然而只有一小部分列会实际用到 这时转换的代价就非常高 如果计划使用数千个字段 必须意识到服务器的性能运行特征会有一些不同
太多的关联
所谓的 实体 属性 值 (EAV)设计模式是一个常见的糟糕设计模式 尤其是在MySQL 下不能靠谱地工作 MySQL 限制了每个关联操作最多只能有 张表 但是EAV 数据库需要许多自关联 我们见过不少EAV 数据库最后超过了这个限制 事实上在许多关联少于 张表的情况下 解析和优化查询的代价也会成为MySQL的问题 一个粗略的经验法则 如果希望查询执行得快速且并发性好 单个查询最好在 个表以内做关联
全能的枚举
注意防止过度使用枚举(ENUM) 下面是我们见过的一个例子
如果这里真和假两种情况不会同时出现 那么毫无疑问应该使用枚举列代替集合列
非此发明(Not Invent Here)的NULL
我们之前写了避免使用NULL 的好处 并且建议尽可能地考虑替代方案 即使需要存储一个事实上的 空值 到表中时 也不一定非得使用NULL 也许可以使用 某个特殊值 或者空字符串作为代替
但是遵循这个原则也不要走极端 当确实需要表示未知值时也不要害怕使用NULL 在一些场景中 使用NULL 可能会比某个神奇常数更好 从特定类型的值域中选择一个不可能的值 例如用 代表一个未知的整数 可能导致代码复杂很多 并容易引入bug 还可能会让事情变得一团糟 处理NULL 确实不容易 但有时候会比它的替代方案更好
返回目录 高性能MySQL
编辑推荐
ASP NET MVC 框架揭秘
Oracle索引技术
ASP NET开发培训视频教程
cha138/Article/program/MySQL/201311/29680相关参考
“招聘会上往往一个细微的动作就会决定乾坤。”重庆市大中专毕业生就业指导服务中心专家昨日提醒毕业生参加双选会的几条注意事项,提防面试中的非语言陷阱。 握手:这是你与面试官的初次见面
挖空心思设计面试「陷阱」是现代企业人才招聘的一个显著特点。不少公司为了招聘到合格有用的人才,会根据招聘职位的要求,设计一些面试「意外」,以此测出应征面试者的真才实学与自然流露的内心世界,并由此作出取舍
压力面试(stressinterview)是指在有意制造的紧张气氛中提出一连串问题,穷追不舍,直至求职者无法回答,以此观察求职者对压力的承受能力和应变能力。有些考官会先提一个不甚友好的问题,或者劈头浇
getcodesql获得某个存储过程包函数代码脚本 setfeedbackoff setheadingoff settermoutoff setlinesize settrimspool
MYSQL服务维护及应用设计笔记[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
MYSQL服务维护及应用设计笔记[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
压力面试(stressinterview)是指在有意制造的紧张气氛中提出一连串问题,穷追不舍,直至求职者无法回答,以此观察求职者对压力的承受能力和应变能力。有些考官会先提一个不甚友好的问题
看人看相,听话听音。一些精明的主考官在面试时喜欢故意给应征者设下圈套,以声东击西的方式从应征者的回答来判断他的性情、胸怀、为人处世的原则等方面的信息,最后决定录取与否。因此,对于一个应征者来说,能否清
找工作是件苦差事,你不但要使出浑身解数,把自己的从业本事通通展示,而且还要有福尔摩斯的侦探慧眼,识破招聘过程中的种种陷阱,然后再使出穆桂英的破阵本领,来个大破“天门阵”。第一阵:招聘广告中的陷阱布阵法
知识大全 使用impdp复制oracle的schema数据迁移
测试环境: 源windowsoracle 目标windowsoracle &nbs