Oracle确定过期的统计信息

经过一段时间,随着数据库对象被修改,必须定期搜集统计信息。为了确定数据库对象需要新的数据库统计信息,oracle数据库提供了一

youmust regularly gather statistics on database objects as thesedatabase objects are modified over time. to determine whether agiven database object needs new database statistics, oracledatabase provides a table monitoring facility. this monitoring isenabled by default when statistics_level is set totypical orall.

经过一段时间,随着数据库对象被修改,,必须定期搜集统计信息。为了确定数据库对象需要新的数据库统计信息,oracle数据库提供了一个表监控特性。当STATISTICS_LEVEL设置为TYPICAL或ALL时,表监控特性默认是启动的。

 

Monitoring tracks the approximate number of INSERTs,UPDATEs, andDELETEs for that table andwhether the table has been truncated since the last time statisticswere gathered. You can access information about changes of tablesin theUSER_TAB_MODIFICATIONS view. Following adata-modification, there may be a few minutes delay while OracleDatabase propagates the information to this view. Use theDBMS_STATS.FLUSH_DATABASE_MONITORING_INFO procedure toimmediately reflect the outstanding monitored information kept inthe memory.

 

表监控特性跟踪从最后一次统计搜集后,表的insert、update、delete操作的近似数,和表是否被truncate。可以通过查询USER_TAB_MODIFICATIONS视图获得关于表变化的信息。数据修改后,通过USER_TAB_MODIFICATIONS获取修改信息可能有一些延时。使用DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO立即将延时信息保持到内存中。

 

TheGATHER_DATABASE_STATS orGATHER_SCHEMA_STATS procedures gather new statisticsfor tables with stale statistics when theOPTIONSparameter is set to GATHER STALE orGATHERAUTO. If a monitored table has been modified more than10%, then these statistics are considered stale and gatheredagain.

 

当属性OPTIONS设置为GATHER STALEor GATHERAUTO,GATHER_DATABASE_STATS或GATHER_SCHEMA_STATS为有过期统计信息的表搜集新的统计信息,如果一个监控的表修改超过了10%,则统计信息被认为过期,需再次搜集。

 

部分实验如下:

SQL> select * from test01;

A B
———- ———-
21 10
9 10
22 10
23 10
24 10
25 10
1 1
2 2
44 44
55 55

10 rowsselected. ——表数据10行

SQL> select * fromuser_tab_modifications;

no rowsselected ——实验前已对测试库做了搜集统计信息,此时显示为空

SQL> insert into test01 values(66,66);

1 row created.

SQL> commit;

Commit complete.

SQL> select * from user_tab_modifications;

no rowsselected ——表的修改未及时显示

SQL> exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO; ——将修改的信息keep到内存

PL/SQL procedure successfully completed.

SQL> selecttable_name,INSERTS,UPDATES,DELETES,truncated fromuser_tab_modifications;

TABLE_NAME INSERTS UPDATES DELETES TRU
—————————— ———- ———- ————-
TEST01 10 0 NO —— 1 代表刚才的1条insert

 

为更好的展现监控信息,接着进行update、delete、truncate操作演示:

SQL> update test01 set a=77 where b=66;

1 row updated.

SQL> commit;

Commit complete.

SQL> selecttable_name,INSERTS,UPDATES,DELETES,truncated fromuser_tab_modifications;

TABLE_NAME INSERTS UPDATES DELETES TRU
—————————— ———- ———- ————-
TEST01 1 0 0 NO

SQL> exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;

PL/SQL procedure successfully completed.

SQL> selecttable_name,INSERTS,UPDATES,DELETES,truncated fromuser_tab_modifications;

TABLE_NAME INSERTS UPDATES DELETES TRU
—————————— ———- ———- ————-
TEST01 1 1 0 NO

SQL> delete from test01 where a=77;

1 row deleted.

SQL> commit;

Commit complete.

SQL> selecttable_name,INSERTS,UPDATES,DELETES,truncated fromuser_tab_modifications;

TABLE_NAME INSERTS UPDATES DELETES TRU
—————————— ———- ———- ————-
TEST01 1 1 0 NO

SQL> exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;

PL/SQL procedure successfully completed.

SQL> selecttable_name,INSERTS,UPDATES,DELETES,truncated fromuser_tab_modifications;

TABLE_NAME INSERTS UPDATES DELETES TRU
—————————— ———- ———- ————-
TEST01 1 1 1 NO

SQL> truncate table test01;

Table truncated.

SQL> selecttable_name,INSERTS,UPDATES,DELETES,truncated fromuser_tab_modifications;

TABLE_NAME INSERTS UPDATES DELETES TRU
—————————— ———- ———- ————-
TEST01 1 1 1 NO

SQL> exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;

PL/SQL procedure successfully completed.

SQL> selecttable_name,INSERTS,UPDATES,DELETES,truncated fromuser_tab_modifications;

TABLE_NAME INSERTS UPDATES DELETES TRU
—————————— ———- ———- ————-
TEST01 1 1 11YES

 

对表test01执行搜集统计信息,监控表的信息会清除:

SQL> execdbms_stats.gather_table_stats(null,’test01′);

PL/SQL procedure successfully completed.

SQL> selecttable_name,INSERTS,UPDATES,DELETES,truncated fromuser_tab_modifications;

no rows selected

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1876627.html

(0)
上一篇 2025年2月22日 10:09:39
下一篇 2025年2月22日 10:09:58

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • navicat删除的数据库是否可以找回

    打开Navicat for MySQL,打开连接并激活数据库。 在上方选项栏找到备份并点击,点击新建备份,点击对象选择,选择所需要的对象。 相关推荐:《Navicat for mysql使用图文教程》 点击开始,点击保存,输入设置文件名。 …

    2025年2月23日 数据库
    100
  • navicat数据库怎么筛选查询某一个字段

      navicat是一个强大的数据库管理和开发工具。它为专业开发者提供了一套强大的足够尖端的工具,但它对于新用户仍然是易于学习,这里介绍navicat数据库简单的筛选查询。 推荐教程:navicat使用图文教程 1、打开数据库,并且打开需要…

    2025年2月23日 数据库
    100
  • navicat怎么新建数据库

      开发网站,往往需要用数据库保存数据。我们该如何创建数据库与创建数据表呢?方法其实很简单,下面就由小泽教你如何用Navicat for MySql创建数据库的操作流程。 推荐教程:navicat图文教程 1、打开Navicat for M…

    2025年2月23日 数据库
    100
  • navicat数据库如何连接php

    第一步,打开Navicat,新建数据库。 第二步,在数据库中新建表。 立即学习“PHP免费学习笔记(深入)”; 相关推荐:《Navicat for mysql使用图文教程》  第三步,保存表。  第四步,表中添加数据。  第五步,打开ide…

    2025年2月23日 数据库
    100
  • navicat支持哪些数据库

    推荐教程:navicat使用教程   Navicat是一套快速、可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Navicat 是以直觉化的图形用户界面而建的,…

    2025年2月23日
    100
  • navicat数据库ip连不上

      在使用navicat的时候有时候我们会碰上这种情况,使用localhost能够连接上,但是使用ip地址的时候,navicat会报错,连接不上。下面小编就给大家介绍一下navicat数据库ip连不上的解决办法。 推荐教程:navicat使…

    2025年2月23日
    100
  • 数据库navicat怎么加图片

    1、首先登录navicat for mysql到指定数据库。 2、创建测试表:    CREATE TABLE test(ID INT,PHOTO varchar(1000)) 登录后复制 其中photo为图片字段。 相关推荐:《Navic…

    2025年2月23日 数据库
    100
  • navicat如何备份数据库

    用Navicat打开要备份的数据库,如图: 点下备份显示备份界面,如图: 相关推荐:《Navicat for mysql使用图文教程》 点下新建备份,打开新建备份小窗,如图: 点下对象选择,显示对象选择界面,这里可以自定义选择备份的表,如图…

    2025年2月23日 数据库
    100
  • navicat连不上数据库2003如何解决

    打开Navicat for Mysql,新建连接–测试连接出现以下情况: 问题出现原因: 由报错语句可知,‘不能连接到mysql服务器’。即可能是MySQL数据库服务没有启动,启动mysqld.exe即可,已多次亲测。也可能是其…

    2025年2月23日 数据库
    100
  • navicat连接数据库报错2005怎么办

    关于Navicat for MySQL 连接 MySQL 报2005 -Unknown MySQL server host ‘localhost’(0)错误的情况与解决方法 相关推荐:《Navicat for mysql使用图文教程》 20…

    2025年2月23日
    100

发表回复

登录后才能评论