由浅入深讲解updatestatistics的级别

由浅入深讲解updatestatistics的级别,第1张

由浅入深讲解updatestatistics的级别,第2张

给定查询的不同执行策略可能具有不同的成本,因此数据库系统的职责是构造具有最低查询执行成本的查询执行计划。优化是为查询选择最有效的查询策略的过程。优化就是试图找到一个与给定表达式等价,但执行效率更高的表达式,并确定要使用的具体算法和要使用的具体索引。

为了在众多查询策略中进行选择,数据库系统的优化器必须估计每种查询策略的代价,而磁盘访问次数往往是衡量代价的主要标准。在执行某个策略之前,不可能准确计算出它的成本,所以优化器应该使用数据库系统中的统计信息来估计查询策略的成本。Informix数据库系统这些统计数据存储在SYSMASTER数据库中。如果要维护准确的统计,每次修改表格数据都必须更新相应的统计,这将带来很大的成本。因此,Informix系统不会在每次修改时更新统计信息。因此,用于选择查询策略的统计数据可能不完全正确,有时应该使用的索引在查询中没有使用,这就是统计信息没有更新的原因。对于Informix数据库系统,这些统计信息存储在SYSMASTER数据库中,可以使用UPDATE STATISTICS命令进行更新。

以下信息用于估算成本:

记录号

表格之间的页数空

记录长度

不同字段值的数量

价值分布

指数水平

索引叶节点的数量

索引+树的深度

索引是升序、降序还是聚集索引?

索引占用的页数

Informix数据库服务器中的优化器为SQL语句的查询提供了最有效的策略,使您不必完全考虑查询表时应该首先搜索哪个表以及需要使用哪个索引。

您可以通过执行update statistics命令来更新系统的统计信息,以便优化器可以获得最新的统计信息。

修改或删除表的相关数据时,系统的统计信息不会自动更新。例如,如果使用delete命令删除数据库表中的一条记录,在删除完成后,当您在systables中查找关于该表的记录信息时,您会发现nrows(数据库表中的记录行数)没有改变。通过执行update statistics命令,可以更新systables、sysditrib、syscolumns和sysindexes等系统表中的信息。运行update statistics之后,您会发现systables中的nrows字段已经被更新。如果执行update statistics medium(high ),还可以在sysdistrib表中获得更新的数据分布信息。因此,当大量数据库表被修改时,执行update statistics操作。此外,update statistics将强制优化存储过程(更新sysprocpplan)。以下是与更新统计相关的系统表:
1,syscolumns:

描述数据库中的每个字段,其中colmin和colmax存储数据库中每个表字段的第二小值和第二大值。这些值仅在字段被索引并且更新统计数据运行后生效。对于字段值1、2、3、4和5,4是第二大值,2是第二小值。

2、sysdistrib:

存储数据分布信息。此表为优化程序提供了详细的表字段信息,以优化SQL Select语句的执行。当执行更新统计介质(高)时,信息将存储在该表中。

执行“dbschema -hd”获取指定表或字段的分布信息。

3、系统索引:

描述数据库中的索引信息。数据库中的每个索引都有一条记录。修改索引后,只有通过执行Update statistics,其更改才能反映在表中。同时,clust的值也会更新,介于表中的数据页数和数据库记录数之间。

4、系统:

您可以通过执行Update statistics来更新nrows数据。

更新统计数据有以下三个级别:

1、低:

默认值为“低”,此时收集的有关列的信息最少。仅更改systables、syscolumns和sysinexes中的内容,这不会影响sysdistrib。为了提高效率,一般对非索引字段进行LOW运算。

2、高:

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

因为需要时间和CPU资源,所以只能对表或字段执行高操作。对于非常大的表,数据库服务器将扫描每个字段的所有数据一次。您可以配置DBUPSPACE环境变量来确定可以使用哪些系统磁盘空。

3、中等:

选择采样数据的分布信息,这样比HIGH花的时间少。

我应该何时执行更新统计数据?

在下列情况下,建议执行更新统计数据操作:

对数据进行了大量的修改,其中大部分是针对数据的分布。如果数据的分布没有明显的变化,就没有必要这样做。

更改后的数据库表有与之相关的存储过程,以避免运行时存储过程的重新优化。

数据库升级后,索引转换就完成了。

更新统计数据的方法

考虑到速度和性能因素,实现更新统计的推荐方法是:

对表执行:仅更新表# # # #分布的统计介质

执行:更新每个索引的第一个字段的统计值。

对复合索引执行:更新统计低

必要时,对不是索引字段但在条件中使用的字段执行Update statistics high操作。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 由浅入深讲解updatestatistics的级别

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情