网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > 实用代码片段 > 正文

提高C/S系统性能的一些方法

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
customer)中的顾客户机号。这是一个最简单的引用完整性,可以用应用程序本身执行完整性检查。

  DECLARE

  flag INTEGER;

  BEGIN

  SELECT id INTO flag

  FROM customer

  WHERE id=3

  FOR UPDATE OF id;

  IF SQL%FOUND THEN

  INSERT INTO orders

  VALUES(5,3,SYSDATE,null,null,'F');

  -- 其他应用逻辑

  COMMIT;

  END IF;

  END;

  这个过程只是在应用程序内部用于实施引用完整性规则的一种方法,但可以看出,为实施一个简单的完整性规则,应用程序要花大量的时间通过网络来请求和发送数据。

  (2)使用Oracle 7的完整性约束

  CREATE TABLE orders

  (

  id INTEGER PRIMARY KEY,

  customer id INTEGER NOT NULL REFERENCES customer,

  orderdate DATE NOT NULL,

  shipdate DATE DEFAULT SYSDATE,

  paidate DATE DEFAULT SYSDATE,

  status CHAR(1) DEFAULT ‘F' CHECK(status IN(‘F'

  ,‘B'))

  );

  实施简单完整性规则(如引用完整性)的更好方法是使用Oracle 7的完整性约束。该方法的好处是明显的:

  ①定义一个表的同时,方便地建立完整性约束,开发人员不需为实施一个简单的完整性规则而创建测试、排错复杂的数据完整性逻辑,提高了工作效率;

  ②用集中化的方法实现完整性规则;

  ③无需任何网络I/O,客户机/服务器系统也就不会因为网络访问而降低性能。

  2.使用数据库触发器

  应用程序经常需要实施复杂的业务规则,这些规则无法用完整性规则表示,所以最好不要按照常规思路在应用程序中实施完整性规则;而是用数据触发子(triggers)来实施业务规则。其优点是容易创建,可集中进行规则实施,避免不必要的网络I/O。利用数据库触发子可以使其他一些应用程序集中化和自动化。 比如,计算item 表中的total 列的值是所订零件的数量乘以零件的单价,而零件单价存放在stock表中,当插入一个新的行项目时,应用程序计算total列的值有两种方法。

  方法一:让应用程序通过SQL命令执行这个操作

  DECLARE total REAL;

  BEGIN

  SELECT unitprice*quantity INTO total

  FROM stock, item

  WHERE id=4;

  INSERT INTO item VALUES(...);

  END

  应用程序通过网络发出请求,取得某一些零件单价,然后插入这个含有该行计算值(tota l)的行。修改item表中某行数量值,应用程序需要包含相似的逻辑来计算。此外,多个用户还可能同一时刻插入和修改订单。总之,用这种方法来计算total 列时会在客户机/服务器系统中产生大量的网络传输。

  方法二:用数据库触发子, 从一个行项目自动导出total 的值, 当用户在item表中插入新行或修改quantity时,无需任何网络访问。

  CREATE TRIGGER Linetotal

  BEFORE INSERT OR UPDATE OF quantity,stockid

  ON item

  FOR EACH ROW

  DELARE

  itemprice REAL;

  BEGIN

  SELECT unitprice

  INTO itemprice

  FROM stock

  WHERE id=:new.stockid;

  :new.tolal:=new.quantity*itemprice;

  END linetotal;

  当创建触发器linetotal后, 应用开发人员在编写应用程序时就不需考虑保持total列为最新值的问题,而且网络数据库上所有应用都会因此受益。

  3.利用过程和包优化性能

  这里主要讨论如何利用完整性约束和数据库触发器把应用逻辑移到数据库服务器中执行以便减少网络I/O,提高性能。其它类型应用处理逻辑分布到数据库服务器亦可以减少客户机/服务器应用中的网络I/ O,应用程序不必再用包含多个网络操作的SQL语句去执行数据库服务器操作,而是简单且有效地调用存储过程。包是一种用来把多个有关的过程在数

  • 下一篇资讯: 收藏的一些实用代码
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师