扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
FIRST_ROWS和ALL_ROWS是自IDS V7.3开始增加的新选项,无论对OLTP还是DSS都非常有用。传统的查询(即ALL_ROWS方式)一次将所有查询结果输出到共享内存缓冲区中,时间的消耗非常大,然而实践表明,大部分用户仅关注最初的几屏输出内容,因此FIRST_ROWS选项为我们提供了很好的选择。FIRST_ROWS指导优化器选择一条查询路径,使其只输出填满一个缓冲区的记录数,如果用户继续查询则继续执行,这样避免了不必要的输出结果和时间浪费,也使查询速度大大提高。
由此可见,优化器的丰富功能为我们提供了灵活的手段,管理员可以根据不同应用情况选择最佳的方式,既能达到最佳的查询效果,又能将由此而造成的系统开销降至最低。
2.进行统计更新和数据分布
当数据库表做了大量的插入、删除操作或表的索引发生变化后,Online数据库系统表的相关信息与实际表的统计数字不一致,这对数据的完整性没有任何损害,但会影响到查询的速度。因为优化器所制定的计划和策略得以正确实施的前提是对系统表信息的精确读取,统计信息的正确性将直接影响到查询的执行效果,因此我们必须定期执行系统表信息的统计更新工作。此外还要经常做好数据分布工作,使数据的组织形式更为合理。通过数据分布,优化器可以根据有关信息确定如下内容:过滤器字段的选择率(Selectivity)、访问过滤器字段和表的策略、最佳的连接策略。一旦确定这些内容,查询的执行时间将会显著缩短。
进行统计更新和数据分布的唯一方法是运行SQL命令:Update Statistics……,其结果是:IDS 流览表和索引,一方面对统计信息加以编译,最终将编译好的信息存储到相应的系统表中,另一方面读取表中记录并对其进行排序以生成最好的组织形式。具体格式如下:
Update Statistics [ High | Medium | Low ] [ Distributions Only ] [ for table tabname [ (field1,field2……) ] ]
其中,High对表中的所有记录进行排序以产生数据分布。
Medium随时从表中选取部分记录进行排序以产生数据分布。
Low仅执行统计更新,即仅修改系统表systables、sysindexes、syscolumns的内容,但不进行数据分布。
Distributions Only进行数据分布和部分统计更新工作,不更新系统表sysindexes的内容。
为实现科学有效的统计更新和数据分布,通常应执行以下优化步骤:
(1)针对每张表运行
Update Statistics Medium for table tabname Distributions Only
(2)针对每张表中带索引的第一个字段运行
Update Statistics High for table tabname (fieldname)
(3)对某些表中带复合索引的每一个字段运行
Update Statistics Low for table tabname (fieldname1,fieldname2……)
以上顺序非常重要,不能搞错。为方便运行,我们可以将以上命令按顺序写入到一个shell程序文件中,让操作系统在每日数据最少改动时间定时运行该程序。
3.使用SQL语句缓存(SSC,SQL Statement Cache)功能
SSC是Informix IDS2000 V9中增加的新功能,提供了共享的语句缓存,从而实现了快速的SQL调用。传统情况下,每条SQL语句运行前都要进行逻辑分析以判断语法正误,还要在共享内存中为各语句分配空间。实践表明,无论是OLTP还是DSS应用,大量运行的SQL语句具有相同的格式,通过SSC,重复的SQL语句可以单一在共享内存中存储及共享使用,这样不仅大大减少了大量语句的分析过程,使查询的速度明显加快,而且节省了大量共享内存空间,带来了其他应用效果的改善。SSC的使用方法如下。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者