2-26 数据库设计对性能的影响

1.一个表太多的列,过分反范式

因为mysql服务层 搜索引擎层是分离的,
之间通过缓冲格式来拷贝数据.然后在服务层在缓冲层把缓存的数据解析成列,这是一笔大开销,列越多开销越大

2.太多表关联.过分范式化

表关联成本高,关联越多越高
关联表不能超过10个,经常关联的2个表可以合并成一个大表,适当反范式

3.OLTP环境,分区表

分区表 物理存储上 把一个大表按分区键 分成几个小表,
和分库分表不同,分库分表逻辑也变了,一般也不在一个数据库实例下了
分区在同一个数据库上进行,只物理存储上分成几个小表,使用逻辑上不变 还是一个表
分区键选择不好,就会跨分区查询,反而降低性能
OLAP比较适合分区.或者日志类表

4.使用外键

外键可以保证数据完整性,但是效率低,更新时会对外键检查,带来额外锁的开销
备份/恢复/手动归档 都会有问题
自从复制的情况下 对大表的数据清理的 复杂度会很高
所以就不该用外键,而是使用索引

你可能感兴趣的:(2-26 数据库设计对性能的影响)