srds(srd是什么意思網絡用語)
飯圈srds是什么意思?
srds是“雖然但是”的首字母拼音縮寫。 飯圈常見用語。用來表示轉折。轉自小雞詞典@黃色廢料
sql plan中cost值多少算是多的
在sql tuning中只看cost是不夠的,可能A sql的cost=80花了2秒,而B sql cost=190只花了0.3秒。還要看sql中所選中的數據讀取時間(從磁盤中讀取還是內存),排序成本等等。比如下面的執行計劃
----------------------------------------------------------
plan hash value: 4202050538
-----------------------------------------------------------------------------------------------------
| id | operation| name| rows | bytes | cost (%cpu)| time|
-----------------------------------------------------------------------------------------------------
|0 | select statement||107 | 15515 |88(2)| 00:00:02 |
|1 | sort order by||107 | 15515 |88(2)| 00:00:02 |
|2 |table access by index rowid| icme_noproject_score |107 | 15515 |87(0)| 00:00:02 |
|* 3 |index range scan| uk_noproject_score|107 ||7(0)| 00:00:01 |
-----------------------------------------------------------------------------------------------------
那總的代價是88,還是88+88+87+7呢?毫無疑問看第一行就可以,是88
cost=(single block i/o cost+ multiblock i/o cost+ cpu cost)/sreadtim
#srds*sreadtim #mrds*mreadtim #cpucycles/cpuspeed
#srds: number of single block reads
#mrds: number of multiblock reads
#cpucycles: number of cpu cycles
sreadtim: single block read time
mreadtim: multiblock read time
cpuspeed: millions instructions per second
cost是從里層向外層累計折疊的,最上層那個表示總代價。oracle會在自動生成的計劃里,選擇一個最小代價的來執行你的sql
cost 只是在cbo優化器再執行時選擇不同執行計劃成本的一個判斷值,如果為rbo優化器在執行計劃中都看不到這個值
cost 內部記算方法oracle也不會公開,oracle內部用來比較各個執行計劃所耗費的代價的值,從而使優化器可以選擇最好的執行計劃。不同語句的cost值不具有可比性,只能對同一個語句的不同執行計劃的cost值進行比較。
想更多了解cost,可以去itpub找一個版主所寫的
cbo成本計算初探