其实就是把别的文章脑图抄一下,顺便自己动动脑子消化一下,平时工作中比较好用
graph LR
A[大表] -->B[数据量:千万]
B-->B1[可能达到亿或更高]
B-->B2[是一个相对稳定的数据量]
B-->B3[不应该有这么多数据]
A --> C[对象:数据表]
C --> C1[状态表]
C1 --> C12[OLTP业务方向]
C --> C2[流水表]
C2 -->C21[OLTP:业务拆分,分布式存储的角度进行设计]
C2 -->C22[OLAP:设计数据统计需求和存储的分不熟扩展]
C --> C3[配置表]
C3 --> C31[通用服务,配置应该是小而简,避免大]
A -->D[目标:优化]
D -->D1[规范化]
D -->D2[业务层优化]
D2-->D21[业务拆分]
D21-->D211[混合业务拆分成独立业务]
D21-->D212[将状态和历史数据分离]
D2-->D22[数据拆分]
D22-->D221[按时间拆分]
D221-->D2211[按照日期维度拆分,20190101]
D221-->D2212[按照周月维度拆分,201901]
D221-->D2213[按照季度维度拆分]
D22-->D222[采用分区模式]
D222-->D2221[采用hash,range等方式]
D2-->D23[读多写少优化场景]
D23-->D231[缓存:redis]
D2-->D24[读少写多优化场景]
D24-->D241[异步提交]
D24-->D242[队列技术]
D24-->D243[降低写入频率]
D -->D3[架构层优化]
D3-->D31[系统水平扩展场景]
D31-->D311[采用中间件,mycat\shardingSphere...]
D31-->D312[读写分离技术]
D31-->D313[采用负载均衡技术]
D313-->D3131[LVS]
D313-->D3132[域名解析]
D3-->D32[兼顾OLTP+OLAP业务场景]
D32-->D321[NewSQL体系]
D321-->D3211[Tidb]
D3-->D33[离线统计的业务场景]
D33-->D331[NoSQL]
D331-->D3311[适合兼容mysql协议的数据仓库体系:inforbright/ColumnStore]
D331-->D3312[基于列式存储,属于异构方向,如HBase]
D33-->D332[数仓]
D332-->D3321[基于MPP架构,如使用Greenplum统计T+1统计]
D -->D4[数据库优化]
D4-->D41[事务优化]
D41-->D411[根据业务场景选择事务原型,是否是强事务依赖]
D41-->D412[事务降为策略]
D412-->D4121[存储过程转化为透明的SQL]
D412-->D4122[DDL操作转换为DML操作]
D412-->D4123[Delete操作转换为高效操作]
D4123-->D41231[rename操作]
D4123-->D41232[根据时间分表]
D4-->D42[SQL优化]
D42-->D421[SQL语句简化]
D42-->D422[尽量避免复杂查询]
D42-->D423[SQL中尽可能避免发连接:not in,not exists反连接]
D42-->D424[SQL中间可能避免半连接:in,exists半连接]
D4-->D43[索引优化]
D43-->D431[必须有pk]
D43-->D432[SQL查询基于索引或者唯一性索引]
D43-->D433[尽可能杜绝范围数据查询]
D -->D5[管理优化]
D5-->D51[数据清理如何做]
D51-->D511[冷热数据分离]
D5-->D52[数据变更如何做]
D52-->D521[在线变更使用pt-ost等工具]
D5-->D53[尽可能变数据碎片]
网友评论