成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

六分鐘學會Oracle全表掃描

數據庫 Oracle
這里介紹為實現Oracle全表掃描,Oracle讀取表中所有的行,并檢查每一行是否滿足語句的WHERE限制條件。Oracle順序地讀取分配給表的每個數據塊,直到讀到表的最高水線處。

Oracle經過長時間的發展,很多用戶都很了解Oracle全表掃描了,這里我發表一下個人理解,和大家討論討論。優化器在形成執行計劃時需要做的一個重要選擇是如何從數據庫查詢出需要的數據。對于SQL語句存取的任何表中的任何行,可能存在許多存取路徑(存取方法),通過它們可以定位和查詢出需要的數據。優化器選擇其中自認為是最優化的路徑。

在物理層,Oracle讀取數據,一次讀取的最小單位為數據庫塊(由多個連續的操作系統塊組成),一次讀取的最大值由操作系統一次I/O的最大值與multiblock參數共同決定,所以即使只需要一行數據,也是將該行所在的數據庫塊讀入內存。邏輯上,Oracle用如下存取方法訪問數據:

Oracle全表掃描(Full Table Scans, FTS)

為實現Oracle全表掃描,Oracle讀取表中所有的行,并檢查每一行是否滿足語句的WHERE限制條件。Oracle順序地讀取分配給表的每個數據塊,直到讀到表的最高水線處(high water mark, HWM,標識表的最后一個數據塊)。一個多塊讀操作可以使一次I/O能讀取多塊數據塊(db_block_multiblock_read_count參數設定),而不是只讀取一個數據塊,這極大的減少了I/O總次數,提高了系統的吞吐量,所以利用多塊讀的方法可以十分高效地實現Oracle全表掃描,而且只有在Oracle全表掃描的情況下才能使用多塊讀操作。在這種訪問模式下,每個數據塊只被讀一次。由于HWM標識最后一塊被讀入的數據,而delete操作不影響HWM值,所以一個表的所有數據被delete后,其Oracle全表掃描的時間不會有改善,一般我們需要使用truncate命令來使HWM值歸為0。幸運的是Oracle 10G后,可以人工收縮HWM的值。

由FTS模式讀入的數據被放到高速緩存的Least Recently Used (LRU)列表的尾部,這樣可以使其快速交換出內存,從而不使內存重要的數據被交換出內存。

使用FTS的前提條件:在較大的表上不建議使用Oracle全表掃描,除非取出數據的比較多,超過總量的5% -- 10%,或你想使用并行查詢功能時。

使用Oracle全表掃描的例子:

  1. explain plan for select * from dual;  
  2. Query Plan  
  3. SELECT STATEMENT [CHOOSE] Cost=  
  4. TABLE ACCESS FULL DUAL 

行的ROWID指出了該行所在的數據文件、數據塊以及行在該塊中的位置,所以通過ROWID來存取數據可以快速定位到目標數據上,是Oracle存取單行數據的最快方法。

為了通過ROWID存取表,Oracle 首先要獲取被選擇行的ROWID,或者從語句的WHERE子句中得到,或者通過表的一個或多個索引的索引掃描得到。Oracle然后以得到的ROWID為依據定位每個被選擇的行。

這種存取方法不會用到多塊讀操作,一次I/O只能讀取一個數據塊。我們會經常在執行計劃中看到該存取方法,如通過索引查詢數據。

使用ROWID存取的方法:

  1. explain plan for select * from dept where rowid = 'AAAAyGAADAAAAATAAF';  
  2. Query Plan  
  3. SELECT STATEMENT [CHOOSE] Cost=1 
  4. TABLE ACCESS BY ROWID DEPT [ANALYZED] 

【編輯推薦】

  1. ORACLE執行計劃的一些基本概念
  2. 利用Oracle執行計劃機制提高查詢性能
  3. 簡單描述Oracle編碼SQL
  4. 代碼講解Oracle可選擇性
  5. Oracle管理工具Oracle SQL Handler功能一覽
責任編輯:佚名 來源: 博客園
相關推薦

2009-10-27 17:22:27

2022-07-04 08:01:16

OSPFRIPBGP

2022-05-30 07:51:13

數據庫MySQLQPS

2024-04-18 08:19:22

數據庫運維工具

2009-11-12 16:25:35

Oracle嵌套循環

2009-10-22 16:18:19

Oracle表空間

2015-09-21 10:16:37

阿里云心電數據大數據

2022-03-08 08:39:22

gRPC協議云原生

2009-11-20 17:06:49

Oracle數據庫字符

2021-07-15 06:43:11

Bash調試腳本

2020-05-22 10:20:27

Shiro架構字符串

2016-12-22 21:47:04

SEDLinuxUnix

2009-11-16 10:53:30

Oracle Hint

2018-11-28 11:20:53

Python函數式編程編程語言

2009-11-05 16:04:19

Oracle用戶表

2019-11-11 21:24:42

HadoopHbase分布式

2009-11-17 14:50:50

Oracle調優

2019-07-18 16:32:06

Python函數數據

2009-10-21 18:19:36

VB.NET實現拖放

2019-07-29 09:42:56

索引死鎖MySQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美激情亚洲 | 日韩在线电影 | 成人黄色av网址 | 成人欧美一区二区三区色青冈 | 亚洲一一在线 | 人人爽日日躁夜夜躁尤物 | 国产精品视频一区二区三 | 亚洲一区二区 | 国产一级视频在线观看 | 波多野结衣中文视频 | 一区二区伦理电影 | 欧美成人免费在线 | 亚洲 欧美 日韩在线 | 成人精品毛片 | 久久久精品日本 | 国产乱码精品一区二区三区中文 | 国产精品高潮呻吟久久av黑人 | 久久影院一区 | 午夜久久久久久久久久一区二区 | 97久久精品午夜一区二区 | 精品国产黄色片 | 亚洲精品久久久久久久久久久 | 久久精品一区 | 黑人精品欧美一区二区蜜桃 | 高清人人天天夜夜曰狠狠狠狠 | 7777精品伊人久久精品影视 | 国产精品视频不卡 | 国产高清一二三区 | 亚洲精品国产成人 | 国产精品久久久久久婷婷天堂 | 麻豆视频在线免费看 | 久久亚洲欧美日韩精品专区 | 免费黄网站在线观看 | 中文字幕一区二区三区四区不卡 | av在线伊人 | 青娱乐一区二区 | 欧美一二三 | 91视视频在线观看入口直接观看 | 视频一区在线 | 亚州毛片 | 亚洲一区二区三区免费视频 |