反范式设计 :空间换时间

    范式化和反范式总结

    1. 性能提升-冗余,缓冲和汇总
    2. 性能提升-计数器表
    3. 反范式化设计-分库分表中的查询

    在高并发的情况下,不使用第三方插件,比如redis,单纯使用数据库的话,可以考虑使用队列和本地缓冲
    并发编程 cmap longAddr(原子类) atomiclong/interger
    槽位 redis hotkey
    写热点,本质

    字段类型优化
    基本原则

    1. 更小的通常更好
    2. 简单就好
    3. 尽量避免null

    具体字段辨析

    1. int/整数类型
    2. 实数类型
    3. 字符串类型
      • varchar
      • char
      • blob和text类型
    4. 必要时,使用枚举代替字符串
    5. 日前和时间类型

    float 4字节
    dobuble 8字节
    decimal 可以存放65个数字

    推荐命名规范
    遵守可读性原则

    1. 必须使用小写字母或数字
    2. 不使用复数名词
    3. 禁用保留字

    命名能够描述它所表示的对象
    索引命名

    什么是索引?
    索引是帮助mysql高效获取数据的数据结构
    索引的本质:索引是数据结构
    索引的作用:高效获取数据

    Innodb存储引擎支持以下几种常见的索引:B+树索引、全文索引、哈希索引(内部)其中比较关键的是B+树索引
    为什么hashmap不适合mysql索引,因为hash只适合匹配,hash是范围查找,没法排序
    hash冲突,连表+数据结构
    B+Tree
    B+树索引是传统意义上的索引,这是目前关系型数据库中查找比较常用和最有效的索引
    B+树是用过二叉查找树,再由平衡二叉树,B树演化而来
    二分查找
    二分查找时间复杂度

    平衡二叉查找树:俩边的子树,相差值不能超过1
    B+树,由B树演变而来