动态网站制作指南
[  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库学院 > 数据库技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ 数据库技巧 ]的信息

本月文章推荐
.如何在把超过固定长度的文字以"….
.两表(多表)关联update的写法.
.优化数据库的方法及SQL语句优化的.
.如何利用SQL查询返回庞大的整数序.
.sql server 2000无法打开1433端口.
.SQL server 2005的简单分页程序 .
.利用SQL Server 2005减轻生产服务.
.sql server 2005 数据库的检查与.
.sql年月日计算方法.
.SQL Server数据库超级管理员账号.
.教你轻松掌握SQL Server错误信息.
.SQL语句的自动优化.
.SQL Server Compact Edition 程序.
.使用 SQL Server 2005 数据库镜像.
.详细介绍分级汇总实现的3种方法的.
.SQL Server 中Inner join 和wher.
.SQL Server 2005支持的两条新语法.
.SQL Server 2000之日志传送功能—.
.通过两个例子讲解PIVOT/UNPIVOT的.
.sql server日志文件总结及日志满.

Informix数据库利用索引提高查询效率

文章类别:数据库技巧 | 发表日期:2008-4-25 |


如果查询结果仅为一行或很少几行时(高选择性high selectivity),利用索引进行查询会大大提高效率。相比之下,如果没有索引,查询则只能顺序扫描整个表。在OLTP环境下,事务处理在很大程度上依赖于索引。只有在表很小时,才会顺序扫描表。系统会根据SQL语句中的WHERE子句判断是否使用索引。顺序扫描表会使系统性能受到严重影响。sysmaster中sysptntab表中的pf_seqscnas列显示了所进行的顺序扫描。SET EXPLAIN命令同样可以提供关于SQL语句如何访问数据库中的重要信息。

DSS环境中的应用经常会查询出大量数据(低选择性 low selecviity),甚至整张表。顺序扫描对于这样的查询更为适合,因为此时顺序扫描可以利用light scan。light scan缓冲区位于共享内存的虚拟段与驻留段无关。关于light scan,以后章节中还将详述。

建立索引的代价

虽然索引可以很大地提高高选择性查询的性能,但维护这些索引是需要付出代价的。 以INSERT语句为例,在进行插入时系统首先将读取被插入表的索引以定位新记录关键字的位置。然后系统在将新记录写入数据页的同时还必须将新索引项写入索引节点。如果导致索引节点分裂,系统则必须多次写索引页 。

与INSERT语句相似,DELETE语句也要求读入整个索引以定位索引节点位置,并置上删除标志。在删除索引时还需要处理索引节点合并、整理等问题。

在执行UPDATE语句时,必须首先定位并且删除旧的关键字然后插入新的关键字。所以在UPDATE语句必须两次读取索引。

在实际系统中通常把索引的根节点和第一级节点读入共享内存中,但如果需要访问更低层次的索引节点则必须进行磁盘操作。

索引类型

通常建立分离索引(detached)或基于表达式的索引分片(expression based fragmented)。分离索引和分片索引可以使得索引的extent内页连续,因而能提高性能。而对于不分片的表来说,附加索引(attached)在建立索引时,索引页和数据页交叉存放在一起,因而会增加磁头寻找时间。

对于中、小型表应该建立分离索引。对于经常访问的大表应建立基于表达式的分片索引,以减少索引页的数量和提高检索速度。索引分片不宜太多,以免表达式计算开销过大。根据索引的大小,一般可以分为4片。索引分片不支持轮转法(round robin)。

分离式索引与数据页分别存放在不同的数据空间中。

例如:

CREATE INDEX index1 ON TABLE table_name(col1) in idxldbs;

基于表达式的分片索引在FRAGMENT BY EXPRESSION 子句指定的数据空间中创建。

例如:

CREATE INDEX index1 on TABLE table_name(col1) FRAGMENT BY EXPRESSION

col1>=0 and col1<=25000 in idxldbs1 col1>=25001 and col1<=50000 in idxldbs2

col1>=50001 and col1<=75000 in idxldbs3 col1>=750001 and col1<= 100000 in idxldbs4;

隐式索引

在定义约束条件时如果没有可利用的索引,系统将创建隐式索引。用户不能对隐式索引指定数据空间的位置、分片策略或者填充因子。隐式索引创建在数据库(而非表)所在地数据空间中,这给磁盘管理和性能带来了一些影响。

用户如果需要建立约束条件,最好能先创建与约束条件完全匹配的显式索引然后用ALTER TABLE命令增加约束条件。这样该约束条件就可以利用显式索引而不必再建立隐式索引。

例如按如下方式:

CREATE TABLE table_name( col1 INTEGER, col2 INTEGER, col3 CHAR(25), ) in tableldbs;

CREATE unique INDEX index1 ON TABLE table_name(col1) in idxldbs;

ALTER TABLE table_name ADD CONSTRAINT PRIMARYKEY(col1);

而不要按如下方式:

CREATE TABLE table_name( col1 INTEGER, col2 INTEGER, col3 CHAR(25), PRIMARY KEY (col1) )

in tableldbs;

FILLACTOR(填充因子)

对于SELECT操作,将FILLFACTOR 设为100

对于SELECT 和DELETE操作将FILLFACTOR 设为100

对于INSERT 和 UPDATE操作将FILLFACTOR设为50到70

CREATE INDEX index1 ON TABLE table_name(col1) in idx1 dbs FILLFACTOR 70;

填充因子决定了在建立索引时每一索引页的填充度。该参数是可以改变的。参数FILLFACTOR缺省值为90。如果只是改变某个索引的设置,请使用CREATE INDEX的FILLFACTOR子句。

设置较大的填充因子可以使索引更紧凑、使缓冲区更有效同时也可以减少检索记录时读取的页数。对于只读表应将FILLFACTOR设置为100。

对于只执行读和操作的表,如果将FILLFACTOR设置为100,在删除记录时可以减少合并索引节点、整理索引树的可能性。

对于有大量插入和更新操作的表,应该将FILLFACTOR设置为50到70。由于填充因子较小,在插入和更新操作时将延迟索引节点(页面)的分裂,从而提高系统性能。

有如下的SQL FILLFACTOR例句:

CREATE INDEX index1 ON TABLE table_name(col1) in idxldbs FILLFACTOR 70;

建立索引的步骤

建立索引必须遵循如下步骤:

确定需要建立的索引

决定索引的类型,分离索引还是分片索引。如果是分片索引,确定表达式

为每一索引确定填充因子

计算索引所需空间

决定索引数据空间在磁盘上的位置

为索引创建数据空间

定髓临时数据空间大小和位置。临时数据空间最好能分布存储。

利用DBSPACETEMP 设置临时数据空间的大小,利用onspace命令的-t选项创建临时数据空间

设置环境变量PDQPRIORITY 和PSORT_NPROCS

创建相应的配置文件。其中各选项的最优设置参见并行排序和载入环境

配置参数

建立索引时参数的优化设置与上一章载入环境中的设置相同。在此作一简单回顾:

NUMCPUVPS 设置为CPU数目

BUFFERS 设置尽量多的缓冲区。初始时应为缓冲区分配最多至25%的内存。

SHMVIRTSIZE 赋予初始段最大值。最多至可用内存的75%

CKPTINTVL 3000。由物理日志决定何时生成检查点。

LRUS 一个LRU队列对含500-700个缓冲并允许LRU队列对最大至128

LUR_MAX_DIRTY 设置为80

LUR_MIN_dirty 设置为70

RA_PAGES 设置为128,

RA_THRESHOLD 设置为120

DBSPACETEMP 设置多个大小相同的临时数据空间分布在不同的设备上

DS_TOTAL_MEMORY 90%*SHMVIRTSIZE

DS_MAX_SCANS 待建索引表的最大分片数

下面是对环境变量的简单回顾:

PSORT_NPROCS 设置为CPU数目,最大至10

PDQPRIORITY 设置为100

数据聚集

如果经常根据索引从表中读取大量的数据,那么最好对这些数据建立聚集。通过建立聚集可以减少读取页的数量,缩短检索时间,并可以充分利用预读功能顺序扫描数据。

数据的聚集通过创建聚集索引(clustered index)完成。利用ALTER INDEX ...TO CLUSTER 语句可以将原有索引改为聚集索引,原有索引中的数据记录顺序将作重排。如果直接创建聚集索引,系统也会将数据记录排序。请注意,在ATLTER INDEX ...TO CLUSTER 和CREATE CLUSTER INDEX 语句执行后,系统将建立新表并删除旧表。所以必须有足够的空间来容纳新旧两张表。

如果可能,在载入数据前先对其按索引顺序排序,这样建立索引时不必设置CLUSTER子句,从而不必对数据进行聚集操作,避免建新表删旧表过程的开销。


上一篇:由浅入深讲解update statistics的级别 人气:168
下一篇:在Informix数据库中释放异常的锁资源 人气:250
点击此处浏览全部数据库的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-5-16 乘风多用户PHP统计系统 v3.4
2008-5-16 轩溪下载系统 v3.78 build 0515
2008-5-16 普沙B2B 浙江省商贸网 v2.0
2008-5-16 asp抓蜘蛛的小程序 v1.0
2008-5-16 齐齐乐网私服发布站 仿haosf新版
2008-5-16 IssTech信息反馈系统 v1.0
2008-5-16 自由领域大头贴(js接口版) 修正版
2008-5-16 医院网站系统
2008-5-16 智拓-分类信息管理系统 v5.0
2008-5-7 Windows XP SP3 官方英文版
2008-5-7 Windows XP SP3 官方香港中文版
2008-5-7 Windows XP SP3 官方繁体中文版
2008-5-7 Windows XP SP3 官方简体中文版
2008-4-30 Multiple Unzip Wizard 1.02
2008-4-30 Multiple Unrar Wizard 1.0.0
2008-4-30 WinZip Install/Try/Uninstall a
2008-4-30 ZIP压缩文件修复器WzipFix 2.0
2008-4-30 Pentazip 6.01 Build 189 For Wi
  发表评论
姓 名: 验证码: [ 全部贴吧 ] [ 浏览评论 ]
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号