设为首页 收藏本站
查看: 678|回复: 0

[经验分享] 数据库的优化,包括:oracle,mysql.(转)

[复制链接]
YunVN网友  发表于 2016-8-16 07:05:36 |阅读模式
数据库设计:良好的数据库设计是优化代码的条件,是数据库优化的标准,设计比优化更重要.
    主要分为四个部分:
    #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备份
    物理备份:
    逻辑备份:
   
    什么叫冷,热备份并解释冷备份和热备份的不同点以及各自的优点?
    数据库还在运行时将它备份叫做热备份,
    数据库停止时进行备份叫做冷备份

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-258360-1-1.html 上篇帖子: PL/SQL 方式向oracle数据库插入日期类型 下篇帖子: java调研oracle存储过程返回记录集
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表