池化技术
核心思想空间换时间
最小连接数,最大连接数
主从复制
读多写少,数据冗余,全量拷贝。
- 主从复制
一般一个主库挂3~5个从库- 部署复杂度
- 从库延迟问题
- 数据冗余,发送消息队列时多带
- 使用缓存
- 读主库
- 统一访问数据库
- 中间件:TDDL、DDB
- 代理层:
分库分表
数据库的写入请求量大造成的性能和可用性方面的问题。
数据分片:依照某一种策略将数据尽量平均地分配到多个数据库节点或多个表中
垂直拆分
将数据库的表拆分到多个不同的数据库中,按业务类型来拆分- 水平拆分
按数据特点来拆分- 按照某一个字段的哈希值做拆分,适用于实体表
- 按照某一字段的区间来拆分,时间字段
- 解决分分表引入的问题
- 引入了分库分表键,也就分区键
- 查询要带上分区键,否则就要全库分表查,建立映射表。
- 一些数据库的特性在实现时可能变得很困难
- JOIN
- COUNT
- 主键的全局唯一性
- 主键如何选
- 使用业务字段
- 使用生成的唯一ID
- 自增字段ID:有序可以提升B+树的写性能
- 搭建发号器服务:
- UUID:无序,无业务特征
- 主键如何选
- 引入了分库分表键,也就分区键
NoSQL 互补
- Snowflake 算法