1 Star 0 Fork 2

Emotion404 / JavaBooks

forked from 帝八哥 / JavaBooks 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
数据库结构优化.md 1.90 KB
一键复制 编辑 原始数据 按行查看 历史
DreamCats 提交于 2020-05-27 19:35 . 数据库结构优化

数据库结构优化

  • 范式优化: 比如消除冗余(节省空间。。)
  • 反范式优化:比如适当加冗余等(减少join)
  • 限定数据的范围: 务必禁止不带任何限制数据范围条件的查询语句。比如:我们当用户在查询订单历史的时候,我们可以控制在一个月的范围内。
  • 读/写分离: 经典的数据库拆分方案,主库负责写,从库负责读;
  • 拆分表:分区将数据在物理上分隔开,不同分区的数据可以制定保存在处于不同磁盘上的数据文件里。这样,当对这个表进行查询时,只需要在表分区中进行扫描,而不必进行全表扫描,明显缩短了查询时间,另外处于不同磁盘的分区也将对这个表的数据传输分散在不同的磁盘I/O,一个精心设置的分区可以将数据传输对磁盘I/O竞争均匀地分散开。对数据量大的时时表可采取此方法。可按月自动建表分区。

拆分表

拆分其实又分垂直拆分和水平拆分

举例子:

简单购物系统暂设涉及如下表:

  1. 产品表(数据量10w,稳定)
  2. 订单表(数据量200w,且有增长趋势)
  3. 用户表 (数据量100w,且有增长趋势)

垂直拆分

  • 解决问题:表与表之间的io竞争
  • 不解决问题:单表中数据量增长出现的压力
  • 方案: 把产品表和用户表放到一个server上 订单表单独放到一个server上

水平拆分

  • 解决问题:单表中数据量增长出现的压力
  • 不解决问题:表与表之间的io争夺
  • 方案:用户表通过性别拆分为男用户表女用户表订单表通过已完成和完成中拆分为已完成订单未完成订单产品表未完成订单放一个server上已完成订单表盒男用户表放一个server上女用户表放一个server上(女的爱购物 哈哈)。
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/Emotion404/JavaBooks.git
git@gitee.com:Emotion404/JavaBooks.git
Emotion404
JavaBooks
JavaBooks
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891