Informix数据库管理员和开发人员指导原则V1.doc_第1页
Informix数据库管理员和开发人员指导原则V1.doc_第2页
Informix数据库管理员和开发人员指导原则V1.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Informix数据库开发人员指导原则Version 1.1一、 目的1为提高数据库server运行稳定性和性能、加强数据库安全管理、提高查询和交易效率,特为开发人员制定下列指导原则。二、 指导原则A 建库方面l 在创建数据库时,不能创建在rootdbs上(缺省情况),需要指定dbspace,即创建在datadbs上:create database dbname in dbspacenamel 建立数据库应该使用en_us.819字符集使用缺省DB_LOCALE或设置DB_LOCALE=en_us.819l 如果有两个或两个以上的datadbs,则要考虑创建在哪个datadbs上。原则是:使每个datadbs上的数据大小尽量相近,以缩短数据库备份时间。B 表的使用方面l 对于新建的每个表,都需要把public用户的权限去除。为此创建每个新表的sql语句后,需要添加如下语句:revoke all on tablename from public;每个数据库中的表尽量由同一个用户来创建,这样对于以后权限的控制比较方便。l 对于很大的表,可以考虑使用分区表(parition)技术,即把表分布在多个datadbs上,这样可以提高数据的查询速度。l 建立大表的特殊处理对于大的表,例如记录数达到百万行以上的表,或者是随时间而增大的记录log的表,应该设置大的表first extent,next extent可以设为前者的1/10。extent以page(2K)为单位。如create table user.tabname ( col1 varchar(80) not null , col2 varchar(20) ) extent size 100000 next size 10000 lock mode page;这里的extent size 100000指的就是初始extent大小为200M; next size 10000 指的就是后续增量extent大小20M。l 临时表的用法在使用临时表时一定要加with no log,包括create temp table和select into temp两种方式,这些能提高临时表处理的效率,以及减少逻辑日志的使用量。C 关于数据清理和装载时的注意事项在一个带日志的数据库中进行大数据量的删除时,尽量不要直接delete。应该将所需要保留的数据先卸载(unload)出来,然后先删除(drop)表,再重新创建表并重新装载(load)数据,否则容易产生长事务及锁资源溢出的问题。在一个带日志的数据库中进行大数据量的装载时,如果条件许可,可将数据库日志改为不带日志,装载完数据后再将数据库日志重新改为带日志模式。或者在7.31版本以后,可以先将表创建为raw table,在装载完数据后将表改为standard模式(alter table tablename standard),由于raw table不支持索引,所有索引包括主键需在数据装载完毕并改为standard模式后再创建。如果一定要在带日志的情况下装载数据,建议将需要装载的文件切成记录数较少的多个文件,或者使用dbload工具装载,在装载完一定记录后先提交,再继续装载,以防产生长事务。在进行过数据删除或装载后一定要对表重新进行一次统计更新,以保持系统表信息和实际表信息的同步。D 统计更新(update statistics)对经常需要查询修改的表定期进行统计更新,是数据库保持高性能的重要条件。对于那些记录数增长比较快的表也应该定期做低度(low)的统计更新。如果还需要得到更好的查询性能,可对一些表的经常查询用到的索引字段进行高级的统计更新,语法如下:update statistics high for table tablename(col1,col2); 需要注意的是:不要对整表做高级统计更新,速度会非常慢。E SQL执行计划和set explain on的使用不同的sql有可能运行的开销会大不相同,为此,informix提供了set explain的工具供开发人员和数据库管理人员分析一个sql语句的估计开销和查询计划。语法为:在dbaccess内,SQL语句执行添加1行set explain on;(9版本以前)或者set explain on avoid_execute;(9版本以后),informix会在当前目录下生成一个sqexplain.out的文件。文件中的Estimated cost为informix查询计划的预估开销,越小越好。对于缺少经验的应用开发人员,可以先多使用这个工具,以获得不同sql语句之间效率高低的相关知识,从而对以后的编程积累知识。当然,有些时候,数据库会制定出一个错误的查询计划,这在早期版本中比较常见,特别是在表上又多个索引时,有可能会选用一个不适当的索引,导致开销大大增大。另外,经常定期的执行统计更新,也会影响数据库制定查询计划的准确性。F 锁和脏读对于经常需要访问修改的表,建议将其锁粒度设置为记录级锁,以减少锁冲突的概率,但是在做一些批量操作时,如果表的锁模式为记录级锁的话,会大大降低批量的性能,建议如果条件许可的话,在执行此类批量操作时,先对整表上排他锁(lock table in exclusive mode),会大大提高此类批量的性能;另外,建议所有的查询都设置隔离级别为脏读(set isolation to dirty read),这样不会产生因为所查询记录被锁而导致的查询失败。对于经常需要访问修改的表,建议将其锁粒度设置为记录级锁,以减少锁冲突的概率,但是在做一些批量操作时,如果表的锁模式为记录级锁的话,会大大降低批量的性能,建议如果条件许可的话,在执行此类批量操作时,先对整表上排他锁(lock table in exclusive mode),会大大提高此类批量的性能;另外,建议所有的查询都设置隔离级别为脏读(set isolation to dirty read),这样不会产生因为所查询记录被锁而导致的查询失败。G Sql编程的一些注意事项l 对于经常访问的表中字段,建议对其建立索引。并尽量多用索引查询,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论