dbfilesequentialread等待事件
今天是2014-01-08,继续完成等待事件系列。 什么是:db file sequential read:? 简单说,就是oracle要读取单块数据,其他会话存在等待,有三个参数p1,是要读的文件,p2是block#,开始读取的数据块号,p3是blocks,一般p3为单块,但是如果是多块那么一般发
今天是2014-01-08,继续完成等待事件系列。
什么是:db file sequential read:?
简单说,就是oracle要读取单块数据,其他会话存在等待,有三个参数p1,是要读的文件,p2是block#,开始读取的数据块号,p3是blocks,一般p3为单块,但是如果是多块那么一般发生在从temporary segment中读的。
该类等待事件的出现主要是由于执行对索引,回滚(undo)段,和表(当借助rowid来访问),控制文件和数据文件头的单块读操作SQL语句(用户和递归)引起的,该事件的产生要么表的连接顺序有问题,要么索引使用不当导致。
如何解决呢:
1、优化sql,主要是看执行计划,能不走全表的就不走全表(但是有时候全表可能比索引更快),能走index scan的就不走table access byindex rowid.
2、增加file的i/0速率,一般对于硬件存储设备而言,数据文件所在的磁盘采用哪种raid也是很显著
3、增加buffer cache大小,使其数据在内存中得到,但是到了10G、11g 启用了asmm和amm那么buffer cache是会动的,或者考虑将相关表存放到keep 池中,如果是11g可以考虑result cache。
4、可以将数据放到非标准块中(大块存多行数据),避免i/0
5、采用索引组织表,减少i/o
6、采用并行查询执行(占用一定内存和cpu,需要依据主机负载判断)
7、可以尝试采用分区表等。
案例分析:
1、获得sql信息如下:
SELECTcount(1)
FROMWF_DEAL_COMMON_MAIN_T M,
WFC_ROOT_SUB_RELATION_T R,
RT_WORKITEMINST W
WHERE M.F_PROCINST_ID = R.ROOT_ID
AND R.SUB_ID =W.PROC_INSTANCE_ID
AND W.current_statein (1,2)
AND W.USER_ID = :1
AND W.OVERDUED = :2
查看执行计划如下:
>SELECT count(1)
16:02:35 2 FROM WF_DEAL_COMMON_MAIN_T M,
16:02:35 3 WFC_ROOT_SUB_RELATION_T R,
16:02:35 4 RT_WORKITEMINST W
16:02:35 5 WHERE M.F_PROCINST_ID = R.ROOT_ID
16:02:35 6 AND R.SUB_ID = W.PROC_INSTANCE_ID
16:02:35 7 AND W.current_state in (1, 2)
16:02:36 8 AND W.USER_ID = 999
16:02:36 9 AND W.OVERDUED = 1
16:02:36 10 ;
Predicate Information (identified by operation id):
---------------------------------------------------
4 -filter(("W"."CURRENT_STATE"=1 OR"W"."CURRENT_STATE"=2) AND"W"."OVERDUED"=1 AND
TO_NUMBER("W"."USER_ID")=999)
6 -access("R"."SUB_ID"="W"."PROC_INSTANCE_ID")
filter("R"."SUB_ID"="W"."PROC_INSTANCE_ID")
8 -access("M"."F_PROCINST_ID"="R"."ROOT_ID")
Note
-----
- dynamic samplingused for this statement
index full scan,table access full。注意此时有隐式转换。
如果把变量换成字符串。执行计划如下:
>r
1 SELECT count(1)
2 FROM WF_DEAL_COMMON_MAIN_T M,
3 WFC_ROOT_SUB_RELATION_T R,
4 RT_WORKITEMINST W
5 WHERE M.F_PROCINST_ID = R.ROOT_ID
6 AND R.SUB_ID = W.PROC_INSTANCE_ID
7 AND W.current_state in (1, 2)
8 AND W.USER_ID ='999'
9* AND W.OVERDUED = 2
Predicate Information (identified by operation id):
---------------------------------------------------
4 -filter(("W"."CURRENT_STATE"=1 OR"W"."CURRENT_STATE"=2) AND"W"."OVERDUED"=2)
5 -access("W"."USER_ID"='640001312')
7 -access("R"."SUB_ID"="W"."PROC_INSTANCE_ID")
8 -access("M"."F_PROCINST_ID"="R"."ROOT_ID")
Note
-----
- dynamicsampling used for this statement
总结:
从如上内容,可以分析得出:因为w.user_id为varchar 类型,当w.user_id赋值为数字则会产生index full scan和table access full,这主要是由于隐式转换导致,解决该办法一种是建立函数索引,另一种是在传送该值变量的时候进行转换。建议采用后者。

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

PHP非同步發送郵件:避免長時間等待郵件發送完成。導言:在Web開發中,發送郵件是常見的功能之一。但是,由於郵件發送需要與伺服器進行通信,往往會導致用戶在等待郵件發送完成的過程中出現長時間的等待。為了解決這個問題,我們可以使用PHP非同步發送郵件的方式來優化使用者體驗。本文將介紹如何透過具體的程式碼範例實現PHP非同步發送郵件,並避免長時間的等待。一、理解異步發送郵件
![事件 ID 4660:已刪除物件 [修復]](https://img.php.cn/upload/article/000/887/227/168834320512143.png?x-oss-process=image/resize,m_fill,h_207,w_330)
我們的一些讀者遇到了事件ID4660。他們通常不確定該怎麼做,所以我們在本指南中解釋。刪除物件時通常會記錄事件ID4660,因此我們還將探索一些實用的方法在您的電腦上修復它。什麼是事件ID4660?事件ID4660與活動目錄中的物件相關,將由下列任一因素觸發:物件刪除–每當從ActiveDirectory中刪除物件時,都會記錄事件ID為4660的安全事件。手動變更–當使用者或管理員手動變更物件的權限時,可能會產生事件ID4660。變更權限設定、修改存取等級或新增或刪除人員或群組時,可能會發生這種情

在運行iOS16或更高版本的iPhone上,您可以直接在鎖定畫面上顯示即將到來的日曆事件。繼續閱讀以了解它是如何完成的。由於錶盤複雜功能,許多AppleWatch用戶習慣能夠看一眼手腕來查看下一個即將到來的日曆事件。隨著iOS16和鎖定螢幕小部件的出現,您可以直接在iPhone上查看相同的日曆事件訊息,甚至無需解鎖設備。日曆鎖定螢幕小元件有兩種風格,可讓您追蹤下一個即將發生的事件的時間,或使用更大的小元件來顯示事件名稱及其時間。若要開始新增小元件,請使用面容ID或觸控ID解鎖iPhone,長按

當輸入框中新增值時,就會發生oninput事件。您可以嘗試執行以下程式碼來了解如何在JavaScript中實現oninput事件-範例<!DOCTYPEhtml><html> <body> <p>Writebelow:</p> <inputtype="text"

jquery中常用的事件有:1、window事件;2、滑鼠事件,是當使用者在文件上方移動或點選滑鼠時而產生的事件,包括滑鼠點選、移入事件、移出事件等;3、鍵盤事件,是使用者每次按下或釋放鍵盤上的按鍵時都會產生事件,包括按下按鍵事件、釋放按鍵按鍵等;4、表單事件,例如當元素獲得焦點時會觸發focus()事件,失去焦點時會觸發blur()事件,表單提交時會觸發submit()事件。

jQuery是一個受歡迎的JavaScript函式庫,可以用來簡化DOM操作、事件處理、動畫效果等。在web開發中,常常會遇到需要對select元素進行改變事件綁定的情況。本文將介紹如何使用jQuery實作對select元素改變事件的綁定,並提供具體的程式碼範例。首先,我們需要使用標籤來建立一個包含選項的下拉式選單:

如何在PHP專案中實現日曆功能和事件提醒?在開發Web應用程式時,行事曆功能和事件提醒是常見的需求之一。無論是個人日程管理、團隊協作,或是線上活動安排,行事曆功能都可以提供便利的時間管理和事務安排。在PHP專案中實現日曆功能和事件提醒可以透過以下步驟來完成。資料庫設計首先,需要設計資料庫表來儲存日曆事件的相關資訊。一個簡單的設計可以包含以下欄位:id:事件的唯一

在PHP中建構基於事件的應用程式的方法包括:使用EventSourceAPI建立事件來源,並在客戶端使用EventSource物件監聽事件。使用伺服器傳送的事件(SSE)傳送事件,並在客戶端使用XMLHttpRequest物件監聽事件。一個實用的例子是在電子商務網站中使用EventSource即時更新庫存計數,在伺服器端透過隨機更改庫存並發送更新來實現,客戶端則透過EventSource監聽庫存更新並即時顯示。
