Schema优化

范式设计

  • 列不可分
  • 不能传递其他依赖
  • 依赖主键

反范式设计

约定大于规定

主键选择

自然主键

  • 事务属性中自然唯一标识

代理主键

  • 与业务无关,无意义的数字
  • 推荐使用,不与业务耦合,维护成本低
  • 减少需求源码量

字符集选择

  • utf8,只能存储两个字节的汉字
  • 所以需要设置成utf8mb4
  • 纯拉丁字符,选择latin1

存储引擎的选择

InnoDB

  • 表锁,行锁
  • 事务
  • 外键
  • 5.6以后支持全文索引

MyISAM

  • 表锁
  • 全文索引

Memory

不能持久化

适当的数据冗余

被频繁引用且只能通过Join2张大表的方式才能得到的独立小字段

每次join仅仅为了取得某个小字段,join到的记录大,会造成大量io

空间换时间来优化

冗余字段需要同步更新

适当拆分

垂直拆分

拆分字段

水平拆分

拆分行数据

论读书
睁开眼,书在面前
闭上眼,书在心里
原文地址:https://www.cnblogs.com/YC-L/p/14461339.html