• 1. Informix 系统培训Informix 系统培训
  • 2. 培训主要讲解内容一、简介及安装配置 Informix 产品简介 Informix SE 特点 Informix Online 特点 基本概念 系统安装 系统配置
  • 3. 培训主要讲解内容二、数据库管理 系统管理 系统监控 系统备份/恢复 系统排错 三、系统维护 维护工作简介 日常维护 Informix 的ODBC配置
  • 4. 培训主要讲解内容四、应用开发 SQL、ESQL/C应用开发 提高系统效率的几点建议 总结答疑
  • 5. 课程安排第一课 简介、基础知识 安装、配置介绍 第二课 数据库系统管理 第三课 系统维护、ODBC配置 第四课 SQL语言简介 Informix应用开发简介 总结答疑
  • 6. 第一课 简介及安装配置主要内容: Informix产品介绍 Informix基本概念 Informix的安装 Informix系统配置
  • 7. Informix产品介绍产品介绍 SE Online5.0第一个C/S版本 Online6.0划时代版本 Online7.x IDS Online8.x IDS Online9.x IUS 开发工具:4GL、ESQL/C … …
  • 8. Informix SE组成: 存储结构:采用文件系统实现 数据库文件 *.dbs 数据文件 *.dat 索引文件 *.idx. 数据库服务进程:接收前端交易信息,对文件直接操作完成。
  • 9. Informix SE特点: 使用进程空间缓冲数据,对内存的需求较大 用户数多时,服务进程多,性能不好 采用文件锁,数据一致性差;
  • 10. Informix Online 5.0组成: 数据库服务进程 采用进程方式响应请求 进程数量有限, 共享内存 大小需要预先确定 磁盘结构 支持直接磁盘管理
  • 11. Informix Online 5.0特点: 引入了共享内存机制 引入磁盘管理机制,提高处理效率 启动进程<100个,不适合大数据量处理 只适用于OLTP系统,不适用于DSS系统
  • 12. Informix Online 7.x组成: 数据库服务进程 引入多线索机制处理请求 顺序调度策略 共享内存 可动态增长的共享内存 磁盘结构 与5.0完全相同
  • 13. Informix Online 7.x进程结构 VP(virtual Process) 虚拟处理器 VPC(virtual Process Class)虚拟处理器类
  • 14. Informix 基本概念Informix基本概念 1、Informix系统结构 ServerShared MemoryDiskCPU VPLIO VPTLI VPResident portion Buffer池和其他系统数据结构 Virtual portion Thread控制信息 Message portion Client和server间通讯
  • 15. Informix 基本概念Informix基本概念 1、Informix系统结构 Virtual Process VP实际上是一些daemon进程(在UNIX下,进程名为oninit); VP分为很多类;一个VP是该类的一个实例;某个VP只能处理某类thread的请求; Shared Memory 分为三类:resident、virtual和message portion; resident用来从磁盘cache数据到内存;virtual用来维护VP使用的系统资源;message用来shared memory通讯方式下client和server之间通讯; Disk 用来存放系统管理数据和数据库数据信息;
  • 16. Informix 基本概念Informix基本概念 2、Shared memory(Resident Portion): Locks structureShared memory HeaderMax Logs StructureLRU QueuesBuffer poolsLogical Logs Buffer(3)Physical Log Buffer(2) Buffer pool是Resident中的主体,是数据缓冲区; Logical Log Buffer和Physical Log Buffer分别是物理日志 和逻辑日志的数据缓冲区; Logical Log Buffer共三个, 每个32K大; Physical Log Buffer共两个; 采用LRU(Least Recently Used)来对buffer进行管理,LRU 分为两种:FLRU和MLRU。FLRU是空闲的buffer列表, MLRU是使用过的buffer列表。 系统刚初始化时,所有buffer均在FLRU中;当用户线程 申请buffer,系统将从FLRU中选取空闲的buffer;在用户 线程释放该buffer时,如果Buffer被更改,将转移到MLRU 中Most Recently Used Buffer,如果不被更改,将转移到 FLRU中的Most Recently Used Buffer。
  • 17. Informix 基本概念Informix基本概念 2、Shared memory(Virtual Portion): Virtual Portion包含50多种pool(任一个pool都有特殊用途,pool大小以8k为单位),如: 用户会话数据、数据字典信息、存储过程、线程信息等; Virtual Portion部分的大小可以动态增加; Virtual Portion的初始大小由Initial Segment表示,以后动态增加的部分称做Additional Segment。 Shared memory(Message Portion): 当client和server之间采用shm通讯方式时,使用Message Portion用来交换通讯信息;
  • 18. Informix 基本概念Informix基本概念 3、Virtual Process(VP): VP都是一些daemon进程,在UNIX下进程名都是oninit(操作系统下,看到的oninit个数应该和VP的个数一样);查看VP状态使用命令onstat –glo; VP划分为很多类,共有以下几类:CPU、PIO、LIO、AIO、ADT、MSC、SHM、TLI、SOC、ADM、OPT、JVP; VP可以动态地增加和减少,可以动态减少的VP只有CPU类,动态改变 VP使用系统命令onmode –p [+ | -] Number vp_name; VP运行在server端,来自client端的请求称为thread,Informix IDS是多线程结构的; 两个概念:fan-in是指一个VP可以多个客户端请求;fan-out是指多个VP可以处理来自同一个客户端请求;
  • 19. Informix 基本概念Informix基本概念 3、Virtual Process (VP): server和client连接过程: client请求接受来自client 的全部请求是新的session?ListenPollySession Control BlockThread Control BlockSqlexecn由sqlexec向client端发送信息
  • 20. Informix 基本概念Informix基本概念 3、Virtual Process (VP): server和client连接过程: poll线程负责接受来自client端的请求,如果server和client连接方式是通过TCP/IP,则poll会侦听一定的端口;如果是通过shared memory方式,poll会从共享内存中的message portion获得信息; 如果client请求是一个新的session,则poll会激活listen线程,listen会为该客户端建立用户线程(Thread Control Block),同时建立该用户session(Session Control Block),并分配唯一的session标识session-id; 由相应VP来处理客户请求,在处理完成后,server向client端的通讯信息由sqlexec线程完成;
  • 21. Informix 基本概念Virtual Process(VP) 类型
  • 22. Informix 基本概念Informix基本概念 3、Virtual Process (VP): IDS中,I/O种类: KAIO 这种方式下,对I/O的读写是通过操作系统(特定平台支持)完成的,避免传统读写方式下的等待I/O完成后再进行处理的方法,而是向I/O发送读写请求后继续做其他处理。KAIO只对裸设备有效,运行在CPU VP中; AIO 采用传统的I/O读写方式,运行在AIO VP中;如果没有KAIO,则AIO负责全部的I/O读写,如果KAIO存在,则AIO负责所有cooked file上的I/O操作;
  • 23. Informix 基本概念Informix基本概念 4、Disk概念: chunk是一块连续的物理存储空间,是构成逻辑存储空间dbspace的基本单位;chunk可以对应一个裸设备(Raw Device),也可以对应一个熟文件(Cooked File操作系统文件);chunk由绝对路径名和偏移量来唯一标识; page是I/O操作的基本单位,chunk是由page构成;page的大小在不同的操作系统平台固定不变;page有自己的内部结构; tblspaces对应数据库表;一个tblspaces对应一张表所使用的所有page;tblspaces的空间是由一个或多个连续的存储空间构成,这些连续的存储空间称做extent。
  • 24. Informix 基本概念Informix基本概念 4、Disk概念: dbspace是一个或多个chunk的逻辑组合,构成dbspace的第一个chunk叫做主chunk,其他的成为辅chunk;数据库必须在一个dbspace上创建;系统初始会对应一个dbspace,一般叫做rootdbs,用来存放DBMS信息,也可以存放数据信息; blobspaces是一种特殊的dbspace,用来存放大数据(Text类型和Binary类型)信息;blobspace下的page称做blob page,它的大小是可以调整的,一般一个blobpage是由一个或者多个page构成; mirroring(镜像)是一种数据保护手段,在 dbspace级别才能做mirror;
  • 25. Informix 基本概念Informix基本概念 4、Disk概念: logical log是由一些(最少3个)逻辑日志文件构成,这些文件在物理存储上是连续的;逻辑日志会存储数据库的修改信息(DML)和一些DBMS系统事件信息(包括DDL和checkpoint事件),主要用来日志型数据库的逻辑恢复; physical log是由一个或两个物理日志文件构成,这些文件在物理存储上是连续的;物理日志用来存放读入内存页面的备份信息(Before Image); checkpoint是一个系统事件,用来同步磁盘信息和内存信息;
  • 26. Informix 的安装安装时注意: 安装配置之前需做系统规划,比如数据库用户、权限等的设置,数据库存储空间的规划等 先安装工具软件,后安装IDS 先安装低版本,后安装高版本 需以root注册后,进行安装 安装前环境变量的设置,比如: INFORMIXDIR等,需设置后进行安装IDS
  • 27. Informix 的安装插入IDS光盘 # mount /dev/cd0 /mnt # cpio –icdvBum< /mnt/SERVER/IDS.CPI # ./installserver # unmount /mnt 安装指南
  • 28. Informix 系统配置配置 1、client/server连接配置 2、DBMS配置
  • 29. Informix 系统配置配置 1、client/server连接配置: 连接方式: 本地连接: Shared memory Stream pipe TCP/IP 远程连接: TCP/IP(Sockets/TLI) IPX/SPX
  • 30. Informix 系统配置配置 1、client/server连接配置: 连接过程: 有关连接配置信息存放在文件$INFORMIXDIR/etc/sqlhosts 中; client在和server建立通讯的时候,它会首先检查本地的环境变量$INFORMIXSERVER,$INFORMIXSERVER必须定义在文件sqlhosts中,而且和配置文件onconfig中的参数DBSERVERNAME或者DBSERVERALIASES相符合; 在配置文件sqlhosts中,定义了$INFORMIXSERVER所对应的连接方式,结合文件/etc/hosts能得知对应的连接地址;
  • 31. Informix 系统配置配置 1、client/server连接配置: sqlhosts文件格式: dbservername 是Informix IDS对应的名称,应和$INFROMIXSERVER以 及配置文件中的DBSERVERNAME、DBSERVERALIASES 相对应 netttype 定义了client和server之间的连接方式 hostname 定义了IDS所在的服务器的主机名,应和文件/etc/hosts 相对应 servicename 服务名,在远程连接模式下,对应一个TCP/UDP端口, 在文件/etc/services中定义 dbservernamenettypehostnameservicename
  • 32. Informix 系统配置配置 1、client/server连接配置: nettype格式: don – IDS/IUS se – Standard Enginediiipppipc – IPC 连接 tli – tli连接 soc – soc连接shm – shared memory tcp – TCP/IP 协议 spx – IPS/SPX 协议 str – stream pipe
  • 33. Informix 系统配置配置 2、DBMS配置: 步骤: 参考$INFORMIXDIR/release目录下的版本说明; 创建适当的核心配置参数; 创建存储文件; 设置环境变量; 编辑sqlhosts文件; 编辑$ONCONFIG文件,文件位置在$INFORMIXDIR/etc下(也可以使用配置工具onmonitor进行配置); Informix配置要点
  • 34. Informix 系统配置配置 2、DBMS配置: 核心参数配置: 信号量: System V: SEMMNI 最多可用的信号量集 SEMMSL 每个信号量集中最多的信号量的个数 SEMMNS 可用的信号量的最大数 BSD: SEMMNI 最多可用的信号量集 SEMMNS 可用的信号量的最大数
  • 35. Informix 系统配置配置 2、DBMS配置: 核心参数配置: 共享内存: System V: SHMMAX 最多可用的信号量集 SHMSEG 每个信号量集中最多的信号量的个数 SHMMNI 可用的信号量的最大数 BSD: SHMSIZE 最多可用的信号量集 SHMMNI 可用的信号量的最大数
  • 36. Informix 系统配置配置 2、DBMS配置: 创建存储文件: 存储文件有两种:Cooked File和Raw Device; Cooked File: touch file_name chmod 660 file_name chown informix:informix file_name Raw Device: ln /dev/rlv01 /dev/rootchunk chmod 660 /dev/rootchunk chown informix:informix /dev/rootchunk
  • 37. Informix 系统配置配置 2、DBMS配置: 设置环境变量: $ONCONFIG 存放IDS的各种配置参数,对应文件名(不包含绝对路 径);如果不设置$ONCONFIG,则默认为onconfig文件 $INFORMIXDIR 是informix的安装路径 $PATH 包含$INFORMIXDIR/bin $INFORMIXSERVER 对应于IDS参数DBSERVERNAME或者 DBSERVERALIASES,同时在文件sqlhosts中应 包含该server的定义
  • 38. Informix 系统配置配置 2、DBMS配置: 参数配置: Page Size [ 2] Kbytes Mirror[Y] Tape Dev [/dev/rmt0 ] Block Size [ 16] Kbytes Total Tape Size [ 10240] Kbytes Log Tape Dev. [/dev/rmt0 ] Block Size [ 16] Kbytes Total Tape Size [ 10240] Kbytes Stage Blob [ ] Root Name [rootdbs ] Root Size [ 20000] Kbytes Primary Path [/dev/rootchunk ] Mirror Path [ ] Mirror Offset [ ] Kbytes Phy. Log Size [ 2000] Kbytes Log. Log Size [ 1000] Kbytes Number of Logical Logs [ 6]Disk Parameters
  • 39. Informix 系统配置配置 2、DBMS配置: 参数配置: Server Number [ 1] Server Name [ test ] Server Aliases [test_tcp ] Dbspace Temp [tempdb1 ] Deadlock Timeout [ 60] Secs Number of Page Cleaners [5 ] Forced Residency [N] Stack Size [32 ] Non Res. Segsize(K) [ 8000] Optical Cache Size(K)[ 20000] Dbspace Down Option [2] Preserver Log For Log Backup[Y] Heterogeneous Commit [Y] Transaction timeout [300] Physical Log Buffer Size [ 32]K Long TX HWM [50 ] Logical Log Buffer Size [ 32]K Long TX HWM Exclusive [60 ] Max # of Logical Logs [20] Index Page Fill Factor [90 ] Max # of Locks [20000] Add Segsize (K) [8192] Max # of Buffers [25000] Total Memory(K) [0 ] Resident Shared Memory size [52672] Kbytes Page Size [2] Kbytes
  • 40. Informix 系统配置配置 2、DBMS配置: 参数配置: Multiprocessor Machine [N] LRU Max Dirty [60] Num Procs To Affinity [0] LRU Min Dirty [50] Proc Num to Start with [0] Checkpoint Interval [300] Num of Read Ahead Pages [4] CPU VPs [1] Read Ahead Threshold [2] AIO VPs [2] Single CPU VP [Y] NETTYPE settings: Use OS Time [N] Protocol Threads Users VP-class Disable Priority Aging [N] [ipcshm] [ 1] [ 20] [NET] Off-Line Recovery Threads [10] [tlitcp ] [ 1] [ 20] [CPU] On-Line Recovery Threads [1] [ ] [ ] [ ] [ ] Num of LURS queues [8] [ ] [ ] [ ] [ ]
  • 41. Informix 系统配置配置 2、DBMS配置: 参数配置:Interval [30] Timeout [30] Auto [0] Lost & Found [ ]
  • 42. Informix 系统配置配置 2、DBMS配置: 参数配置: Message Log [/usr/informix/online.log ] Console Msgs. [/dev/console ] Alarm Program [/usr/informix/etc/log_full.sh ] Dump Shared Memory [Y] Dump Gcore [N] Dump Core [N] Dump Count [ 1] Dump Directory [/tmp ]
  • 43. Informix 系统配置配置 2、DBMS配置: 参数配置: Max PDQ Priority [100] Decision Support Queries [1 ] Decision Support Memory(Kbytes) [1000 ] Maximum Decision Support Scans [10 ] Dataskip [off ] Optimizer Hint [2 ]
  • 44. 第二天 数据库系统管理主要内容: Informix 系统管理 Informix 系统监控 Informix 备份/恢复 Informix 系统排错处理
  • 45. Informix 系统管理系统管理 1、运行模式管理 2、存储管理 3、checkpoint和buffer操作 4、系统容错 5、日志管理
  • 46. Informix 系统管理系统管理 1、运行模式管理: IDS的运行模式共有以下几种: Off-Line:IDS还没有运行,系统没有为IDS分配共享内存; Initialization:是IDS从Off-Line过渡到Quiescent的一种临时状态; Quiescent:单用户模式,只允许informix用户才能访问数据库资源; On-Line:是IDS正常运行的状态,所有用户都能访问数据库资源; Shutdown:系统处于正常运行的状态,但是只允许现有用户访问数据库,不允许有新的用户访问; Recovery:当系统执行Fast Recovery或者从备份设备恢复时,IDS所处于的状态;
  • 47. Informix 系统管理系统管理 1、运行模式管理: onmonitor下的“mode”管理: Startup IDS从Off-Line状态到Quiescent状态 On-Line IDS从Quiescent状态到On-Line状态 Graceful-Shutdown IDS从On-Line 状态到Quiescent状态,不终止当 前用户的用户线程,所有用户运行结束后, 才改变IDS成Quiescent状态 Immediate-Shutdown IDS从On-Line 状态到Quiescent状态,强制终止 当前所有用户线程 Take-Offline IDS 从Quiescent或者On-Line到Off-Line状态
  • 48. Informix 系统管理系统管理 1、运行模式管理: oninit [-s][-i][-p][-y] oninit IDS从Off-Line状态到On-Line状态 oninit –s IDS从Off-Line状态到Quiescent状态 oninit –i 初始化root dbsapce oninit –p 不查询、删除临时表 oninit –y 在系统初始化过程中,对所有问题都回答“y”
  • 49. Informix 系统管理系统管理 1、运行模式管理: onmode [-k][-m][-s][-u][-y] onmode -k 执行Immediate-Shutdown,并改变IDS从Quiescent状态 到Off-Line状态 onmode –m IDS从Quiescent 状态到On-Line状态 onmode –s 执行Graceful-Shutdown onmode –u 执行Immediate-Shutdown onmode –y 在系统初始化过程中,对所有问题都回答“y”
  • 50. Informix 系统管理系统管理 2、存储管理: page的结构: Page Header中包含以下内容: page_id(4 bytes)、timestamp(4 bytes)、num_slots(2 bytes)、pg_type(2 bytes) 、free_ptr(2 bytes)、free_cnt(2 bytes)、next(4 bytes)、prev(4 bytes) DataPage header(24 bytes)Slot table RowOffsetRowSizeTimeStamp(4bytes)
  • 51. Informix 系统管理系统管理 2、存储管理: extent的结构: Bitmap pages:记录extent中各page的信息; Data pages:存放数据,page 中的每条记录都对应一个唯一的rowid;rowid共4-bytes长,由page number和slot number构成; Remainder pages:如果一条数据库记录的大小超过一个page,剩余部分将存放在remainder page中; Blob pages:存放blob数据; Free pages:空闲的page;Page 0 Bitmap pagePage 1 Data pagePage 2 Data pagePage 3 Remainder pagePage 4 Blob pagePage 5 Free pageextent
  • 52. Informix 系统管理系统管理 2、存储管理: Index extent的结构: Page有两种用途:data或者index,任何一个page要么存放data信息,要么存放index信息。 一个tblspace中最初的extent的大小为EXTENT SIZE,之后所有的extent的大小为NEXT SIZE; Page 0 Bitmap pagePage 1 Index pagePage 2 Index pagePage 3 Free pagePage 4 Free pagePage 5 Free pageIndex extent
  • 53. Informix 系统管理系统管理 2、存储管理: Dbspace的结构: Initial chunk of root dbspaceSystem overheadSysmaster databaseSysutils databaseFree SpaceInitial chunk of other dbspaceSystem overheadFree SpaceAll other chunksSystem overheadFree Space12 pages for system information 1 page for chunk free list 250 pages for tblspace tblspace2 pages for system information 1 page for chunk free list 50 pages for tblspace tblspace2 pages for system information 1 page for chunk free list
  • 54. Informix 系统管理系统管理 2、存储管理: 12个系统保留页: PZERO中包含IDS中的系统信息;CONFIG中包含IDS中系统参数的拷贝;其余的10个page两两互为备份;CKPT中包含最后一次checkpoint的信息;DBSP中包含所有dbspaces和blobspaces的信息;PCHUNK包含所有primary chunk的信息;MCHUNK包含所有mirror chunk的信息;ARCH包含最后一次由ontape执行的备份的信息; 1 PZERO3 CKPT5 DBSP7 PCHUNK9 MCHUNK11 ARCH2 CONFIG4 CKPT6 DBSP8 PCHUNK10 MCHUNK12 ARCH
  • 55. Informix 系统管理系统管理 2、存储管理: 对dbspace、blobspace、chunk等操作可以使用两种方法: onmonitor菜单 命令onspaces 创建dbspaces: onspaces –c –d dbspace_name –p chunk_name –o offset -s chunk_size [–t temporary_dbspace] [–m mirror_path offset ] 创建blobspaces: onspaces –c –b blobspace_name –g blobpage_size –p chunk_name –o offset –s chunk_size [-m mirror_path offset]
  • 56. Informix 系统管理系统管理 2、存储管理: 删除dbspaces: onspaces –d dbspace_name [-f] [-f] 删除dbspace上的数据 为dbspace和blobspace增加chunk: onspaces –a dbspace_name –p chunk_name –o offset –s chunk_size [-m mirror_chunk offset] 删除chunk: onspaces –d dbspace_name –p chunk_name –o offset
  • 57. Informix 系统管理系统管理 3、checkpoint和buffer操作: checkpoint是同步(sync)内存与硬盘内容的一种操作,保持数据的完整 性;以下事件会引发checkpoint的发生: 经过了checkpoint interval时间,而且数据库内容发生了改动; 物理日志有75%或超过75%被占用时; IDS发现下一个逻辑日志文件将包含最近一次 checkpoint记录时; 当增加一个chunk或者一个dbspace时; 当执行命令onmode –c时; 当使用onmonitor菜单强制触发 checkpoint事件时;
  • 58. Informix 系统管理系统管理 3、checkpoint和buffer操作: checkpoint执行过程分为以下步骤: 用户线程被阻止访问critical section,那些正在critical section中执行的线程允许执行完成;critical section是指一组包含磁盘修改的代码,这些代码做为一个整体执行,要么全执行,要么不被执行; 把physical log buffer内容写到硬盘中; 把buffer pool中被修改的部分写到硬盘中; 在当前logical log文件中记录checkpoint标记; 把logical log buffer中被修改的部分写到硬盘中; 把physical log中的所有page页修改成free 的状态,以便下次使用;
  • 59. Informix 系统管理系统管理 3、checkpoint和buffer操作: buffer写操作: 分为三类: Chunk write:在checkpoint过程中使用该buffer写操作,这种方式会把所有的buffer排序,也称做sorted write; LRU write:当LRU到达LRU_MAX_DIRTY和LRU_MIN_DIRTY指定的阀值的时候,由page cleaner执行; Foreground write:当用户申请buffer时,但又不能在FLRU队列中找到未修改的buffer页时,由用户线程执行该操作;
  • 60. Informix 系统管理系统管理 3、checkpoint和buffer操作: buffer写操作: physical buffer写操作: physical buffer 的写操作应该在shared memory中的buffer pool写操作之前 完成; 以下几类事件将引起physical buffer写向硬盘: Checkpoint 两个physical buffer中有一个满的时候; 一个modified buffer page必须向硬盘写,但是它的before image仍在physical log buffer 的时候
  • 61. Informix 系统管理系统管理 3、checkpoint和buffer操作: buffer写操作: logical buffer 的写操作分两种情况: 如果database采用buffered logging,则当logical log buffer满的时候才向硬盘中写; 如果database采用是unbuffered logging,则数据库事务完成后马上就向硬盘中写; 以下几类事件将引起logical buffer写向硬盘: checkpoint 三个logical buffer中有一个满的时候; 对于使用unbuffered logging 的数据库,当一个事务完成后; 对于不使用logging的数据库,当一个session完成后, 此时会向logical log中写一些DDL;
  • 62. Informix 系统管理系统管理 4、系统容错: 系统失败的类型有以下几种: 系统crash 磁盘crash 系统数据不一致 针对以上失败,可以分别采用以下容错手段: 利用备份设备恢复系统,需要手工干预 利用mirroring技术恢复失败的磁盘,这个过程是自动的 使用Fast-Recovery,自动完成
  • 63. Informix 系统管理系统管理 4、系统容错: Fast Recovery是当IDS从Off-Line状态到Quiescent状态过程中,自动完成的 容错手段。 正常的shutdown后, IDS 中physical log将不再存在before image,而且 logical log中最后的记录是一条checkpoint信息;如果IDS是非正常的 shutdown,则physical log还会存在内容,而且logical log的最后一条记录 也不是checkpoint信息; Fast Recovery包含两个过程: 利用Physical Log,IDS将恢复到最后一次checkpoint完成的系统状态; 利用Logical Log,IDS将对在逻辑日志中记录已经commit的数据库操作进行重做(redo),而对那些没有commit的数据库操作进行rollback的操作;
  • 64. Informix 系统管理系统管理 4、系统容错: Fast Recovery的步骤如下: 把physical log中的信息全部恢复到硬盘中; 定位logical log中的最后一条checkpoint信息; 遍历最后一条checkpoint后所有logical log信息,对于那些有commit记录的数据库操作进行重做的动作;对于那些没有commit记录的数据库操作进行rolllback操作; Fast Recovery完成后,使用log模式的database将恢复到这种状态:完成 的数据库操作被恢复,没有完成的数据库操作被取消;而没有使用log模 式的database只能恢复到最后一次checkpoint时的系统状态;
  • 65. Informix 系统管理系统管理 5、日志管理: Physical log只有一个,除非是physical log所在的chunk存在镜像,这时候会有两个; Logical log最少是3个,个数不受限制; Physical log和logical log都是循环使用的; Logical log中包含上一次checkpoint的信息,以及在次以后数据库的修改信息,在下一次checkpoint完成后,前一次checkpoint信息及以前的信息可以被删除; 如果logical log被全部使用,则IDS将不能运行,除非进行系统备份;
  • 66. Informix 系统管理系统管理 5、日志管理: 对log(Physical Log和Logical Log)可以使用菜单式管理工具onmonitor,也 可以使用系统命令onparams; 增加一个logical log: onparams –a –d dbspace_name –s logical_log_size 删除一个logical log: onparams –d –l logical_log_id 切换当前使用的logical log: onmode –l 更改physical log设置: onparams –p –s physical_log_size –d dbspace_name -y 查看log状态: onstat –l
  • 67. Informix 系统监控系统监控 1、监控方法 2、监控内容
  • 68. Informix 系统监控系统监控 1、监控方法: 可以通过三种方法监控IDS系统: System Monitoring Interface(SMI) onstat oncheck
  • 69. Informix 系统监控系统监控 1、监控方法: SMI存在于系统库sysmaster中,是一些数据库表或者视图,内容直接来自于执行时的shared memory,实时地反映IDS状态; 数据库sysmaster在IDS第一次初始化时自动创建,创建sysmaster的sql文本存在于$INFORMIXDIR/etc/sysmaster.sql; SMI的内容是可读的,不能被锁(Lock),不能执行insert、update和delete工具dbschema和dbexport不能应用于sysmaster库; 在库sysmaster中,不能使用select rowid语句;
  • 70. Informix 系统监控系统监控 1、监控方法: SMI内容: sysdatabase: 数据库的属主、属性等 systabnames: IDS中table的定义 syslogs: logical log的属性 sysdbspaces: dbspace的属性 syschunks: chunk的属性 syslocks: 当前活动的lock情况 sysvpprof: 当前活动的vp情况 syssessions: 当前session情况 syssesprof: 当前session属性
  • 71. Informix 系统监控系统监控 1、监控方法: SMI内容: sysextents: extent属性 syschkio: chunk的I/O统计 sysptprof: tblspace属性 sysprofile: 当前事件属性,如:disk read, disk write, checkpoint等 sysadtinfo: audit配置信息 sysaudit: audit事件属性 sysconfig: IDS配置信息 sysdri: IDS的data-replication属性 sysseswts: 用户等待时间
  • 72. Informix 系统监控系统监控 1、监控方法: onstat 显示命令执行当时shared memory的各种状态; 没有磁盘I/O操作; 不需要lock,不会影响IDS效率; onstat是监控IDS状态使用最频繁的系统命令; onstat 命令
  • 73. Informix 系统监控系统监控 1、监控方法: oncheck 检查index和data页面的损坏情况; 修复损坏的index page; 检查磁盘上的数据结构; 显示不同数据结构的使用报告; 可能会对一些表使用共享锁;
  • 74. Informix 系统监控系统监控 2、监控内容: Message log 共享内存使用情况 Logical logs Chunk状态 用户活动(如lock、thread、sql) 资源不足情况
  • 75. Informix 系统监控系统监控 2、监控内容: Message log的记录文件在onconfig中指定,一般为$INFORMIXDIR/online.log; 查看log记录文件可以直接去编辑该文件,也可以使用命令onstat –m查看最近20条信息; log信息一般包括如下: IDS的运行模式改变(如从On-Line到Off-Line); Fast Recovery信息; Checkpoint记录; 配置的修改; 共享内存的动态修改; 导致内部一致性错误的I/O错误;
  • 76. Informix 系统监控系统监控 2、监控内容: 共享内存使用情况: onstat –g seg 查看共享内存段属性 onstat –g mem 查看共享内存使用情况 onmode –f 释放没有使用的共享内存资源 SHMVIRTSIZE 共享内存初始化大小 SHMADD 自动增加的共享内存大小 SHMTOTAL 共享内存总的大小
  • 77. Informix 系统监控系统监控 2、监控内容: Logical Logs: 查看logical logs状态使用命令: onstat –l “number”字段是logical log所对应的logical log id; “flags”字段是该logical log具有的属性,具体含义如下: F free,处于可用的状态 B 已经备份完毕 C 当前使用的logical log file U 正在使用 A 新增加 L 包含上一次checkpoint记录
  • 78. Informix 系统监控系统监控 2、监控内容: chunk状态: onstat –d 查看chunk和dbspace使用情况、剩余空间、活动情况等;
  • 79. Informix 系统监控系统监控 2、监控内容: 用户活动: 查看当前用户session: onstat –g ses [session_id] 查看当前执行的sql: onstat –g sql 查看当前用户: onstat –u 查看当前活动锁: onstat –k 删除session: onmode –z session_id
  • 80. Informix 系统监控系统监控 2、监控内容: 资源不足情况: onstat –p 显示当前数据库资源情况; 字段“ovlock”显示当前缺少的lock的数量,需要增大参数LOCKS的数值; 字段“ovuserthread”显示当前缺少的用户线程的数量; 字段“ovbuf”显示当前缺少的buffer的数量,需要增大参数BUFFERS数值; 字段“deadlks”显示当前死锁的数量; 字段“dltouts”显示响应时间超过DEADLOCK_TIMEOUT的锁的数量;
  • 81. Informix 系统监控系统监控 2、监控内容: lock介绍: 监控IDS下lock的使用情况,用系统命令: onstat –k lock的粒度: Database lock 锁的对象是整个database Table lock 锁的对象是整个table Page lock 锁的对象是整个page Row lock 锁的对象是整个row Byte lock 锁的对象是包含VARCHAR数据类型的row Key lock 锁的对象是index中的一个key值
  • 82. Informix 系统监控系统监控 2、监控内容: lock介绍: Lock的分类: Shared locks:允许其他用户共享资源,但是只允许读,不允许修改 Exclusive locks:不允许其他用户对资源有任何操作,包括读和修改 Update locks:使用于update游标中,在fetch时,会加上shared locks,在update时,会加上exclusive locks; Intent locks:是表级锁联合一个级别更高粒度的锁,如page级锁或者row级锁;
  • 83. Informix 系统监控系统监控 2、监控内容: lock介绍: Lock 的生命周期: 对于支持事务的database,COMMIT WORK或者ROLLBACK WORK完成后,才释放锁; 对于不支持事务的database,操作结束后,锁就被释放;
  • 84. Informix 系统监控系统监控 2、监控内容: lock介绍: Lock的划分标志: onstat –k输出中,有一个字段是“type”,各种标志的含义如下: HDR - header B - bytes lock S - shared X - exclusive I - intent U - update IX - intent-exclusive IS - intent-shared SIX - shared, intent-exclusive
  • 85. Informix 系统监控系统监控 2、监控内容: lock介绍: Lock粒度的判断方法: Database lock:onstat –k输出中,字段“tblsnum”值为“100002”的锁; Table lock:onstat –k输出中,字段“rowid”值为“0”的锁; Page lock:onstat –k输出中,字段“rowid”以“00”结束的锁; Row lock:onstat –k输出中,字段“rowid”不以“00”结尾的锁; Key lock:onstat –k输出中,字段“keys/”以“K”打头的锁,或者该字段对应一个不为0的数字的锁; Byte lock:onstat –k输出中,字段“type”含有“B”标志的锁;
  • 86. Informix 系统备份/恢复备份/恢复 1、概念 2、ontape工具
  • 87. Informix 系统备份/恢复备份/恢复 1、概念: 备份/恢复方法: ontape: 基本的备份/恢复工具; 不能指定时间点恢复; onbar: 需要storage manager支持(IDS提供ISM); 支持按时间点恢复;
  • 88. Informix 系统备份/恢复备份/恢复 1、概念: 备份/恢复级别: 0级:备份所有的数据库数据和DBMS信息; 1级:备份自上次0级备份后修改的数据信息; 2级:备份自上次1级备份后修改的数据信息; 0级备份为全备份,1级和2级备份为增量备份; 恢复方法: Cold restore:IDS处于Off-Line状态; Warm restore:IDS处于On-Line状态; Mixed restore:Cold Restore后,接着做Warm Restore; 只有在整个IDS不能启动到On-Line状态或者包含log(Physical/Logical Log) 的dbspace不能正常启动时,再使用Cold Restore;
  • 89. Informix 系统备份/恢复备份/恢复 1、概念: 备份/恢复步骤: 检查logical log中的剩余空间,至少需要一个logical log file一半容量大小的剩余空间; IDS做checkpoint的动作; IDS构造每一个chunk需要备份的page列表; IDS为每个dbspace创建临时表用来存储physical log信息; 启动内部backup线程,开始备份。 备份内容 备份数据库信息,和logical log内容;
  • 90. Informix 系统备份/恢复备份/恢复 1、概念: 以下时候,需要做0级备份: 增加mirroring; 增加logical log; 改变physical log的大小或者存放的dbspace; 删除一个chunk或者一个dbspace;
  • 91. Informix 系统备份/恢复备份/恢复 2、ontape工具: 备份/恢复使用方法: ontape {-a | -c | -l | -p -r [-D dbspace_name] | -s –L backup_level] } -a Automatic Backup of Logical Log file -c Continuous backup of logical log file -l Logical Restore -p Physical Restore for HDR -r Full restore dbspaces/blobspaces as listed -s Backup full system
  • 92. Informix 系统备份/恢复备份/恢复 2、ontape工具: ontape制作的备份数据格式: Control pages中以下内容:备份的dbspaces列表,备份级别,备份时间等; System reserved pages是root dbspace 12个系统保留页的备份; Logical log information只有做0级备份时才有; 当所有dbspaces/blobspaces中数据都被写到备份文件后,trailer page用来 标识备份数据的结束; Control pageSystem Reserved pagesLogical log Information (level – 0)blobspacesdbspacesTrailer page
  • 93. Informix 系统排错排错初步 1、错误类型及排错方法
  • 94. Informix 系统排错排错初步 1、错误类型及排错方法 Kernel参数: SHMMAX 系统使用共享内存的最大值 SHMSEG 当共享内存不足时,自动增加的共享内存的大小 SEMMSL 一个信号量集中所包含的信号量的多少,应该>=100 对于OLTP应用来讲,增加共享内存中Resident Portion中的buffer数量利于提高处理的性能,但是对于DSS应用来讲,一般对数据库的读操作都是顺序读,所以不需要太多的buffer来做数据缓冲,所以增大buffer的数量对DSS应用意义不大;
  • 95. Informix 系统排错排错初步 1、错误类型及排错方法 对于DSS应用,virtual portion中含有的很多pool,如:sort pool、join pool,对DSS的性能影响很大,相反,对OLTP应用就没有很大作用; 如果IDS同时支持OLTP应用和DSS应用,可通过DS_TOTAL_MEMORY参数来协调OLTP和DSS对Virtual Portion共享内存的资源分配;如果DSS应用比较重要,可以把这个参数的值设大一些;
  • 96. Informix 系统排错排错初步 1、错误类型及排错方法 chunk的属性和属主: 首先,应该注意chunk的属主一定是informix用户,属主是informix组; 其次,在有些操作系统平台,尽量使用raw device,而不要使用cooked file,这样会大大提高I/O读写速度; 有关临时dbspace IDS运行时,会产生很多临时表和临时数据,如果IDS中存在临时dbspace, 则会把这些临时数据存放在临时dbspace中,如果不存在临时dbspace, 则会使用root dbspace或者是该数据库所在的dbspace存放临时数据,所 以,应尽量使用临时dbspace;
  • 97. Informix 系统排错排错初步 1、错误类型及排错方法 INFORMIXSERVER、DBSERVER和sqlhosts文件 如果在连接IDS server时出现问题,一般是由于以上三个 变量定义不一 致造成的,这时,要检查它们定义的一致性; 对于长事务: LTXHWM表示当长事务占用LTXHWM的logical log空间时,该事务将自动 rollback;LTXEHWN表示当长事务占用LTXEHWM的logical log空间时,数 据库不做其他的操作只能允许该长事务做rollback。如果IDS系统中存在 上事务,所以应调整这两个参数为适当值;
  • 98. Informix 系统排错排错初步 1、错误类型及排错方法 对于logical log: Logical log可以被循环使用,必须满足以下条件: 该log被备份完毕; 该log不含有上一次checkpoint信息; 该log目前不正在被使用; 为保证logical log的循环使用,要经常做备份,可以使用ontape进行 continuous 备份,并启用automatic备份;
  • 99. Informix 系统排错排错初步 1、错误类型及排错方法 关于数据一致性: oncheck –cD | -cd 检查数据一致性 oncheck –cI | -ci 检查index一致性 oncheck –cr 检查系统保留页 oncheck –cc 检查系统数据库信息 排错实例
  • 100. 第三课 系统维护主要内容: Informix 日常维护 Informix ODBC配置
  • 101. Informix 日常维护online.log日志文件分析 数据库日志文件online.log,可以查看数据库运行情况,并可通过其对数据库的参数进行调整,包括checkpoint的时间、逻辑日志填充时间、虚拟共享内存的条目。/informix/online.log文件记录着online系统的启动信息、参数调整信息、检查点信息、错误信息和关闭系统信息等。当数据库开始在主控台上有错误信息出现时,希望能将错误信息记录下来,同时将错误信息出现前5天内的online.log日志文件打印出来,以便分析。
  • 102. Informix 日常维护Onstat: onstat应用命令能读取online动态服务器共享内存结构,报告共享内存运行情况。该命令运行时,不会影响数据库操作,但不能报告I/O磁盘错误。可以用onstat -a >/tmp/inf命令,将目前online系统的配置情况及运行情况存于/tmp/inf文件中,将inf文件打印出来,以便分析。
  • 103. Informix 日常维护Onstat: 监控缓冲区及监控预读onstat –p 可列出从共享内存缓冲池中读写的%cached值,同时可监测预读配置参数的有效性,以及共享内存中各种buffer 的情况 onstat –l查看数据库逻辑日志是否备份到磁带上
  • 104. Informix 日常维护onstat –g glo 显示关于Online系统中正在运行的VP的CPU使用情况的信息。CPU VP 承担online系统的主要工作负载。可以看到在online系统中,与其它进程相比,CPU VP使用了大部分的处理器资源。检查CPU VP的处理器使用情况:在一个正常的活动期间,运行onstat –g glo。一分钟后再运行onstat –g glo一次。从后一个输出的各个CPU VP的总的CPU时间中减去前一个输出中的总的CPU时间,结果就是CPU VP使用处理器的时间。如果接近60秒,那么CPU VP非常忙,应考虑增加另外的CPU VP(在多处理器系统上),或者在一个更快的处理器系统上运行。若online系统经常有一定数量的线索在就绪队列中等待运行,通过增加另外的CPU VP可以改善性能. 通过运行onstat -g rea可监测就绪队列中的项目的情况
  • 105. Informix 日常维护文件系统空间管理: 可用df -v来观察informix文件系统占有的空间是否大于70%。如大于70%,请检查文件系统,且将online.log和online.msg进行备份清空。
  • 106. Informix 日常维护数据库空间的管理 对于dbspace空间管理,可用onmonitor命令来管理。在onmonitor主菜单中选择dbspaces:Info选项,可以列出目前dbspace名称及创建时间,在此菜单中,键入ctrl-b键能列出指定dbspace中chunk数目,目前dbspace总的空间大小及空闲空间的大小。如dbspace空间即将被占满,可通过增加chunk来扩大dbspace空间 onstat –d查看chunk的情况。如dbspace空间即将被占满,可通过增加chunk来扩大dbspace空间 Informix的日常管理及维护
  • 107. 日常维护工作1、定期对数据库日志文件online.log的数据进行分析收集。以检查系统的运行情况 根据以上数据,适当调整数据库的配置参数 Online.log日志 虚拟内存段(初始为32768kb) 逻辑日志文件填充时间(分) CHKPOINT持续时间(秒) 运行时间段 每增一个为(32768kb) Max Min average max min average                
  • 108. 日常维护工作2、通过onstat –d定期查看数据库存放数据chunk的情况 命令格式 已使用chunk的个数 Chunk的flag是否全为PO- Onstat -d    
  • 109. 日常维护工作 4、通过onstat –l 定期查看数据库逻辑日志是否备份。 5、定期对日志文件online.log进行备份清理。
  • 110. 日常维护工作5、 定期对系统查询进行优化 在Informix数据库的系统表systables中有一字段nrows,专门用来记录各表的记录个数。优化器在运行法则判断时,各表的nrows 值具有很高的参考价值。nrows的更新可通过如下命令来完成,即: update statistics [for table 〈table-name〉] 其中,方括号[]中的子句是可选的,用于指定表名,以对该表进行更新;否则,将对数据库中的各表进行全部更新。
  • 111. Informix ODBC配置IDS的相关配置: sqlhosts services Informix ODBC配置
  • 112. 第四课 应用开发主要内容: SQL 简介 Informix 应用开发简介 Informix SQL培训教材
  • 113. Informix SQL入门与库相关操作 与表相关操作 查询操作 删除操作 插入操作 修改操作 与索引相关操作 与事务相关操作 载入/载出操作
  • 114. Informix SQL入门建库 : 格式: CREATE DATABASE database-name [IN dbspace-name] [WITH LOG 说明: dbspace-name为该库存放数据的dbspace,缺省为root dbspace WITH LOG将该库设置为日志模式,如果不指定,则不能使用事务以及与日志有关的操作。 示例: CREATE DATABASE db_test IN user_dbs WITH LOG 删库 : 格式: DROP DATABASE database-name 说明: 该操作无法恢复,执行后将删除该库、库中所有的表、以及所有的数据。 示例: DROP DATABASE db_test
  • 115. Informix SQL入门打开数据库 格式: DATABASE database-name 说明: 选择可访问的库作为当前库。 示例: DATABASE db_test 关闭数据库 格式: CLOSE DATABASE 说明: 使用该语句来关闭当前的数据库。 示例: CLOSE DATABASE
  • 116. Informix SQL入门建表 格式: CREATE [TEMP] TABLE table-name ( column-name datatype [NOT NULL],…) 示例: CREATE TABLE book ( name char(20) NOT NULL, author char(20), price float )
  • 117. Informix SQL入门删除表 格式: DROP TABLE table-name 说明: 使用该语句来删除特定表。 示例: DROP TABLE table-test
  • 118. Informix SQL入门查询操作: 格式: 格式: SELECT [DISTINCT] select-list FROM tablename [,…] [WHERE condition] [GROUP BY column-list] [HAVING condition] [ORDER BY column-list [DESC],…] [INTO TEMP table-name] 示例: SELECT fname,lname,state FROM customer WHERE state <> 'CA' SELECT fname, lname FROM customer WHERE state <> "CA" ORDER BY lname; SELECT * FROM customer WHERE lname MATCH "[J-O]*" SELECT fname, lname, age FROM customer WHERE age BETWEEN 20 and 30; SELECT max(age), min(age) FROM customer SELECT fname, lname FROM customer WHERE state is null SELECT age, count(*) FROM customer GROUP BY age SELECT age, count(*) FROM customer GROUP BY age HAVING count(*)>1 SELECT AVERAGE(age) FROM customer
  • 119. Informix SQL入门删除操作 格式: DELETE FROM table-name [WHERE condition] 说明: 使用该语句来删除特定表中满足条件的记录。 示例: DELETE FROM table_test where id>2; 插入操作 格式: INSERT INTO table-name [(column-list)] {VALUES (value-list) | SELECT-statement} 说明: 使用该语句来往表中插入记录。 示例: INSERT INTO table-test values (1,”234”,222);
  • 120. Informix SQL入门修改操作 格式: UPDATE table-name SET {column-name = expression [,...]| {(col-list) | *} = (expr-list)} [WHERE condition] 说明: 使用该语句修改表中特定条件的记录。 示例: UPDATE table-test SET cc=123 WHERE cc>1;
  • 121. Informix SQL入门建索引 格式: CREATE [UNIQUE] INDEX index-name ON table-name (column-name,…) 说明: 使用该语句可以建立索引。 示例: CREATE INDEX cust_idx1 ON customer ( lname ) 删除索引 格式:DROP INDEX index-name 说明: 使用该语句可以删除索引。 示例: DROP INDEX index_test
  • 122. Informix SQL入门事务处理 开始事务 : 格式: BEGIN WORK 说明: 使用该语句启动一个事务。 示例: BEGIN WORK 提交事务 : 格式:COMMIT WORK 说明: 使用该语句可以提交事务。 示例: COMMIT WORK
  • 123. Informix SQL入门事务处理 回滚事务 : 格式: ROLLBACK WORK 说明: 使用该语句回滚一个事务,使该事务回滚到BEGIN WORK的状态。 示例: ROLLBACK WORK
  • 124. Informix SQL入门载出 格式: UNLOAD TO file-name select-statement 说明: 使用该语句把表中的相应记录输出到文件。 示例: UNLOAD TO /tmp/customer.txt select * from customer 载入 格式:LOAD FROM file-name INSERT INTO table-name 说明: 使用该语句把文件中的内容载入到相应的表中。 示例: LOAD FROM /tmp/customer.txt INSERT INTO customer
  • 125. Informix 应用开发提高INFORMIX数据库运行效率 策略与措施
  • 126. Informix系统优化建议对数据库的优化首先是从系统配置方面的优化 ,Informix的系统性能,与磁盘、CPU、共享内存和网络相关较大,故对其优化,应关注以下几点: 对磁盘调整的原则是降低读盘次数,极大化每次读盘数据量,数据分布均匀,防止瓶颈的发生 Online的磁盘空间应采用裸设备方式(raw device),而不采用文件系统方式(cooked file),前者比后者处理速度要快得多,且可靠性高
  • 127. Informix系统优化建议物理日志缓存空间应在30~50兆间即可,不必太大 设置cpu vp个数为cpu个数减1(若cpu个数为1,则cpu vp也为1) 共享内存一般是系统内存的1/3~1/4 一个cpu vp配4个LRU队列,n个LRU队列配n个页刷新进程page_cleaner 调谐使其高速缓冲区读命中率大于95%,写命中率大于85%
  • 128. Informix系统优化建议设定多张网卡可改进性能,网络碰撞率应在8%以内 在整个的调整之中,Informix-online数据服务器性能的调试往往在一定的经验值基础上动态反复调整、测试才能获得最终满意的结果。 INFORMIX数据库系统参数性能调整的优劣将直接影响INFORMIX数据库运行效率
  • 129. Informix系统优化建议Select语句优化策略: ⑴ 对于大数据量的求和应避免使用单一的sum命令处理,而采用group by方式与其结合,有时其效率可提高几倍甚至百倍; ⑵ 最具有限制性的条件放在前面,大值在前,小值在后; ⑶ 避免子查询与相关查询; ⑷ 避免会引起磁盘读写的rowid操作;在where子句中或select语句中,用rowid要产生磁盘读写,是一个物理过程,会影响性能;
  • 130. Informix系统优化建议Select语句优化策略: ⑹ where子句中变量顺序应与索引字键顺序相同; ⑺ 用=替代matches的操作。通过聚族索引cluster index提高效率; ⑻ 避免使用order by,group by,该操作需生成临时表而影响效率,可用视图来处理,视图的引入能控制用户的存取,提高效率;
  • 131. Informix系统优化建议insert语句优化策略: ⑴ 采用insert cursor或put替代insert; ⑵ 避免加长锁、长事务操作,这在处理大数据量时其优劣尤为突出,在能保证数据一致性的前提下应将长事务分解为小事务来处理。 ⑶ 宿主变量应在执行insert操作前转换为表结构描述的数据类型,避免insert语句操作时不同数据类型自动转换而影响其效率。 (4) 对表的insert操作很频繁时,可以将index fill factor降低一些,采用row lock 代替page lock。
  • 132. Informix系统优化建议update语句优化策略: ⑴ 用子串代替matches,避免使用不从第一个开始的子串; (2) 避免加长锁修改,避免长事务处理。
  • 133. Informix系统优化建议delete语句优化策略: ⑴ 用drop table,create table和create index代替delete from table,能快速清理并释放表空间; (2) 避免长事务处理; (3) 使用关联(父子)删除cascading delete; (4) 编写程序使用delete cursor删,而不采用delete from table where…的方式。
  • 134. Informix系统优化建议index索引策略的优化与原则: (1) 两表中有关联,则关联字段必须建索引。如果select语句的where子句具有在一个表的一个单字段和另一个表的一个单字段之间的连接条件,则对记录数目更多的那个表的那个字段建立索引;如果一个表的几个字段和另一个表的几个字段的连接条件,则对记录数目更多的那个表的起作用的字段上建立复合索引。 (2) 避免高重复率字段建索引。 (3) 对同一表不要过多地建索引。 (4) 建索引的字段的size尽量少,复合索引尽量少用。
  • 135. Informix系统优化建议index索引策略的优化与原则: (5) 建聚族索引,减少索引文件碎片,以加快检索速度。 (6) where子句经常用到的字段做索引。 (7) 先load data,后create index。 (8) 数据量小的表是否建索引影响不大,一般不要对记录数小于200的小表建立索引,因为从使用索引得到的速度不能抵消在表上打开和检索索引文件所需的时间。 (9) 建primary key
  • 136. 总结答疑 谢 谢!