【最佳化】使用繫結變數 OR 不使用繫結變數,這不是問題!
就目前現狀來看,大家有點過分強調繫結變數的作用了。
任何一種最佳化方法都尤其適用場景,繫結變數技術也不例外。不可盲目的將其信奉為影響效能的罪魁禍首。
1.分清系統是OLTP還是OLAP型別很重要
通常來說,我們把業務分為兩類,線上事務處理系統(OLTP)和線上分析系統(OLAP)或者決策支援系統(DSS)。這兩類系統在資料庫設計上截然不同。比如OLTP系統強調資料庫的記憶體效率,強調記憶體各種指標的命中率,強調繫結變數,強調併發操作;而OLAP系統則強調資料分析,強調SQL執行時間,強調磁碟I/O,強調分割槽等。
2.OLTP型別的系統適合大量使用繫結變數技術
OLTP系統是一個資料塊變化非常頻繁,SQL語句提交非常頻繁的系統。對於資料塊來說,應儘可能讓資料塊儲存在記憶體當中,對於SQL來說,儘可能使用繫結變數技術來達到SQL重用,減少物理I/O和重複的SQL解析,從而極大的改善資料庫的效能。
3.OLAP系統中使用繫結變數是徒勞的
在OLAP系統中,不需要使用繫結變數(Bind),因為系統中SQL數量和執行頻率都很低,SQL語句的分析時間較之執行時間來說可以忽略不計。但是OLAP中可以大量使用點陣圖索引,物化檢視,對於大的事務,儘量尋求速度上的最佳化,沒有必要像OLTP那樣要求快速提交,甚至要刻意減慢執行的速度。繫結變數真正的用途是在OLTP系統中,這個系統通常有這樣的特點,使用者併發數很大,使用者的請求十分密集,並且這些請求的SQL 大多數是可以重複使用的。
4.小結
以上從理論層面解析了繫結變數的適用場景。希望給大家在日常最佳化過程中有些指導。請大家避免盲目調優帶來的窘境。
Good luck.
secooler
11.01.09
-- The End --
任何一種最佳化方法都尤其適用場景,繫結變數技術也不例外。不可盲目的將其信奉為影響效能的罪魁禍首。
1.分清系統是OLTP還是OLAP型別很重要
通常來說,我們把業務分為兩類,線上事務處理系統(OLTP)和線上分析系統(OLAP)或者決策支援系統(DSS)。這兩類系統在資料庫設計上截然不同。比如OLTP系統強調資料庫的記憶體效率,強調記憶體各種指標的命中率,強調繫結變數,強調併發操作;而OLAP系統則強調資料分析,強調SQL執行時間,強調磁碟I/O,強調分割槽等。
2.OLTP型別的系統適合大量使用繫結變數技術
OLTP系統是一個資料塊變化非常頻繁,SQL語句提交非常頻繁的系統。對於資料塊來說,應儘可能讓資料塊儲存在記憶體當中,對於SQL來說,儘可能使用繫結變數技術來達到SQL重用,減少物理I/O和重複的SQL解析,從而極大的改善資料庫的效能。
3.OLAP系統中使用繫結變數是徒勞的
在OLAP系統中,不需要使用繫結變數(Bind),因為系統中SQL數量和執行頻率都很低,SQL語句的分析時間較之執行時間來說可以忽略不計。但是OLAP中可以大量使用點陣圖索引,物化檢視,對於大的事務,儘量尋求速度上的最佳化,沒有必要像OLTP那樣要求快速提交,甚至要刻意減慢執行的速度。繫結變數真正的用途是在OLTP系統中,這個系統通常有這樣的特點,使用者併發數很大,使用者的請求十分密集,並且這些請求的SQL 大多數是可以重複使用的。
4.小結
以上從理論層面解析了繫結變數的適用場景。希望給大家在日常最佳化過程中有些指導。請大家避免盲目調優帶來的窘境。
Good luck.
secooler
11.01.09
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-683500/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在繫結變數下使用outline變數
- 如何在對in操作使用變數繫結(轉)變數
- MySQL高階特性——繫結變數MySql變數
- [20180930]in list與繫結變數.txt變數
- [20180912]PLSLQ與繫結變數.txt變數
- Vue select 繫結動態變數Vue變數
- [20180930]in list與繫結變數個數.txt變數
- [20210120]in list與繫結變數個數.txt變數
- V$sql查詢未使用繫結變數的語句SQL變數
- 【ORACLE】Oracle繫結變數知識梳理Oracle變數
- 繫結變數窺視測試案例變數
- Oracle資料傾斜導致的問題-無繫結變數Oracle變數
- Oracle資料傾斜導致的問題-有繫結變數Oracle變數
- [20200326]繫結變數抓取與NULL值.txt變數Null
- 如何用FGA得到繫結變數的值變數
- [20220414]toad與繫結變數peek.txt變數
- Oracle中如何查詢未使用繫結變數的SQL語句?Oracle變數SQL
- [20231210]執行計劃與繫結變數.txt變數
- [20190506]檢視巢狀與繫結變數.txt巢狀變數
- [20191213]共享池繫結變數的值在哪裡.txt變數
- [20221103]繫結變數的分配長度11.txt變數
- [20221030]繫結變數的分配長度10.txt變數
- Laravel 框架中 whereRaw like 引數繫結問題Laravel框架
- 透過v$sql_bind_capture 檢視繫結變數。SQLAPT變數
- Oracle面對“資料傾斜列使用繫結變數”場景的解決方案Oracle變數
- WPF TreeView IsExpanded 繫結不上的問題View
- [20191216]共享池繫結變數的值在哪裡2.txt變數
- [20211227]抽取跟蹤檔案中的繫結變數值.txt變數
- [20210112]完善查詢繫結變數指令碼bind_cap.txt變數指令碼
- golang變數作用域問題-避免使用全域性變數Golang變數
- cursor_sharing=force強制繫結變數不會把變數值預設當成varchar2型別的理解變數型別
- OpenMP 環境變數使用總結變數
- 越來越發現自己不懂的還是不少--繫結變數變數
- zepto繫結事件改變冒泡事件流事件
- Grails中如何繫結引數AI
- oracle 11g 新特性之動態繫結變數窺視(一)Oracle變數
- oracle 11g 新特性之動態繫結變數窺視(二)Oracle變數
- 【CURSOR】Oracle繫結變數、執行計劃對遊標的影響Oracle變數
- WPF使用MVVM(二)-命令繫結MVVM