数据库优化

来源:互联网 发布:php app接口开发步骤 编辑:程序博客网 时间:2024/06/05 11:18

     在平时的工作中,做为一名资深的程序员来说,系统在随着业务量不断的增加,可以之前表的设计已经不能满足的我们,

这时就需要我们对整体系统流程或者数据库这方面进行优化。今天主要是写一下数据库方面的优化:(一般都是在时间和空间上找到平衡点)

    一、表结构的优化:
        优化点:
        1、表设计是否遵循数据库的三范式,把大表拆分成不成的小表(减小空间)
        2、针对于某些字段的查询是否数据库表做了适当的冗余(减小时间)
        3、数据类型字段尽量用数字类型
        4、减小使用text,image类型,读取二进制比较耗时
    二、SQL语句的优化:
        优化点:
        1、根据不同的业务场景,特别是针对查询多,而对修改(插入,更新)操作时效要求不高,不频繁,可以利用索引
        提高检索效率。
        2、在查询数据中,尽量在where 条件中运用到索引(关联字段创建索引,经常查询字段创建索引)并且条件中尽可能的
        排除一些干扰数据
        3、在oracle 11之间,sql尽量的用关联查询,而少用子查询(并不绝对),用子查询代码 in 操作,基表放在from 后第一个位置,
        ,索引条件离放在where 越近越好 等等。(在oralce 11 开始,oracle 作了大量的内部优化,用户不需要关注这些,而是关注oracle
        的执行计划)
        4、关于分页的优化,尽量可能把基础能锁定的数据先查询出来,并分页拿到最小结果集,之后在云去关联其它的表(这种情况针对于
        基础表数据的结果集不受关联表之后的where 条件影响)
        
    三、分区:
        针对数据量,在一张表中不段的大量扩张,将有一定特性的数据分配到不同的区域存储(比如:北京地区只关注北京的信息,上海地区只关注上海的信息,就可以把两者数据区分),这样查询效率就可以大大提高
        
    四、分表:
        优化点:
        1、比如报表之类的数据,如果按每个月,或者每个季度,或者每年,可以根据时间进行分表存储数据。(比如京东最近三个月的订单)--这是针对水平分隔
        2、把一个大表经常查询,经常修改的数据放在一张表,不变的数据放入另一张,从而减少操作时锁定的数据(垂直分隔)
        
    五、分离活跃数据:(水平分隔)
        将经常活跃的数据,单独存储,可以加快操作。但需要策略判定活跃边界。
        
    六:批量操作:
        比如:客户端的批量操作,在数据库中进行验证时,保存或者更新时,可以进行批量操作,把数据放入内存中,进行分批处理,而不
        是一次校验就连接查询一次数据库。
        
    七:读写分离:
        它的本质是:对数据库进行集群,降低单台服务器的压力,但需要保证一点就是,数据一性性问题。
        一般情况下是一台写的服务器(主服务器),多台读取的服务器(从服务器)
    
    
    
    
        
        
        
        
       

原创粉丝点击