【整理】informix statistics问题

Description:从生产环境导出的表更新到开发测试环境,导入表时要将测试环境的原数据清空,这里是单表导入。当informix的数据更新时,若未能及时更新统计信息,当进行查询时可能会使用不到预定的索引,导致查询效率低下。更新统计信息:update statistics for table tablename;
给定查询的不同执行策略可能会有不同的代价,构造具有最小查询执行代价的查询执行计划是数据库系统的职责。查询优化是为了查询选择最有效的查询策略的过程。查询优化是尽量找出与给定表达式等价的、但是执行效率更高的一个表达式,而且决定执行运算时所采用的具体算法以及将使用的特定索引等。
为了在诸多查询策略中作出选择,数据库系统的优化器必须估计每个查询策略的代价,磁盘访问次数常常是衡量代价的主要标准。在没有按照某策略执行查询前,准确计算出该策略的代价是不可能的,所以,优化器要利用数据库系统中的统计信息,来估计查询策略的代价。 Informix数据库系统这些统计信息保存在SYSMASTER数据库中,如果要维护准确的统计值,那么每当表数据修改时,相应的统计值也必须更新,这种更新会带来很大的代价,因此Informix系统不是在每次修改时对统计值更新。因此,用于选择查询策略的统计数据不一定完全正确,有时会遇到查询用不到应该使用的索引,就是统计信息没有更新的原因。 对Informix数据库系统,这些统计信息保存在SYSMASTER数据库中,可以使用UPDATE STATISTICS命令更新。
给定查询的不同执行策略可能会有不同的代价,构造具有最小查询执行代价的查询执行计划是数据库系统的职责。查询优化是为了查询选择最有效的查询策略的过程。查询优化是尽量找出与给定表达式等价的、但是执行效率更高的一个表达式,而且决定执行运算时所采用的具体算法以及将使用的特定索引等。  为了在诸多查询策略中作出选择,数据库系统的优化器必须估计每个查询策略的代价,磁盘访问次数常常是衡量代价的主要标准。在没有按照某策略执行查询前,准确计算出该策略的代价是不可能的,所以,优化器要利用数据库系统中的统计信息,来估计查询策略的代价。Informix数据库系统这些统计信息保存在 SYSMASTER数据库中,如果要维护准确的统计值,那么每当表数据修改时,相应的统计值也必须更新,这种更新会带来很大的代价,因此Informix 系统不是在每次修改时对统计值更新。因此,用于选择查询策略的统计数据不一定完全正确,有时会遇到查询用不到应该使用的索引,就是统计信息没有更新的原因。 对Informix数据库系统,这些统计信息保存在SYSMASTER数据库中,可以使用UPDATE STATISTICS命令更新。

以下是用于估计代价的信息:

1. 记录数
2. 表空间的页数
3. 记录长度
4. 字段不同值个数
5. 字段值的分布
6. 索引的层数
7. 索引叶结点数目
8. 索引B+树的深度
9. 索引是升序还是降序或聚类索引
10. 索引占用的页面数目

Informix 数据库服务器中的优化器为SQL语句的查询提供最有效的策略,这就使得你在进行表的连接查询时不必全面考虑究竟那个表首先搜索,以及究竟需要使用那个索引。
通过执行update statistics命令可以更新系统的统计信息,使得优化器得到当前最新的统计信息。当修改或删除一个表的相关数据时,系统的统计信息并不自动更新。比如:如果使用delete命令删除一个数据库表内的一条记录,删除完成后查找systables内关于该表的记录信息时,将会发现nrows(数据库表的记录行数目)并没有改变。而通过执行update statistics命令,就可以使系统表systables、sysdistrib、syscolumns、sysindexes等表内的信息得到更新。在运行完update statistics后,这时就会发现systables内的nrows字段已得到更新。如果执行update statistics medium(high),在sysdistrib表内还可以得到更新的数据分布信息。所以,当大量地修改数据库表后最好执行一下update statistics操作。另外,update statistics将强迫存储过程的优化(对sysprocpplan更新)。以下是与update statistics 相关的系统表:
1、syscolumns:
描述了数据库内的每个字段,其中的colmin、colmax存储了数据库各表字段的次小及次大值,这些值只有在该字段是索引且运行了Update statistics之后才生效。如对于字段值1、2、3、4、5,则4为次大值,2为次小值。
2、sysdistrib:
存储了数据分布信息。该表内提供了详细的表字段的信息用于提供给优化器优化SQL Select语句的执行。当执行update statistics medium(high)之后将往此表存入信息。
执行“dbschema -hd”可以得到指定表或字段的分布信息

3、sysindexes:

描述了数据库内的索引信息。对于数据库内的每个索引对应一条记录。修改索引之后只有执行Update statistics才能使其改变在该表内得到反映。同时也更新clust的数值,在该表的数据页数目及数据库记录条数之间

4、systables:
通过执行Update statistics可以更新nrows数据

update statistics有以下三种级别:

1、LOW:

缺省为LOW,此时搜集了关于column的最少量信息。只有systables、syscolumns、sysindexes内的内容改变,不影响sysdistrib。为了提高效率,一般对非索引字段执行LOW操作

2、HIGH:

此时构建的分布信息是准确的,而不是统计意义上的。

因为耗费时间和占用CPU 资源,可以只对表或字段执行HIGH操作。对于非常大的表,数据库服务器将扫描一次每个字段的所有数据。可以配置DBUPSPACE环境变量来决定可以利用的最大的系统磁盘空间

3、MEDIUM:抽样选取数据分布信息,故所需时间比HIGH要少什么时候应该执行update ststistics ?

建议在以下情况,执行update statistics 操作:

对数据做了大量修改,大量是针对数据的分布而言,若数据分布没有明显的改变则可以不做改变的数据库表有与之相关的存储过程,避免在运行时存储过程重新优化数据库升级之后完成对索引的转变4, update ststistics 的方法考虑到速度性能因素,执行update statistics的推荐方法:

对表执行:update statistics medium for table #### distributions only

对每个索引的首字段执行:update statistics high

对复合索引执行:update statistics low

必要时对非索引字段但在条件中使用到的字段执行Update statistics high操作
在 Ansys CFX Pre 中配置 RGP 表的分步指南 掌握在 Ansys CFX Pre 中设置 RGP 表的技巧,以优化仿真精度和效率。 阅读详情

相关推荐

Excel数据清洗实战:8个必学函数搞定90%的脏数据问题(附案例)

本文通过一个完整的销售数据清洗案例,详细讲解了如何组合使用TRIM、CLEAN、SUBSTITUTE等8个核心Excel函数,构建自动化清洗流水线,高效解决日常办公中90%的脏数据问题,从而将时间留给更有价值的分析工作。

weixin_29215391的博客 583

Update Statistics用法

     一、Update Statistics的作用  为了提高数据库的效率,INFORMIX提供了一个基于成本的查询优化器,执行update statistics语句的作用就是将您创建的数据库表的有关统计信息更新到系统sysmaster的相关表中(如systables、syscolumns、sysindexes、sysdistrib、sysprocplan等),以便查询优化器选择最佳的执行路径

杂记 2万+

【吃瓜教程】周志华西瓜书课后习题第一章答案

第一章 1.1表1.1中若只包含编号为1和4的两个样例,试给出相应的版本空间。 编号 色泽 根蒂 敲声 好瓜(标记) 1 青绿 蜷缩 浊响 是Y 4 乌黑 稍蜷 沉闷 否N 知识储备: 假设空间: 所有假设组成的空间 版本空间:与训练集一致的假设集合 从假设空间到版本空间算法大致如下: 1.删除与正例不一致的假设且删除与反例一致的假设 2.删除与正例不一致的假设 3.删除与反例一致的假设 具体选择哪种

MaxQuYY的博客 8370

informix 统计更新UPDATE STATISTICS

本周做了准生产数据库压测,期间出现很多问题,需要深度学习 其中贯穿之中最重要的一个是统计更新,由于开始没有做定时统计更新,数据库日至表会出现“无法以物理排序顺序读取下一行”导致数据库出现行锁。 定错期间盲目,没有思路浪费了较多时间。 最后通过给日至表加上新的索引并做成定时统计更新,解决了数据库锁死的问题。 以下为informix数据库统计更新原理: ~~~~~~~~~

未之奋豆 6098

鸿蒙设备部署轻量级Web服务器NexServer实践

Web服务器作为互联网基础设施的核心组件,其轻量化部署在移动终端领域具有重要实践价值。本文以鸿蒙操作系统为技术载体,深入解析微内核架构如何通过资源隔离和分布式软总线实现服务高可用。重点探讨NexServer这一专为嵌入式场景设计的轻量级服务器,其ARM原生支持特性与15MB级内存占用,在HTTP/2协议处理与WebSocket通信中展现出独特优势。在智能家居控制面板、边缘计算节点等物联网典型场景中,鸿蒙设备结合NexServer的方案相比传统Nginx部署可降低60%资源消耗。通过实测数据对比,该组合在50

weixin_30411239的博客 481

5G 网络的移动性管理上下文对比介绍

5G 网络的移动性管理上下文对比介绍 4G/5G MM移动性管理机制对比 5G引入了新移动性管理状态,通过mobility pattern(移动方式)实现按需的移动性管理等。 MM的相关状态分为一下几种: RM状态(用户注册管理 注册态/非注册态)和CM状态(用户连接态/空闲态)独立;RM状态标识UE是否注册到网络,CM状态标识UE和核心网的信令连接是否存在。 RAN侧引入RRC-inactive state:UE(用户端)对于CN(核心网)而言处于连接态,对RAN(接入网)而言处于Ld..

m0_59032675的博客 4819

informix智能统计更新

自动搜索到表上的索引字段,并形成统计更新脚本,自动对索引字段做统计更新。 cat $INFORMIXDIR/AM/up_stat.sh #!/bin/bash db=$1 echo 'unload to /tmp/up_stat.sql select "update statistics high for table "||t.tabname||"("||c.colname||"...

Uncle.Cui的技术博客 595

山东大学机试试题合集

山东大学机试试题合集

qq_63349644的博客 2621

Informix查询优化update statistics小注

给定查询的不同执行策略可能会有不同的代价,构造具有最小查询执行代价的查询执行计划是数据库系统的职责。查询优化是为了查询选择最有效的查询策略的过程。查询优化是尽量找出与给定表达式等价的、但是执行效率更高的一个表达式,而且决定执行运算时所采用的具体算法以及将使用的特定索引等。 为了在诸多查询策略中作出选择,数据库系统的优化器必须估计每个查询策略的代价,磁盘访问次数常常是衡量代价的主要标准。在没有按照某策略执行查询前,准确计算出该策略的代价是不可能的,所以,优化器要利用数据库系统中的统计信息,来估计查询策略的代价

m0_46426259的博客 691

华为云物联网系统开发(纯云端)外包方案及项目需求说明书

提供一个详细的需求文档(SRS,Software Requirements Specification),用于指导完全零基础的非专业负责人外包兼职专业技术人员开发一款基于华为云物联网平台、Astro低代码平台和Astro Canvas大屏设计的物联网系统,纯软件实现并支持下载部署。文档涵盖详细的软硬件组成清单(聚焦软件和云服务)、技术文档要求等,确保非专业人员在移交后能够复用、扩展和操作该系统。本文档简洁、全面,适合非技术背景的管理者使用,并基于华为云生态的内部实施部署。

hy行者勇哥的博客 618

开源Harness项目DeerFlow 2.0,让智能体几乎能完成任何复杂任务

从提示工程到上下文工程,再到如今的 Harness,这条演进路径的本质是从“教模型如何理解人类”迈向“为模型构建一个可执行、可信赖、可长期运转的数字世界”。 当越来越多像 DeerFlow 2.0 这样的 Super Agent Harness 走向普及,AI 将真正进化为能理解、会规划、可执行、敢交付、长期负责的成熟生产力形态。

技术引领业务创新 519

update statistics 原理及其使用(转)

一、Update Statistics的作用   为了提高数据库的效率,INFORMIX提供了一个基于成本的查询优化器,执行update statistics语句的作用就是将您创建的数据库表的有关统计信息更新到系统sysmaster的相关表中(如systables、syscolumns、sysindexes、sysdistrib、sysprocplan等),以便查询优化...

weixin_33755554的博客 422

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Informix技巧

Informix技巧4则本文内容均来自网络,这里仅是组织整理,方便记忆和查阅,以及供更多的人学习,如果有兴趣可到文中的“出处”查看原文。--------------------------------------------------------------------------------1. UPDATE STATISTICS FOR TABLE tablename( 出处:Chi

amaryh的专栏 6320

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

优化思路整理-3-sql优化

informix数据库sql优化常规套路(原则:在尽量不修改应用程序和表结构的前提下,优化程序和表设计不在讨论之内) 1、统计更新 统计更新的对象是表内数据的分布采样。用概率进行统计。 现在数据库优化器是基于代价的优化器,一个sql语句在执行之前,会由优化器进行优化,选择代价最小的查询计划。 对于informix统计更新可能会影响优化器的分析行为,影响查询计划;如果统计更新前后查询计划没有

zhuhongxu2013的专栏 725

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

informix 中的 update statistics

IDS 中的 update statistics[@more@]执行 update statistics 命令,就可以使系统表 systables 、 sysdistrib 、 syscolumns 、 sysindexes等表...

cuanlvchi0974的博客 376

informix-系统视图

/****************************************************************************/ informix 系统视图 /****************************************************************************/ 1 systables 2 sysviews

yutonging2016的博客 2060

统计更新---update statistics

update statistics high|medium 中有两个资源:数据分布和准确分辨率。 数据分布: 数据分布过程是对一列或多列中的实际数据抽样,然后编入一系列Informix所谓的箱子(bulket)中。对于抽样数据所用的箱子有一个固定的数目。箱子数目和每个箱子所包含的准确数据范围都取决于为准确分辨而输入的值。 查看命令:dbschema -d dbname -hd tabnam...

Uncle.Cui的技术博客 3849

Informix的系统表信息

Informix的系统表信息:systables:描述数据库中的很张表;syscolumns:描述数据库中表的列;sysindexes:描述数据库中列的索引;sysfragments:存储了分段索引的片段信息;sysfragauth:表识别列级权限;sysviews:描述了数据库中定义的每个视图;sysdpend:描述了视图是如何依赖其他视图和表的;syssyntable:定义每一个同义词及其

有个程序员 3503

linux怎样更新informix数据,informix中理解统计更新

informix中理解统计更新理解informix中的统计更新内容提要:1.介绍统计更新当一个查询提交后,IDS优化器会算出如何执行这个查询的执行计划,优化器会分配成本到每个执行计划,最后选择成本最低的那个执行计划。统计更新主要有三个功能(1)重新编译SPL(2)删除distribution数据(3)为优化器搜集必要信息当计算一个执行计划成本时,优化器必须根据系统表来计算,主要是systables...

weixin_28077113的博客 689

转:数据库索引的优化

给定查询的不同执行策略可能会有不同的代价,构造具有最小查询执行代价的查询执行计划是数据库系统的职责。查询优化是为了查询选择最有效的查询策略的过程。查询优化是尽量找出与给定表达式等价的、但是执行效率更高的一个表达式,而且决定执行运算时所采用的具体算法以及将使用的特定索引等。 为了在诸多查询策略中作出选择,数据库系统的优化器必须估计每个查询策略的代价,磁盘访问次数常常是衡量代价的主要标准。在没有按照

dongzi502的专栏 534

informix的性能优化

informix的性能优化 以下是我用INFORMIX DATABASE的一点体会,分享给大家,欢迎大家一起探讨!   1. 日志缓冲    如果不怕丢失几个事务则最好用缓冲日志,这样可以得到更好的性能.    如果数据安全性很重要,则最好用非缓冲日志.2. DSS SERVER的优化有三个目标:    1>. 总查询通过量最大化        可以将ONCONFIG文件中的PDQPRIORIT

枫的专栏 5075
上一篇: Shell共享AWK变量
下一篇: 【整理】truncate,delete,drop用于数据删除
「已注销」
博客等级 码龄19年 22粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值