mysql大表

其实就是把别的文章脑图抄一下,顺便自己动动脑子消化一下,平时工作中比较好用


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[尽可能变数据碎片]

参考连接
如何优化MySQL千万级大表,我写了6000字的解读

你可能感兴趣的:(mysql大表)