反范式设计 :空间换时间
范式化和反范式总结
- 性能提升-冗余,缓冲和汇总
- 性能提升-计数器表
- 反范式化设计-分库分表中的查询
在高并发的情况下,不使用第三方插件,比如redis,单纯使用数据库的话,可以考虑使用队列和本地缓冲
并发编程 cmap longAddr(原子类) atomiclong/interger
槽位 redis hotkey
写热点,本质
字段类型优化
基本原则
- 更小的通常更好
- 简单就好
- 尽量避免null
具体字段辨析
- int/整数类型
- 实数类型
- 字符串类型
- varchar
- char
- blob和text类型
- 必要时,使用枚举代替字符串
- 日前和时间类型
float 4字节
dobuble 8字节
decimal 可以存放65个数字
推荐命名规范
遵守可读性原则
- 必须使用小写字母或数字
- 不使用复数名词
- 禁用保留字
命名能够描述它所表示的对象
索引命名
什么是索引?
索引是帮助mysql高效获取数据的数据结构
索引的本质:索引是数据结构
索引的作用:高效获取数据
Innodb存储引擎支持以下几种常见的索引:B+树索引、全文索引、哈希索引(内部)其中比较关键的是B+树索引
为什么hashmap不适合mysql索引,因为hash只适合匹配,hash是范围查找,没法排序
hash冲突,连表+数据结构
B+Tree
B+树索引是传统意义上的索引,这是目前关系型数据库中查找比较常用和最有效的索引
B+树是用过二叉查找树,再由平衡二叉树,B树演化而来
二分查找
二分查找时间复杂度
平衡二叉查找树:俩边的子树,相差值不能超过1
B+树,由B树演变而来
