零售/批发update

看INFO的官方文档,有几个地方不是很明白,请指点

书上说
将每个UPDATE STATISTICS语句的作用域限制为单个表。此方法减少了遇到长事物的风险。对每个表执行单独的UPDATE STATISTICS语句,
后跟单独的COMMIT WORK语句


我的问题

如果我对100个表做UPDATE STATISTICS,就像下面所表示

cat analyze.sql

update statistics high for table a;
update statistics high for table b;
update statistics high for table c;
update statistics high for table d;

问题1 那么每个update 语句算一个事物,还是在analyze.sql中所有的update算一个事物?

问题2 为什么药COMMIT WORK?我以前做使用analyze.sql做update statistics的时候,从来没有使用commit work,这样有什么样的风险?

问题3 在analyze.sql中,如果我在执行update statistics high for table c的时候,系统掉电或者因为长事物而回退,对a,b,的表的分析是否会失效?

问题4 如果我使用upate statistics high for dbname,如果这个是个长事物,并且已经分析了1/3的表,这个时候回退,以前的1/3的已经被做了statistics的统计信息是否会被回退?




书上说

只有当没有其他用户访问目标数据库服务器的当前实例时才更新整个数据库的统计信息

我的问题

问题1 这个更新整个数据库的统计信息的语法是什么?我一般都是对表做分析

问题2 更新整个库是串行的还是并行的? 如果对表进行分析的时候,这个时候能对表做UPATE,INSERT之类的动作吗?
参与1

1同行回答

george002george002数据库管理员git
一条update语句是一个事务informix是默认commit的,没有显式使用begin不用commit,自动commit长事务只是回滚当前未提交的事务已经提交不影响。如果对全库的统计更新被回滚,我的理解是应该会回退。对全库的是直接update statistics [low][meidum][high]统计更新时不影响表的up...显示全部
一条update语句是一个事务
informix是默认commit的,没有显式使用begin不用commit,自动commit
长事务只是回滚当前未提交的事务已经提交不影响。
如果对全库的统计更新被回滚,我的理解是应该会回退。
对全库的是直接update statistics [low][meidum][high]
统计更新时不影响表的update,deltee,insert
另外你看的是哪个官方文档,我只遇到过统计更新失败的没遇到过因为长事务失败的。收起
互联网服务 · 2013-01-22
浏览372

提问者

ttpksn
CIO/CTOasfdsa

相关问题

问题状态

  • 发布时间:2013-01-22
  • 关注会员:0 人
  • 问题浏览:1615
  • 最近回答:2013-01-22
  • X社区推广