SybaseIQ 檢視執行計畫

2021-07-02 13:18:33 字數 2050 閱讀 8389

在效能調優工作中,首要的事情是找出效能瓶頸。而針對資料庫應用,由於商用資料庫對上層應用來說是個黑盒,所以往往需要借助資料庫的一些介面或工具來了解資料庫的具體行為,並結合相關知識和業務進行調測。

簡單來說,資料庫在執行乙個查詢之前,會為該查詢生成乙個最優(至少它這樣認為)的查詢計畫(query plan),然後再根據計畫的指示來執行實際的操作和處理。如果能了解到查詢計畫,也就能知道乙個查詢真正是怎樣執行下來的、時間都耗在**、有哪些影響因素等。

第一步:建立報告目錄

在正常執行的時候,查詢計畫是不會顯式生成的,但經過後面步驟的配置後,可以指示iq將每次查詢的計畫顯式生成為檔案供開發人員查閱,所以需要預先為其建立乙個目錄,如:

mkdir /export/home/zyx/ganjd

其中目錄可以隨意制定,但為了多個開發人員共用伺服器的時候不互相影響,應該各自建立自己的目錄。該目錄應該對執行iq伺服器所使用的帳號有讀寫許可權,最簡單就是直接將該目錄chmod為777就可以了。

第二步:配置鏈結選項

就是通過修改資料庫的配置項,讓iq在執行查詢的時候生成查詢計畫的報告。一般可以直接在鏈結了iq的客戶端程式(如aqua data studio或interactive sql)上使用下面的語句配置即可:

set temporary option query_plan_as_html_directory ='/export/home/zyx/ganjd';

set temporary option query_plan = on;

set temporary option query_detail = on;

set temporary option query_timing = on;

set temporary option query_plan_after_run = on;

set temporary option query_plan_as_html = on;

set temporary option index_advisor = on;

set temporary option noexec = on;

需要注意的是,雖然在語法上上述set option中的temporary不是必須的, 但建議加上,用於指定該選項的修改只對當前鏈結有效,並且在鏈結斷開後自動恢復。這樣就可以避免多個開發人員共用伺服器的時候的衝突。

簡單說明各個選項的含義:

query_plan_as_html_directory:指定查詢計畫報告的存放路徑,也就是前面一步所建立的目錄即可。

query_plan:告訴iq需要顯式生成執行計畫供人工查閱。

query_detail:指定在查詢計畫報告中包含詳細資訊,建議加上以便得到更詳細的資訊供調優分析。

query_timing:指定收集計時統計資訊,否則報告中會缺少時間、耗時的資訊,不便於分析效能。

query_plan_after_run:在執行完查詢之後,列印整個查詢計畫。具體意義不用很考究,開啟就是了。

query_plan_as_html:查詢計畫報告用html的格式輸出,這樣就可以通過瀏覽器檢視,很方便。

index_advisor:讓iq給出乙個針對該查詢的索引優化建議,一般就是iq認為在某些列上增加某類索引可以提公升該查詢效能。該建議無法替代人,尤其是結合業務的分析,只作參考,但對存在嚴重效能問題的查詢還是比較有用的。

noexec:on表示excute該查詢時不會真正執行(也就不會有結果出來),而只生成查詢計畫;off表示該查詢會被真正執行,同時輸出計畫。可以根據實際要求選擇,預設是off。而on對於帶修改的查詢(例如「update gan_sdr set ci = '0cab' where id = 74567」)來說是很方便的,因為這樣資料不會被真正修改,可以重複獲取查詢計畫。

第三步:執行查詢

就是執行乙個查詢語句。這裡說的「查詢」不只限於select,帶條件的update、insert和delete都是包含查詢處理的,也會得到對應的查詢計畫。例如:

update gan_sdr set ci = '0cab' where id = 74567

查詢必須在第二步修改配置項的資料庫鏈結上執行。因為正如前文所述,那些配置項只對當前鏈結生效,如果鏈結關閉即使重連,配置也不再生效。

SYBASE IQ 執行計畫檢視方法

在效能調優工作中,首要的事情是找出效能瓶頸。而針對資料庫應用,由於商用資料庫對上層應用來說是個黑盒,所以往往需要借助資料庫的一些介面或工具來了解資料庫的具體行為,並結合相關知識和業務進行調測。簡單來說,資料庫在執行乙個查詢之前,會為該查詢生成乙個最優 至少它這樣認為 的查詢計畫 query plan...

sybase 檢視執行計畫

檢視語句的執行計畫 set showplan on set noexec on go select go set showplan off set noexec off go檢視儲存過程執行計畫 set showplan on go exec sp name go set showplan off ...

如何檢視執行計畫

如果plan table表不存在,執行 oracle home rdbms admin utlxplan.sql建立plan table表。1.explain plan forselect from 2.select from table dbms xplan.display 二.使用oracle第...