数据库的优化

数据库设计:良好的数据库设计是优化代码的条件,是数据库优化的标准,设计比优化更重要. 
    主要分为四个部分: 
    #1#:数据库设计过程 : 
       第一步:要分析用户的应用需求. 
      
       第二步:根据用户需求,写出数据字典:它是关于数据库中数据的描述,即元数据,不是元数据本身. 
      
       第三步:对用户的需求进行综合,归纳与抽象,形成一个独立于具体DBMS的概念模型.   
               也就是根据数据字典去画E-R<Entity-Relation>图. 
              
       第四步:定义实体--->E-R图是怎么画的,画E-R图的过程. 
      
       第五步:定义联系(也就是二元联系,1~N,N~1,1~1,N~N). 
      
      
      
    #2#:数据库设计范式  ###***重点*****### 
       关联数据库设计之时是要遵守一定的规则,也就是设计范式. 
       在数据库中的设计范式主要有五种: 
       第一范式(1NF): 
            对于表中每一行中,都必需要有唯一的列,且每一列的值具有原子性<不可分割>. 
            也就是说我们要设主键.*** 
       
       第二范式(2NF):  
          非主键列的活动必需完全依赖于整个主键,如查找,更新必须得依赖于主键 
          例:在Hibernate中我们只能依赖于主键进行修改,如果依赖于非主键修改会报错.  
      
       第三范式(3NF): 
           非主键列互不依赖. 
           也就是说当一个表依赖到另外一张表的数据时,不能依赖于不是主键的列. 
           例:建立关联时,我们只能用另外一张表的主键进行建立关联. 
      
       第四范式(4NF): 
          
      
       第五范式(5NF): 
           尽量少用,也就是用空间去换时间,第五范式又叫无null范式样. 
           将表分割成尽可能少的块,为了排除在表中所有的冗余. 
           也就是说,当一个表里有一个字段只有一个人有数据时,这样这个字段没有数据的人置为null. 
           这时候就要考虑到要用另外一张表来保存这个数据. 
    #3#:数据库设计技巧(主要分为六个技巧) 
              技巧一: 需求分析技巧 
              技巧二: 表设计技巧 
                      每个表中都应该加入几个有用的字段,如:创建日期,创建用户等. 
              技巧三: 字段设计技巧 
             
              技巧四: 键设计技巧 
             
              技巧五: 索引设计技巧 
             
              技巧六: 数据完整性设计技巧 
           
       
   
    #4#:数据库设计规范 

oracle数据库优化: 

一:一些最常用的语法: 
    1:大小写 
   
    2:exist > in > or 
   
    3:列上计算问题,列操作尽量置于操作符右边,少用列格式转换, 
       不要用到列计算,海量查询时少用格式转换,这样使得对全表扫描. 
            查询海量数据是,可以使用optimizer hints(ORACLE) 
            例如/*+ORDERED */ 
            如 
            SELECT /*+ FULL(EMP) */ E.ENAME 
            FROM EMP E 
            WHERE E.JOB = 'CLERK'; 
            而不是 
            SELECT E.ENAME 
            FROM EMP E 
            WHERE E.JOB || '' = 'CLERK'; 
       
    4:只要是带null的都将导致索引失效,还有调用函数,通配符<%>都将导致索引失效. 
   
    5:from与where条件写法,如当查询多个表,或者多个条件查询时, 
       就要把数据量大的条件放在第一个条件. 
       查询多个表:例如: 
            表 TAB1  16,384 条记录 
            表 TAB2    1   条记录 
            选择TAB2作为基础表 (最好的方法) 
            select count(*) from tab1,tab2 
       
         多个条件查询:例如: 
            (低效,执行时间156.3秒) 
            SELECT … 
            FROM EMP E 
            WHERE  SAL > 50000 
            AND    JOB = ‘MANAGER’ 
            AND    25 < (SELECT COUNT(*) FROM EMP  WHERE MGR=E.EMPNO); 
             (高效,执行时间10.6秒) 
            SELECT … 
            FROM EMP E 
            WHERE 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO) 
            AND    SAL > 50000 
            AND    JOB = ‘MANAGER’; 
    6:排序和分组 
     
    7:避免相关子查询 
   
    8:where替换Having 
   
    9:临时表替换游标. 
      
   
      
二:影响数据库的三大特征--->内存,CPU,I/O,netWork. 
    oracle优化方式与优化模式. 
    优化方式:RBO:基于规则,低版本默认的是这个,就是一些表的语句写法. 
              CBO:基于成本-->参照物:定期的表及索引的统计信息. 
                   也就是说:当一个表里的数据只有几条数据时, 
                   这个时候我们就要考虑不要走索引,如果走索引的话, 
                   它是先找索引,然后再找你要的数据,这样使得走了两步. 
                   所以这个时候就有了成本的考虑. 
    优化模式:              
              Rule:基于规则的方式. 
             
              Choolse: 指的是当一个表或索引有统计信息,则走CBO的方式,反之则用RBO. 
             
              First Rows: 是当一个表有统计信息时,它将是以最快的方式返回查询的最先的几行, 
                          从总体上减少了响应时间. 
             
              All Rows:  是基于成本的.(CBO) 
             
             
三:Oracle备份 
    物理备份: 
    逻辑备份: 
   
    什么叫冷,热备份并解释冷备份和热备份的不同点以及各自的优点? 
    数据库还在运行时将它备份叫做热备份, 
    数据库停止时进行备份叫做冷备份

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值