美文网首页
DB专题:1.大数据量的表如何提高性能

DB专题:1.大数据量的表如何提高性能

作者: 北交吴志炜 | 来源:发表于2019-02-17 07:27 被阅读0次

    优化的基础是找到当前的性能瓶颈,对症下药。大的方向上可以分为软件层面,硬件层面;软件层面也分dml层面,ddl层面

    先说硬件层面,很多人会忽略
    硬件层面包含哪些?mysql也好,oracle也好,本质上也是一个应用,需要消耗cpu,内存,磁盘,网络,等资源
    那么相应的,处理速度更快的cpu,读写速度更快的ssd,更大的内存,更高的网络带宽,组网配置,也可能显著的提升性能

    软件层面:从最微观的字段级别到最宏观的架构级别。

    1.字段
    字段的数据类型,尽量物尽其用,比如 tinyint可以搞定,不要去用int或者varchar,尽量不用blob这些字段,尽量不要用null值。不要select *,用什么,取什么

    2.老生长谈,索引
    是否走了索引,走的索引是不是区分度最大的最优索引。查询语句是不是稳定走索引?
    如果索引本身有问题,需要调整索引;
    如果因为语句的原因,比如 select a from table where func(x)=0,对查询条件左值加函数。比如like,not in <>,需要优化语句;
    组和索引不符合最左匹配,可能dbms优化之后也会走索引,但是尽量不要让dbms帮我们干活;
    如果是动态拼接sql,是否会导致某些场景走不了索引;
    尽量使用force index等强制索引

    1. PreparedStatementCache(druid,dbcp等数据源都支持,配置不合理会带来内存问题 )

    4.分区表(比较简单,mysql hash分区需要分区数为质数,否则不均匀)

    5.分库 (需要借助中间件或者自己实现映射逻辑;跨分片查询,结果归并耗时)

    6.读写分离(弱一致可以,强一致是不行的,比如状态机依赖这种)

    7.缓存(可以缓存查询结果或者只缓存主键)

    8.nosql(限制较多,acid,关联查询等)

    相关文章

      网友评论

          本文标题:DB专题:1.大数据量的表如何提高性能

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