国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

由淺入深講解update statistics的級別

2024-07-21 02:42:52
字體:
來源:轉載
供稿:網友
給定查詢的不同執行策略可能會有不同的代價,構造具有最小查詢執行代價的查詢執行計劃是數據庫系統的職責。查詢優化是為了查詢選擇最有效的查詢策略的過程。查詢優化是盡量找出與給定表達式等價的、但是執行效率更高的一個表達式,而且決定執行運算時所采用的具體算法以及將使用的特定索引等。

為了在諸多查詢策略中作出選擇,數據庫系統的優化器必須估計每個查詢策略的代價,磁盤訪問次數常常是衡量代價的主要標準。在沒有按照某策略執行查詢前,準確計算出該策略的代價是不可能的,所以,優化器要利用數據庫系統中的統計信息,來估計查詢策略的代價。Informix數據庫系統這些統計信息保存在SYSMASTER數據庫中, 如果要維護準確的統計值,那么每當表數據修改時,相應的統計值也必須更新,這種更新會帶來很大的代價,因此Informix系統不是在每次修改時對統計值更新。因此,用于選擇查詢策略的統計數據不一定完全正確,有時會遇到查詢用不到應該使用的索引,就是統計信息沒有更新的原因。 對Informix數據庫系統,這些統計信息保存在SYSMASTER數據庫中,可以使用UPDATE STATISTICS命令更新。

以下是用于估計代價的信息:

記錄數

表空間的頁數

記錄長度

字段不同值個數

字段值的分布

索引的層數

索引葉結點數目

索引B+樹的深度

索引是升序還是降序或聚類索引

索引占用的頁面數目

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更新)。以下是與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、sysinexes內的內容改變,不影響sysdistrib。為了提高效率,一般對非索引字段執行LOW操作

2、HIGH:

此時構建的分布信息是準確的,而不是統計意義上的。

因為耗費時間和占用CPU 資源,可以只對表或字段執行HIGH操作。對于非常大的表,數據庫服務器將掃描一次每個字段的所有數據。可以配置DBUPSPACE環境變量來決定可以利用的最大的系統磁盤空間

3、MEDIUM:

抽樣選取數據分布信息,故所需時間比HIGH要少

什么時候應該執行update ststistics ?

建議在以下情況,執行update statistics 操作:

對數據做了大量修改,大量是針對數據的分布而言,若數據分布沒有明顯的改變則可以不做

改變的數據庫表有與之相關的存儲過程,避免在運行時存儲過程重新優化

數據庫升級之后完成對索引的轉變

update ststistics 的方法

考慮到速度性能因素,執行update statistics的推薦方法:

對表執行:update statistics medium for table #### distributions only

對每個索引的首字段執行:update statistics high

對復合索引執行:update statistics low

必要時對非索引字段但在條件中使用到的字段執行Update statistics high操作


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洪洞县| 佳木斯市| 互助| 香格里拉县| 通城县| 奉贤区| 长岛县| 永登县| 青田县| 宁明县| 正宁县| 景谷| 孟连| 怀化市| 千阳县| 嫩江县| 闵行区| 兖州市| 象州县| 香港 | 蒙自县| 什邡市| 江津市| 天等县| 大名县| 鹿泉市| 屯留县| 盐源县| 云霄县| 夏河县| 兴山县| 贵定县| 赤水市| 富宁县| 烟台市| 开化县| 汉源县| 涿鹿县| 衡阳市| 泾源县| 武汉市|