極速體驗:Oracle 18c 下載和Scalable Sequence新特性
Oracle 18c 已至,目前已經可以從Oracle Edelivery 網站下載。 該網站的網址是:https://edelivery.oracle.com。
搜索 Oracle Database 可以看到 18 版的軟體介質,目前的介質聲明是 Exadata Only,但是應可以在非Exadata Linux 系統平台安裝,OEL 是Oracle 推薦的最佳支持平台 :
關於 Oracle 18c 的新特性,我整理一個之前發布過的文章列表,供大家參考:
此前我們就曾經注意到一個有意思的特性:可擴展序列 - Scalable Sequence
通過在CREATE SEQUENCE或ALTER SEQUENCE語句中指定SCALE子句,可以使序列獲得健壯的擴展性。
那麼這個特性是如何實現的?究竟又是為了解決什麼問題呢?
我們回顧一下,Oracle RWP 團隊的領袖 Andrew Holdsworth 的一個精彩分享:Real World Performance 經典性能優化案例-索引競爭。
在這個主題中,Andrew 提到了在優化時候遇到的種種索引競爭情況:
我們一直在尋找一種方法,希望能夠從應用層就把競爭的可能性消除。既能解決單節點的競爭問題,又能在擴展中不帶來新的問題,這就需要保證緩存的相關性,讓數據所在的實例恰好是會被訪問的實例。
那麼最佳的解決方案會是怎樣的呢?
跟所有RWP的解決方案一樣,我們並不推薦通過各種配置或者參數的調整來解決問題,我們會擴展問題的領域,希望把問題上升到應用層去解決,對於案例中的索引競爭的問題,如果我們能控制如何生成代理主鍵,我們就能把這些特徵放入到生成的主鍵中。
這樣不僅能夠保證得到較好的緩存相關度,從而使RAC可擴展,而且可以把主鍵分散開,這樣在單實例上也不會出現競爭。
所以關於索引競爭,我們面臨兩個挑戰,
一是實例間的競爭或者說擴展性問題
二是單節點間的競爭
因此我們考慮生成一個智能主鍵,智能主鍵常常需要找到應用代碼中的某一行,弄清楚我們要如何生成這一串位元組才能確保不會出現競爭。
首先要考慮的是可以使用實例號作為主鍵號的開頭,這樣插入數據的時候就會保存在樹節點的一邊,也正是這些數據應該被保存到的實例上,這樣就可以建立與插入操作相關的緩存相關性。
當我們在訪問的時候能夠準確定位數據所在的實例之後,第二個要考慮的問題就是,訪問同一個實例上數據的時候不會競爭同一塊內存,
我們考慮,如果說智能主鍵的中間部分如果是對進程號某種方式取余,這樣就把對索引的維護分散到同一實例的多個內存塊上去,而智能主鍵的最後一部分是sequence的本身,這樣可以保證引用和完整性,確保每一行都是唯一的。
因此最終智能主鍵的組成是:實例ID-進程號取余-序列號
接下來我們通過實驗來看一下,在使用智能主鍵的情況下,發現系統的響應時間減少,其他等待事件消失,CPU利用率提高,並且只有CPU在佔用時間。跟最初系統沒有產生競爭的情況下的性能一樣。
通過自定義智能主鍵,很好地避免了傳統的索引方案的不足,在不影響性能的情況下有效實現了業務的需求。
我們來看一下 18c 中的可擴展序列的定義:
通過以下語法定義 scalable sequence:
當語句被指定時, 一個 6 位數的數字被指定作為序列的前綴,末尾是正常的序列數字,兩者聯合成為新的序列:
在這裡, 6 位數字前綴是如何生成的呢?正是由 實例號 和 會話號 生成的:
6 digit scalable sequence offset number = 3 digitinstanceoffset number3 digitsessionoffset number.
The 3 digitinstanceoffset number is generated as []. The 3 digitsessionoffset number is generated as [].
所以可以看到,這個設計和 之前 Andrew 的描述完全相同,這正是來自實踐的指導最終推動了 Oracle 資料庫產品的進步。
測試驗證一下吧:
drop sequence enmo_seq;
CREATE SEQUENCE enmo_seq INCREMENT BY 1 MAXVALUE 1000000 SCALE;
SELECT enmo_seq.nextval FROM dual;
由於有 6 位前綴,也就是說序列最小要具備 7 位的長度,否則將不能使用:
而即使是 7 位,對於單一進程連接,也將僅有 9 個可用值:
ORA-64603: NEXTVAL cannot be instantiated for ENMO_SEQ. Widen the sequence by 1 digits or alter sequence with SCALE EXTEND.
現在通過這種序列方式,能夠真正將來自不同實例的數據分散開來,索引競爭大大降低,從而提升了性能,使得序列變得可擴展。
更多新特性,歡迎大家測試體驗,並和我們分享。
如果你錯過了我們年前準備的新春大禮包,不妨再來一次也好:
年貨一:年度經典文檔選集
1、《恩墨年貨-企業系統運維及案例》下載:https://pan.baidu.com/s/1mkpD2fY
2、《恩墨年貨-MySQL與開源技術》下載:https://pan.baidu.com/s/1rahxN3Y
3、《恩墨年貨-SQL與性能優化》下載:https://pan.baidu.com/s/1smLbfEP
4、《恩墨年貨-前沿技術與時代走向》下載:https://pan.baidu.com/s/1jJa8mqy
年貨二:RAC及Oracle新特性全套課程視頻及PPT
10課時經典視頻,幫助你更好地學習新特性與RAC核心技術。
課程下載:https://pan.baidu.com/s/1kWoduCn 密碼: 4e3d
年貨三:經典電子書下載
《Oracle DBA手記4-數據安全警示錄》回復關鍵字』DBA04』
《Oracle DBA手記2》回復關鍵字』DBA02』
《Oracle DBA 手記1》回復關鍵字』DBA01』
祝大家開工大吉!加入我們,開始新一年的學習吧!
資源下載
關注公眾號:數據和雲(OraNews)回復關鍵字獲取
『2017DTC』,2017DTC大會PPT
『DBALIFE』,「DBA的一天」海報
『DBA04』,DBA手記4經典篇章電子書
『RACV1』,RAC系列課程視頻及ppt
『122ARCH』,Oracle 12.2體系結構圖
『2017OOW』,Oracle OpenWorld資料
『PRELECTION』,大講堂講師課程資料
※RWP團隊談SQL優化
※開工大吉:Oracle 18c已經發布及新特性介紹
TAG:雲和恩墨 |