读写分离:主写从读
主库负责写,从库负责读。
分库分表
-
分库分表有两种方案,分别是垂直切分和水平切分。
-
垂直切分常见的有垂直分库和垂直分表。
- 垂直分库指的是根据业务耦合性,将关联度低的不同的表存储在不同的数据库中。做法与大系统拆分为多个小系统类似,按业务分类进行独立的划分。
- 垂直分表基于数据库中的 列 来进行,如果某个表中字段较多,可以新建一张扩展表,将不经常用或字段长度较长的字段拆分到扩展表中。在字段很多的情况下,通过"大表拆小表",更便于开发和维护,也能避免跨页问题,因为MySQL底层是通过数据页存储的,一条记录占用空间过大会导致跨页,造成额外的性能开销。另外数据库是以行为单位将数据加载到内存中的,如果表中字段长度较短的话,内存就能加载更多的数据,命中率更高,减少了磁盘IO,从而提升了数据库的性能。
-
水平切分是指将同一个表按不同的条件分散到多个数据库或多个表中,每个表只包含一部分数据,从而使单个表的数据量变小。(达到分布式的效果)