chapter 2 发动战争

战争的开始:系统从开发环境到生产环节
战术与战略:战略是大局上把握整体sql架构,战术是局部的sql。

战略第一部分:
高效访问数据库的程序的关键目标
    1,查询的识别
          在程序中加入sql语言的识别,
          /*查询今天出差的合同工的人员*/ select **********
          orcale包含的registration faclities实现啦对注释的简化
    2,数据库链接的稳定性
          数据库链接会带来巨大的开销,
                一个1000行的sql语言,发生以下3种操作
               a. 链接一次,一个行操作
               b. 链接一次,所有行操作
               c.链接一次,100行为一个数组进行操作
                操作时间a>>b>>c
         原因:数据库的链接是重复操作,线程,sesssion,跟踪,dbms的检验等。
                      程序与数据库之间的交互
    3,战略优先与战术
          战略决定展示,高屋建瓴。
    4,先定义问题,再解决问题
            所有的技术。方案都是我们为了达到目标的手段,,新技术固然很迷人,
            但是不要把新的技术作为目标,摆弄新工具之前,先学好手艺。
    5,保持数据库模式的稳定
          不要在程序中使用ddl语言,建立,修改,删除数据库对象。
          ddl核心是数据字典,数据字典是所有数据库操作的核心,所以对ddl的操作会引起全局加锁
     6,临时表与永久表,      
        一般使用永久表,临时表的使用减低优化性能。
     7,使用sql处理集合
          sql语言是基于集合(set)处理数据的,如果不是从整个表进行操作,必须对处理的set
        进行粒度的定义,或许是大量数据粗粒度,或许是小量数据细粒度
        将大批的数据处理分割为许多的小的数据处理是个坏注意。
         如:几千个数据,使用游标很慢,换成几个语句,虽然快不了多少,但总是推荐这样做
        8,动作丰富的sql语言
              sql不是过程语言,请区别声明处理与过程处理的区别,所以不要给sql加入过程
              逻辑,如if else等,
              原因:数据库的访问会跨越多个软件层,甚至是网络层。
                        sql中引入过程逻辑,性能与维护问题将由你的程序承担。
        9,每次充分访问数据库
              要从一个数据表中提取多段数据的时候,一次全部读取,而不是分次读取
        10,接近dbms的核心
            代码越是靠近dbms核心,越是执行的快,
                  有些数据库允许自己写c语言等为其编程,这样肯定快
                   多多使用数据库自带的函数
        11,只做必须做的东西
             不要重复的造轮子,请使用现有的sql功能和api。
        12,sql语言反映了业务逻辑
              使用数据库的监控功能,确保当前执行的业务活动合理并且一致。
        13,把逻辑放在查询中
              只要可能就把条件逻辑放在sql语句中,而不是sql的宿主语言。
      14,一次完成多个更新
            如果可以的话,尽量使用一个语句处理多个更新,尽量减少同一个表的重复访问,
      15,慎重使用自定义函数
            优化器对于自定义的函数无能为力
      16,简洁的sql语言。
            sql是声明式语言,所以尽量使用你的额代码超越业务
      17,进攻式编程与异常。
              异常与攻击性编程是个难题。

你可能感兴趣的:(chapter 2 发动战争)