【優化】使用繫結變數 OR 不使用繫結變數,這不是問題!

TaihangMeng發表於2017-03-24
就目前現狀來看,大家有點過分強調繫結變數的作用了。
任何一種優化方法都尤其適用場景,繫結變數技術也不例外。不可盲目的將其信奉為影響效能的罪魁禍首。

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/30776559/viewspace-2136033/,如需轉載,請註明出處,否則將追究法律責任。

相關文章