mysql大表

作者: Darui30 | 来源:发表于2019-11-11 15:12 被阅读0次

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


    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大表

        本文链接:https://www.haomeiwen.com/subject/rtjtictx.html