欢迎 chinavb 加入本站!
 免费注册  用户登陆  汇款方式  汇款确认  产品报价  联系我们  帮助中心
加入收藏
设为首页
会员体系
申请VIP
网站首页 光盘超市 软件下载 技术文章 专题 用户中心 VIP会员 技术论坛 网站留言 娱乐中心 卓越资源
今天是:2009年01月08日 星期四  您现在位于: 首页 → 技术文章 → Informix资料整...
   Informix资料整理
作者:白色乌鸦  出处:blog.chinaunix.net  更新时间: 2007年01月23日 
隔离级别

dirty read 

可以读未提交的数据,对读的数据不加锁

committed read

只能读提交的数据,对读的数据不加锁

cursor stability 

只能读提交的数据,对读的数据加(S或U锁)

当游标移动到下一行时,原记录上的锁被释放

repeatable read

只能读提交的数据

对读的所有行均加锁 ( S或U锁),并且锁一直保持到事务提交或回滚才释放

锁的类型

共享锁(S):     SHARE

互斥锁(X):    EXCLUSIVE

更新锁(U):    UPDATE

数据库级的锁:

打开数据库时指定封锁方式,可以是共享锁或互斥锁,缺省是 共享锁

关闭数据库时释放锁

示例

DATABASE stores5                        共享方式

DATABASE stores5 EXCLUSIVE            互斥方式

CLOSE DATABASE                      释放锁

事务情形下的加锁与解锁

必须在事务中用 LOCK TABLE 加锁

事务提交或回滚释放锁,不能用 UNLOCK TABLE 释放锁

不能在事务中改变锁的模式

无事务情形下的加锁与解锁

用 LOCK TABLE 加锁,UNLOCK TABLE释放锁

改变锁的模式,先 UNLOCK TABLE,后 LOCK TABLE

用户对等待锁的处理方式: 

等待直到释放       SET LOCK MODE TO WAIT

等待指定的时间     SET LOCK MODE TO WAIT nSeconds

不等待,立即返回   SET LOCK MODE TO NOT WAIT

三种权限

连接权限             CONNECT

资源权限             RESOURCE

数据库管理员权限      DBA

存储过程的SPL语句:

变量定义和赋值

DEFINE, LET

流程控制

 分支控制  IF

循环控制  FOR,FOREACH,WHILE    ,EXIT, CONTINUE

函数调用与返回 CALL, SYSTEM ,RETURN

错误处理和调试 TRACE, ON EXCEPTION, RAISE EXCEPTION

       CREATE PROCEDURE read_address(lastnae CHAR(15))

      RETURNING CHAR(15), CHAR(15), CHAR(20), CHAR(5);

      DEFINE p_lname, p_fname CHAR(15);

      DEFINE p_addr CHAR(20);

      DEFINE p_zip CHAR(5);

      SELECT fname, address1, zipcode INTO p_fname, p_addr, p_zip

      FROM customer  WHERE lname=lastname;

      RETURN p_fname, lastname, paddr, p_zip;

   END PPROCEDURE

执行存储过程的三种方式:

使用 EXECUTE PROCEDURE 语句

使用 CALL 语句在一个存储过程中执行另一个存储过程

使用 LET 语句将一个存储过程的执行结果赋给变量

EXECUTE read_address(I,j,k)      

CALL bar(10, 20)   RETURNING   i, j, k;

LET a=read_name(101);

跟踪调试存储过程:

       TRACE 语句把跟踪结果写到一个文件中, 该文件由 SQL 语句 SET DEBUG FILE  指定。

两类变量

局部变量:仅在本存储过程中有效的变量。 局部变量不允许有缺省值

全局变量:在同一用户活动期间, 存储过程中的可被同一数据库的其它存储过程访问的的变量。 全局变量允许有缺省值。

用DEFINE 语句定义变量,其类型可以是除SERIAL 数据类型外 的所有SQL 数据类型。

定义TEXT 或BYTE 类型变量时, 需在其变量前加关键字REFERENCES, 以表明该变量并不含有真正的数据, 而只是指向数据的指针。

       DEFINE x INT;

DEFINE name CHAR(15);

DEFINE this_day DATETIME YEAR TO DAY;

DEFINE dt DATE;

DEFINE tttt REFERENCES TEXT;

DEFINE bbb REFERENCES BYTE;

变量的赋值:

四种方式

利用LET 语句

利用SELECT 或SELECT ... INTO 语句

利用CALL 语句

利用EXECUTE PROCEDURE ...INTO 语句

LET a, b=c, d;

LET a, b=(SELECT empname, empno FROM emp WHERE empno=125);

SELECT empname INTO name FROM emp WHERE empno=120;

EXECUTE PROCEDURE read_address(揝mith?) INTO p_fname, p_lname, p_addr;

CALL read_address(揝mith?) RETURNING p_fname, p_lname, p_addr;

IF语句:

IF str1>str2 THEN  result=1

ELIF str2>str1 THEN result=-1

ELSE result=0;

ENDIF

FOR语句:

FOR 变量 IN (expr1 to expr2 STEP expr3)  语句块   END FOR

FOR 变量  =(expr1 to expr2 STRP expr3)  语句块   END FOR

FOR 变量 IN (expr1, expr2,...)  语句块   END FOR

FOREACH循环:

用 FOREACH 语句可以查询或操作一组记录

FOREACH 隐式定义并打开一个游标

三种格式

FOREACH [WITH HOLD] SELECT ... INTO 语句 语句块 END FOREACH;

FOREACH 游标名[WITH HOLD] FOR SELECT ... INTO 语句 语句块 END FOREACH;

FOREACH EXECUTE PROCEDURE 存储过程名(参数...参数)

    INTO 变量[, 变量[, ...]]    语句块 END FOREACH;

FOREACH 定义的游标在以下情况下关闭:

无行返回

事务提交或回滚导致非保护游标关闭

循环非正常退出(使用EXIT 或 ON EXCEPTION)

异常捕获:on exception 

ON EXCEPTION 语句与RAISE EXCEPTION 语句一起 提供存储过程语言(SPL)的错误 捕获和恢复机制。

       ON EXCEPTION 语句的位置:

ON EXCEPTION 语句是一声明性而非执行性语句, 故应位于任何执行语句之前,  而位于DEFINE 语句之后。

格式

ON EXCEPTION IN (错误号,...)

SET SQL 错误变量 ISAM 错误文本变量   语句块

END EXCEPTION [WITH RESUME]

SYSTEM 语句在存储过程中执行一个操作系统命令

TRACE 语句的三种形式:

TRACE ON :打开跟踪调试, 跟踪所有语句

TRACE OFF :关闭跟踪调试

TRACE PROCEDURE: 对于过程调用,不跟踪过程体,仅跟踪过程的输入和返回值。

触发器:

       CREATE TRIGGER items_ins  INSERT ON items REFERENCING NEW AS post_ins

FOR EACH ROW(EXECUTE PROCEDURE items_pct (post_ins.manu_code))

触发器动作:

       BEFORE 动作:触发器动作先于触发事件

FOR EACH ROW 动作:对触发动作所涉及的每一行,触发 器动作均执行一次

AFTER 动作:  触发器动作后于触发事件

跟踪对表的修改:

CREATE  TRIGGER upqty_i UPDATE OF  quantity ON items

            REFERENCING   OLD AS  pre_upd

            REFERENCING   NEW AS post_upd

            FOR EACH ROW (INSERT INTO log_record

 valueS (pre_upd.item_num, pre_upd.order_num, USER, CURRENT, pre_upd.quantity, post_upd.quantity));

 

Informix的日期格式是由DBDATAE来设置的,默认是mm/dd/yy,可以设置为:

       DBDATE=Y4MD-

       DBDATE=MDY2/

时间相关的函数:

       extend,mdy,interval

       select timestamp+interval(10) hour to hour from table

       extend(timestamp, hour to hour)

       select  current year to day - interval(9) day to day from table

使用BLOB space:

create table emplyee( 

name char(14),

       Pic   BYTE put in imgdbs);

创建临时表:

       create temp table tab_name ( ) with no log;

       select * from tab_name into temp tab_name with no log;

Alter语法的使用:

       Alter table tab_name drop col;

                                    Modify col  integer not null

                                    Add col integer before col2

                                    Modify next size 200;

                                    Lock mode (row);

                                    Type (raw/standard);

       Alter index idx_name to cluster;

       Alter index idx_name to not cluster;                    

Rename column col1 to col2

                     Database db_name1 to db_name2

                     Table tab_name1 to tab_name2

设置表常驻内存:

       set table tab_name MEMORY_RESIDENT;

       set table tab_name        NON_RESIDENT;

失活模式:

       set  index idx_name disable;

       set  trigger tri_name disable;

       set  constraints con_name disable;

 

优化器指示字:

optcompind=0:只按索引考虑连接对

optcompind=1:对于可重复读隔离级别只按索引考虑连接对,否则选择开销最小的方法。

Optcompind=2:总是选择开销最小的方法

Set optimization [high|low|first_rows]

需要设置环境变量:OPT_GOAL

 

set explain on

对UNIX环境是当前目录下的sqlexplain.out

对NT的环境是%INFORMIXDIR%\sqlexpln\username.out

限制空间:

       在使用update statistics期间通过使用环境变量DBUPSPACE可以限制排序操作使用的空间。DBUPSPACE=space-in-kbytes export DBUPSPACE

       数据库服务器内部限制排序操作使用的内存是4M。

 

onstat –g stm session_id:查询某个session的内存开销
 (本文已被浏览 2637 次)
 发布人:sdccf
 → 推荐给我的好友
上篇文章:Informix培训教材整理之产品介绍
下篇文章:Solaris 10自动安装DVD使用手册
 相关文章:
Informix的历史沿革 Informix 7.31 For SCO 5安装脚本
Informix case语句的妙用 Informix在一台机器上起两个实例的思路
informix 锁表处理步骤 crash掉数据库的若干可能
informix审计功能的配置 informix临时表的存放位置
Informix数据库一致性检查 Informix中求时间间隔的函数
Informix表空间计算 Informix如何更加有效的创建主键和外键
SCO UnixWare 7.1.4下安装Informix 基于Informix的ESQL/C(2)
基于Informix的ESQL/C(1) 在 IDS 9.x 中使用 GUID
如何综合掌握 DB2 和 Informix 使用Informix系统目录
Informix数据库优化 Windows XP下也玩Informix

相关搜索
查看百度中关于Informix资料整理的更多内容
查看google中关于Informix资料整理的更多内容
   文章分类
操作系统 |
SCO_UNIX  Sun_Solaris  IBM_AIX  HP_UX  Linux  BSD  Tru64_UNIX 
通用UNIX知识  Windows  Minix 
程序设计 |
Shell编程  C/C++  汇编  PHP  JAVA  Perl  Python 
ASP/HTML  XML  中间件 
数据库 |
Oracle  Informix  Sybase  Fox  DB2  SQL  MySQL 
PostgreSQL 
网络应用 |
网络应用 
计算机硬件 |
计算机主机  打印机  路由器  交换机  终端  磁带机  MO 
刻录机  终端服务器  调制解调器 
   文章评论
  → 评论内容 (点击查看)   共0条评论,每页显示5条评论   浏览所有评论
(没有相关评论)
  → 发表我的评论
您的姓名: 您的Email:
评论内容:
250字内
发表评论:      发表评论须知 →
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  • 关于我们 ┋  网站留言 ┋  网站地图 ┋  友情链接 ┋  与我在线 ┋  汇款确认 ┋  管理 ┋  TOP
    Unix爱好者家园  http://www.unix-cd.com/
    联系我们:sdccf@163.com
    腾讯QQ: 7644599
    备案序号:鲁ICP备05000455号
    Copyright (c) 2001-2008 Unix-cd.com. All Rights Reserved.