zoukankan      html  css  js  c++  java
  • MySQL之 schema设计中的陷阱

    > 本节内容总结自《High Performance MySQL》

    设计MySQL应该注意以下几点:

    1. 避免太多的列:MySQL的存储引擎API工作时需要在服务器层和存储引擎层之间通过行缓冲格式拷贝数据,然后在服务器层将缓冲内容解码成各个列。从行缓冲中将编码过的列转码成行数据结构的操作代价是非常高的。MyISAM和InnoDB的行结构总是需要转换,转换的代价依赖于列的数量。
    2. 避免太多的表关联:一个粗略的经验法则,如果希望查询执行的快速且并发性很好,单个查询最好在12个表以内做关联。
    3. 避免过度使用枚举:仔细考虑是否需要使用枚举,如果不是在枚举列表的末尾增加值中要做一次ALTER TABLE操作。
    4. 避免变相使用枚举:枚举列允许在列中存储一组定义值的单个值,集合列则允许在列中存储一组定义之中的一个或多个值,要注意选择合适的类型。
    5. 避免使用一些奇怪的值代替NULL:在列中使用NOT NULL是高效的,即使需要存储一个事实上的空值也不一定要使用NULL,可以使用一些特殊的不可能出现的数字或空字符串代替。但是遵循这个原则也不要走极端。当确实需要表示未知值时也不要害怕使用NULL,因为一些未知的数字有可能导致代码复杂很多,并容易引入bug。

    时间并不会因为你的迷茫和迟疑而停留,就在你看这篇文章的同时,不知道有多少人在冥思苦想,在为算法废寝忘食,不知道有多少人在狂热地拍着代码,不知道又有多少提交一遍又一遍地刷新着OJ的status页面…… 没有谁生来就是神牛,而千里之行,始于足下!
  • 相关阅读:
    css浏览器兼容问题集锦
    【转】H264编码原理以及I帧B帧P帧
    Makefile Shell 脚本;sed命令
    oProfile 学习
    C++ 局部变量的析构
    【转】C++ 单例模式
    C++ operator 知识点 2
    C++ operator 知识点
    218多校第九场 HDU 6424 (数学)
    2018多校第九场 HDU 6416 (DP+前缀和优化)
  • 原文地址:https://www.cnblogs.com/bianjunting/p/14344211.html
Copyright © 2011-2022 走看看