分库:
- 如果数据库的单机性能很低了,那可以考虑分库,不同的库分在不同的服务器上,可以解决单台数据库的并发访问压力问题。
- 分库有两种方式:
- 水平分:根据功能模块、关系密切程度划分,部署到不同的库上,比如订单数据库、用户数据库、商品数据库、日 数据库等
- 垂直分:当一个表的数据量过大时,按照某种规则,比如ID取模、省份、时间等进行划分,然后存储到不同的库上
分表:
把一张表分成N个小表,可以解决单表海量数据的查询性能问题;分表后每个小表都是完整的一张表,都对应三个文件,一个.MYD数据文件,.MYI索引文件,.frm表结构文件。
分表有两种方式:
- 水平分:
- ID取模hash
- 省市地点
- 时间
- 垂直分:
- 把经常在一起查询的字段可以单独存放一张表
- 把不常用的字段存储一张表
- 把大字段独立存放一张表
分区:
- 把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上
- 一张大表进行分区后,它还是一张表,这是它存放数据的区块变多了
- 分区是数据库分的,应用程序无需处理