首頁 資料庫 mysql教程 Oracle确定过期的统计信息

Oracle确定过期的统计信息

Jun 07, 2016 pm 05:33 PM
資料庫

经过一段时间,随着数据库对象被修改,必须定期搜集统计信息。为了确定数据库对象需要新的数据库统计信息,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

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Go語言如何實作資料庫的增刪改查操作? Go語言如何實作資料庫的增刪改查操作? Mar 27, 2024 pm 09:39 PM

Go語言如何實作資料庫的增刪改查操作?

在PHP中使用MySQLi建立資料庫連線的詳盡教學 在PHP中使用MySQLi建立資料庫連線的詳盡教學 Jun 04, 2024 pm 01:42 PM

在PHP中使用MySQLi建立資料庫連線的詳盡教學

Hibernate 如何實作多型映射? Hibernate 如何實作多型映射? Apr 17, 2024 pm 12:09 PM

Hibernate 如何實作多型映射?

iOS 18 新增「已復原」相簿功能 可找回遺失或損壞的照片 iOS 18 新增「已復原」相簿功能 可找回遺失或損壞的照片 Jul 18, 2024 am 05:48 AM

iOS 18 新增「已復原」相簿功能 可找回遺失或損壞的照片

MySQL資料庫管理系統的基本原理解析 MySQL資料庫管理系統的基本原理解析 Mar 25, 2024 pm 12:42 PM

MySQL資料庫管理系統的基本原理解析

深入解析HTML如何讀取資料庫 深入解析HTML如何讀取資料庫 Apr 09, 2024 pm 12:36 PM

深入解析HTML如何讀取資料庫

PHP處理資料庫中文亂碼的技巧與實踐 PHP處理資料庫中文亂碼的技巧與實踐 Mar 27, 2024 pm 05:21 PM

PHP處理資料庫中文亂碼的技巧與實踐

如何在PHP中處理資料庫連線錯誤 如何在PHP中處理資料庫連線錯誤 Jun 05, 2024 pm 02:16 PM

如何在PHP中處理資料庫連線錯誤

See all articles