数据库的分表策略
- 垂直切分(纵向)
垂直切分常见的有垂直分库和垂直分表;
垂直分库:
就是根据业务的耦合性,将关系度低的不同表存储在不同的数据库。按业务进行独立的划分。
垂直分表:
基于数据库中的列进行,某个表字段较多,可以新建一张扩展表,将不经常用或字段长度较大的字段拆分出去到扩展表。当字段很多的情况下,就通过大表拆分小表,便于开发和维护,也避免跨页的问题。MySQL底层是通过数据页存储的,一条记录占用空间过大会导致跨页,造成额外的性能开销。另外数据库以行为单位将数据加载到内存中,这样表中字段长度较短且访问频率较高,内存能加载更多的数据,命中率更高,减少磁盘IO,从而提升数据库的性能。
垂直切分优点:
- 解决业务系统层面的耦合,业务清晰;
- 可以对不同业务的数据进行分级管理、维护、监控、扩展等;
- 高并发情景下,垂直切分可以一定程度的提升IO、数据库连接数、单机硬件