分散式資料庫查詢中 DRIVING_SITE 的疑問
[i=s] 本帖最後由 tolywang 於 2011-12-8 15:56 編輯
Oracle 10.2.0.4 , Oracle 9.2.0.8
DRIVING_SITE
The DRIVING_SITE hint forces query execution to be done at a different site than that selected
by Oracle. This hint can be used with either rule-based or cost-based optimization.
For example:
SELECT /*+DRIVING_SITE(departments)*/ *
FROM employees, [url=mailto:departments@rsite]departments@rsite[/url]
WHERE employees.department_id = departments.department_id;
If this query is executed without the hint, then rows from departments are sent to
the local site, and the join is executed there. With the hint, the rows from employees
are sent to the remote site, and the query is executed there, returning the result to
the local site. This hint is useful if you are using distributed query optimization.
大概意思 :
DRIVING_SITE 提示強制在和Oracle選擇不同的一端執行語句, 這個Hint可以用在
rule-based及cost-based 最佳化模式下。
如果上面的語句沒有 /*+DRIVING_SITE(departments)*/ 提示, 遠端的表 departments
的行要被傳輸到local site , 在local site 執行連線語句, 如果有這個提示, 那麼本地的
employees 表的行會被傳到遠端site, 查詢在遠端site執行, 然後返回結果到本地, 這個
hint 在分散式查詢最佳化中還是有用的 。
問題 :
很多時候我們做分散式資料庫查詢的時候 , 基本都是本地遠端都是大表, 較少用到一個是很小的配置表, 一個是所謂的detail 大表,
那麼在都是幾千萬的大表的情況下 , 不管是本地傳輸到遠端 , 還是遠端傳輸到本地 , 表的 rows 傳輸都是一個大的資源消耗 ,
這時我們一般會選擇預設的 , 即不使用hint, 讓遠端錶行傳輸到本地執行, 直接出結果, 省了使用Hint最後還需要從遠端傳結果這一
步 .
1. 確認一下, 不使用任何hint 的情況下 , 一定是遠端的表資料行傳輸到本地來聯合執行 ? 還是說有 cost 比較來決定, 如果是
cost 比較決定, 好像也不現實 , 遠端表的rows 傳輸過來 , 統計資訊沒有過來, 咋整 ? 還有, 難不成Oracle 把可能的情況
都試一遍 , " 都在本地 " 或" 都在遠端 " 分別計算Cost ? 但這成本太高 . 嘗試使用SQL trace 來跟蹤查詢SQL , 沒有看到
有用的資訊 。
2. 遠端傳輸到本地的 rows 是遠端整張表的所有行 ? 他們都臨時一次性儲存在本地庫的 data buffer cache ? 還是其他地方 ?
Oracle 10.2.0.4 , Oracle 9.2.0.8
DRIVING_SITE
The DRIVING_SITE hint forces query execution to be done at a different site than that selected
by Oracle. This hint can be used with either rule-based or cost-based optimization.
For example:
SELECT /*+DRIVING_SITE(departments)*/ *
FROM employees, [url=mailto:departments@rsite]departments@rsite[/url]
WHERE employees.department_id = departments.department_id;
If this query is executed without the hint, then rows from departments are sent to
the local site, and the join is executed there. With the hint, the rows from employees
are sent to the remote site, and the query is executed there, returning the result to
the local site. This hint is useful if you are using distributed query optimization.
大概意思 :
DRIVING_SITE 提示強制在和Oracle選擇不同的一端執行語句, 這個Hint可以用在
rule-based及cost-based 最佳化模式下。
如果上面的語句沒有 /*+DRIVING_SITE(departments)*/ 提示, 遠端的表 departments
的行要被傳輸到local site , 在local site 執行連線語句, 如果有這個提示, 那麼本地的
employees 表的行會被傳到遠端site, 查詢在遠端site執行, 然後返回結果到本地, 這個
hint 在分散式查詢最佳化中還是有用的 。
問題 :
很多時候我們做分散式資料庫查詢的時候 , 基本都是本地遠端都是大表, 較少用到一個是很小的配置表, 一個是所謂的detail 大表,
那麼在都是幾千萬的大表的情況下 , 不管是本地傳輸到遠端 , 還是遠端傳輸到本地 , 表的 rows 傳輸都是一個大的資源消耗 ,
這時我們一般會選擇預設的 , 即不使用hint, 讓遠端錶行傳輸到本地執行, 直接出結果, 省了使用Hint最後還需要從遠端傳結果這一
步 .
1. 確認一下, 不使用任何hint 的情況下 , 一定是遠端的表資料行傳輸到本地來聯合執行 ? 還是說有 cost 比較來決定, 如果是
cost 比較決定, 好像也不現實 , 遠端表的rows 傳輸過來 , 統計資訊沒有過來, 咋整 ? 還有, 難不成Oracle 把可能的情況
都試一遍 , " 都在本地 " 或" 都在遠端 " 分別計算Cost ? 但這成本太高 . 嘗試使用SQL trace 來跟蹤查詢SQL , 沒有看到
有用的資訊 。
2. 遠端傳輸到本地的 rows 是遠端整張表的所有行 ? 他們都臨時一次性儲存在本地庫的 data buffer cache ? 還是其他地方 ?
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-712963/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- “熱搜”中的分散式資料庫分散式資料庫
- 資料庫資料的查詢----連線查詢資料庫
- MongoDB資料庫中查詢資料(下)MongoDB資料庫
- 資料庫中單表查詢資料庫
- Oracle資料庫中的分頁查詢Oracle資料庫
- 併發查詢資料庫問題資料庫
- 在MongoDB資料庫中查詢資料(上)MongoDB資料庫
- 分散式資料庫下子查詢和 Join 等複雜 SQL 如何實現?分散式資料庫SQL
- 資料庫查詢資料庫
- 分散式資料庫分散式資料庫
- Python—Django:關於在Django框架中對資料庫的查詢函式,查詢集和關聯查詢PythonDjango框架資料庫函式
- 資料庫 - 資料查詢資料庫
- 查詢資料庫中的topsql語句資料庫SQL
- 圖資料庫中的“分散式”和“切圖”資料庫分散式
- 查詢資料庫後是返回ResultSet實現中遇到的問題資料庫
- 分散式資料庫環境中,外來鍵約束的問題??分散式資料庫
- 圖資料庫中的“分散式”和“資料切分”(切圖)資料庫分散式
- Kafka分散式查詢引擎Kafka分散式
- SQL Server 分散式查詢SQLServer分散式
- 「分散式技術專題」三種常見的資料庫查詢引擎執行模型分散式資料庫模型
- 在資料庫中查詢關鍵字資料庫
- 資料庫高階查詢之子查詢資料庫
- MySQL查詢資料庫中沒有主鍵的表MySql資料庫
- SQL Server中基於WEB的資料庫查詢SQLServerWeb資料庫
- 求助:資料庫查詢資料庫
- ThinkPHP 資料庫查詢PHP資料庫
- 查詢資料庫大小資料庫
- 資料庫排序查詢資料庫排序
- Jemter查詢資料庫資料庫
- 分散式資料庫概述分散式資料庫
- Greenplum資料庫,分散式資料庫,大資料資料庫分散式大資料
- 資料庫查詢慢的原因資料庫
- 查詢資料庫中表的資訊資料庫
- 資料庫分組查詢最大值的問題資料庫
- 關於下拉選單查詢資料庫的問題資料庫
- driving_site:Oracle 跨庫關聯資料時速度問題Oracle
- 資料庫 - 連線查詢、巢狀查詢、集合查詢資料庫巢狀
- 分散式資料庫 ZNBase 的分散式計劃生成分散式資料庫