當前位置:
首頁 > 最新 > 極速體驗:Oracle 18c 下載和Scalable Sequence新特性

極速體驗: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:雲和恩墨 |