深入內(nèi)存數(shù)據(jù)庫課件_第1頁
深入內(nèi)存數(shù)據(jù)庫課件_第2頁
深入內(nèi)存數(shù)據(jù)庫課件_第3頁
深入內(nèi)存數(shù)據(jù)庫課件_第4頁
深入內(nèi)存數(shù)據(jù)庫課件_第5頁
已閱讀5頁,還剩97頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

深入內(nèi)存數(shù)據(jù)庫TimesTenAlexWang深入內(nèi)存數(shù)據(jù)庫TimesTenAlexWang2023/1/421、概述與傳統(tǒng)數(shù)據(jù)庫的比較

TimesTen為什么快性能指標(biāo)應(yīng)用場景2022/12/2921、概述與傳統(tǒng)數(shù)據(jù)庫的比較2023/1/43什么是內(nèi)存數(shù)據(jù)庫?內(nèi)存數(shù)據(jù)庫將數(shù)據(jù)和元數(shù)據(jù)存放在內(nèi)存中,可以獲得極高的響應(yīng)速度并實現(xiàn)實時數(shù)據(jù)緩存數(shù)據(jù)庫與應(yīng)用程序共享一個地址空間完善的事務(wù)管理,針對物理內(nèi)存的優(yōu)化調(diào)度算法和并發(fā)事務(wù)處理關(guān)系型數(shù)據(jù)庫,支持SQL92數(shù)據(jù)可靠性、完善的數(shù)據(jù)恢復(fù)機制2022/12/293什么是內(nèi)存數(shù)據(jù)庫?內(nèi)存數(shù)據(jù)庫將數(shù)據(jù)和元2023/1/44與傳統(tǒng)數(shù)據(jù)庫比較(1)傳統(tǒng)數(shù)據(jù)庫的目的是處理永久、穩(wěn)定的數(shù)據(jù)。強調(diào)維護數(shù)據(jù)的完整性、一致性,但很難顧及數(shù)據(jù)及其處理的定時限制,不能滿足實時應(yīng)用的需要傳統(tǒng)數(shù)據(jù)庫由于磁盤IO、緩存管理、排隊等待及鎖的延遲等使得事務(wù)實際平均執(zhí)行時間與估算的最壞情況執(zhí)行時間相差很大;內(nèi)存數(shù)據(jù)庫由于沒有磁盤IO和緩存管理,能搞準(zhǔn)確估算事務(wù)響應(yīng)時間內(nèi)存數(shù)據(jù)庫處理的數(shù)據(jù)通常是“短暫”的,即有一定的時效。所以,實際應(yīng)用中內(nèi)存數(shù)據(jù)庫主要處理實時性強的業(yè)務(wù)邏輯處理數(shù)據(jù)。而傳統(tǒng)數(shù)據(jù)庫旨在處理永久、穩(wěn)定的數(shù)據(jù),其性能目標(biāo)是高的系統(tǒng)吞吐量和低的代價傳統(tǒng)數(shù)據(jù)庫是IO密集型應(yīng)用,內(nèi)存數(shù)據(jù)庫為CPU密集型應(yīng)用2022/12/294與傳統(tǒng)數(shù)據(jù)庫比較(1)傳統(tǒng)數(shù)據(jù)庫的目的2023/1/45與傳統(tǒng)數(shù)據(jù)庫比較(2)CharacteristicOracleDatabase10gOracleTimesTenDatamodelRelational:SQLRelational:SQLTargetapplicationsMission-criticalMission-criticalOptimizationDisk-centric(IO)Memory-centric(CPU)TypicaldeploymentDatabasetierApplicationtierArchitectureClient/serverDirectdataaccessResponsetimesMillisecondsMicrosecondsDatacapacityTensofterabytesTensofgigabytesScalabilityUnlimitedSMP/clusterGoodSMP2022/12/295與傳統(tǒng)數(shù)據(jù)庫比較(2)Characte2023/1/46TimesTen為什么快?(1)2022/12/296TimesTen為什么快?(1)2023/1/47TimesTen為什么快?(2)2022/12/297TimesTen為什么快?(2)2023/1/48TimesTen為什么快?(3)最小化磁盤IO沒有緩存管理的消耗針對物理內(nèi)存的優(yōu)化調(diào)度算法直接訪問,沒有IPC消耗風(fēng)險:共享地址空間2022/12/298TimesTen為什么快?(3)最小化2023/1/49TimesTen性能指標(biāo)2022/12/299TimesTen性能指標(biāo)2023/1/410使用場景(1):常用數(shù)據(jù)緩存緩存經(jīng)常被訪問的數(shù)據(jù),提高應(yīng)用的處理能力及反應(yīng)速度,減少網(wǎng)絡(luò)和后臺數(shù)據(jù)庫的負(fù)載2022/12/2910使用場景(1):常用數(shù)據(jù)緩存緩存經(jīng)常2023/1/411使用場景(2):熱點數(shù)據(jù)緩存緩存當(dāng)前正使用的“熱點數(shù)據(jù)”或重要客戶的數(shù)據(jù),已提高反應(yīng)速度優(yōu)化服務(wù),提高用戶的忠誠度.針對Table,換出的數(shù)據(jù)不能再換入!2022/12/2911使用場景(2):熱點數(shù)據(jù)緩存緩存當(dāng)前2023/1/412使用場景(3):實時交易內(nèi)存數(shù)據(jù)庫是可對消息隊列和事務(wù)進行處理的實時數(shù)據(jù)庫,并可把處理結(jié)果“push”到后臺數(shù)據(jù)庫巨大的性能差異!2022/12/2912使用場景(3):實時交易內(nèi)存數(shù)據(jù)庫是2023/1/4132、TimesTen的組成

TimesTen的組成日志和檢查點鎖事務(wù)訪問方式

XLA2022/12/29132、TimesTen的組成Time2023/1/414TimesTen的組成2022/12/2914TimesTen的組成2023/1/415日志和檢查點日志分為緩存和文件兩部分雙重檢查點文件Blocking/Non-Blocking增量生成Checkpoint文件自動刪除日志數(shù)據(jù)從檢查點和日志中恢復(fù)LogBuffer的事務(wù)可能丟失!?。?022/12/2915日志和檢查點日志分為緩存和文件兩部分2023/1/416鎖處理并發(fā)性訪問的機制,序列化多個應(yīng)用對資源的同時訪問。TimesTen有三種鎖機制:DataStore級鎖其它進程不能同時訪問該DataStore,即DataStore級的鎖都是排他的。只有在當(dāng)前DataStore上沒有活動的事務(wù)時,才能獲取DataStore級的鎖。一旦獲得DataStore級鎖,其它事務(wù)將被阻塞直到該鎖定被釋放。初始化、數(shù)據(jù)批量導(dǎo)入產(chǎn)生DataStore級鎖。表級鎖當(dāng)事務(wù)要對一個表的大部分記錄進行查詢、修改或者刪除時,就會獲得表級鎖。也可通過命令ttOptSetFlag()來手工動態(tài)設(shè)置。行級鎖行級鎖的并發(fā)性是最好的。它只鎖定要操作的行,所以不同的應(yīng)用可以同時操作同一個表中不同的行。2022/12/2916鎖處理并發(fā)性訪問的機制,序列化多個應(yīng)2023/1/417事務(wù)(1)Datastore可被多進程/多線程所共享:ACID

完整的事務(wù)支持。不支持嵌套事務(wù)/XA交易獨立性

默認(rèn)ReadCommitted事務(wù)級別 不支持MVCC 降低為串行事務(wù)級別隔離級別與并發(fā)性是互為矛盾的

隔離程度越高,數(shù)據(jù)庫的并發(fā)性越差;隔離程度越低,數(shù)據(jù)庫的并發(fā)性越好提高效率,違反D!2022/12/2917事務(wù)(1)Datastore可被2023/1/418事務(wù)(2)TimesTen支持兩級事務(wù)隔離:ReadcommittedisolationSerializableisolationIsolationLevel

DirtyRead

NonRepeatableRead

ReaduncommittedPossiblePossibleReadcommittedNotpossiblePossibleRepeatablereadNotpossibleNotpossibleSerializableNotpossibleNotpossible2022/12/2918事務(wù)(2)TimesTen支持兩級事2023/1/419查詢優(yōu)化(1)基于Cost的優(yōu)化器,優(yōu)化器根據(jù)下面的因素計算Cost:TableandcolumnstatisticsMetadatainformationIndexchoicesScanmethodsJoinalgorithmchoice一定要用綁定變量!2022/12/2919查詢優(yōu)化(1)基于Cost的優(yōu)化器,2023/1/420查詢優(yōu)化(2)Hash索引只能出現(xiàn)在主鍵上,只能用于等值匹配查詢,但占用空間較大;建Hash索引時必須定義Pages值(Rows/256),以避免Hash碰撞。TimesTen的兩種索引:T-tree索引適宜做范圍、排序等查詢(orderby、groupby、distinct),當(dāng)然它也可做等值查詢,占用空間較??;全表掃描時候,如果被掃描的表具有T-tree索引(不管這個索引的列是否被用到),則性能會有較大的提升。2022/12/2920查詢優(yōu)化(2)Hash索引Time2023/1/421查詢優(yōu)化(3)

統(tǒng)計內(nèi)置命令ttOptEstimateStats和ttOptUpdateStats用于對數(shù)據(jù)庫進行統(tǒng)計,以準(zhǔn)確的計算執(zhí)行路徑的Cost,選擇最優(yōu)的執(zhí)行計劃。

臨時索引系統(tǒng)有時會創(chuàng)建臨時索引加快查詢速度,但如果臨時索引創(chuàng)建地過于頻繁,就要考慮手工建相應(yīng)的索引,這可以通過系統(tǒng)表MONITOR的列CMD_TEMP_INDEXES來監(jiān)測。2022/12/2921查詢優(yōu)化(3)統(tǒng)計臨時索引2023/1/422查詢優(yōu)化(4)最常用的掃描方式:基于T-Tree索引的掃描方式基于Hash索引的掃描方式,Hash索引只能夠建立在主鍵上,因此,查詢必然是主鍵查詢基于Rowid的查找,這是最快的查詢方式全表掃描,如果表上有一個T-Tree索引,掃描速度會明顯加快2022/12/2922查詢優(yōu)化(4)最常用的掃描方式:2023/1/423訪問方式Datastore可被多進程/多線程所共享:直接連接應(yīng)用以共享模式訪問DataStore,DataStore被預(yù)先裝載到共享內(nèi)存段,應(yīng)用則映射該共享內(nèi)存段到自己的運行地址空間上C/S連接應(yīng)用必須和TimesTen部署在不同的機子上,或者32位的應(yīng)用程序必須連接64位的DataStore,且32位的應(yīng)用不能在64位的機子上重新編譯,此時就只能選擇C/S連接方式。

ODBC驅(qū)動管理器驅(qū)動管理器是獨立于具體的數(shù)據(jù)源的,即在應(yīng)用和數(shù)據(jù)源之間增加了一個抽象層。2022/12/2923訪問方式Datastore可被多2023/1/424MicroLoggingDatastore可被多進程/多線程所共享:共享進程空間會使嵌入式應(yīng)用受進程故障的影響MicroLogging確保內(nèi)存數(shù)據(jù)庫不受應(yīng)用進程故障的影響異常退出進程的未決事務(wù)被回滾 如有必要,數(shù)據(jù)庫進行Revorvery安全且高性能2022/12/2924MicroLoggingDatas2023/1/425XLA跟蹤實時數(shù)據(jù)變化監(jiān)視交易變化發(fā)送數(shù)據(jù)變化到外部應(yīng)用實現(xiàn)實時事件通知與處理TransactionLogAPI(XLA):2022/12/2925XLA跟蹤實時數(shù)據(jù)變化Transac2023/1/4263、高可用性

Replication

CacheConnect2022/12/29263、高可用性Replication2023/1/427Replication(1)多路,點對點Active/standby或active/active表級或data-store級復(fù)制同步與異步數(shù)據(jù)傳送故障自動恢復(fù)沖突檢測與解除2022/12/2927Replication(1)多路,2023/1/428Replication(2)2022/12/2928Replication(2)2023/1/429Replication(3)同步或異步數(shù)據(jù)復(fù)制:

異步復(fù)制

異步傳送交易數(shù)據(jù)非??斓膽?yīng)用響應(yīng)時間適合于需要高性能、低延遲的應(yīng)用場景

同步復(fù)制

同步傳送交易數(shù)據(jù)在返回控制權(quán)給應(yīng)用之前,提交的交易能確保被傳送到遠(yuǎn)端節(jié)點同步復(fù)制可以由應(yīng)用系統(tǒng)在交易層面來進行控制“開啟”或“關(guān)閉”2022/12/2929Replication(3)同步或2023/1/430Replication(4)同步復(fù)制

網(wǎng)絡(luò)IO快于磁盤IO2022/12/2930Replication(4)同步復(fù)2023/1/431Replication(5)異步復(fù)制

2022/12/2931Replication(5)異步復(fù)2023/1/432Replication(6)Return-receipt異步復(fù)制

2022/12/2932Replication(6)Ret2023/1/433Replication(7)2022/12/2933Replication(7)2023/1/434Replication(8)createreplicationocs_a_a_replication

elementadatastore

mastermydataon"cx_pdscp1" subscribermydataon"cx_pdscp2"

returntwosafe

storemydataon"cx_pdscp1" returnservicesoff whenreplicationstopped durablecommiton elementbdatastore mastermydataon"cx_pdscp2" subscribermydataon"cx_pdscp1" returntwosafe storemydataon"cx_pdscp2" returnservicesoff whenreplicationstopped durablecommiton;

Replication名稱組成數(shù)據(jù)庫實例復(fù)制方式策略:當(dāng)Agent停止,復(fù)制關(guān)閉;固化事務(wù)提交。2022/12/2934Replication(8)cre2023/1/435CacheConnect(1)緩存Oracle數(shù)據(jù)庫的數(shù)據(jù)只讀或可更新的緩存雙向更新異步寫在一個Oracle數(shù)據(jù)庫上可以建立多個緩存實例DateAging和PassThrough2022/12/2935CacheConnect(1)緩2023/1/436CacheConnect(2)CacheGroup有如下幾種類型:SystemManaged類型:

ReadOnly:TimesTen中的數(shù)據(jù)只讀,數(shù)據(jù)只在Oracle中更新,然后通過Autorefresh機制刷新到TimesTen中SWT:即當(dāng)應(yīng)用提交事務(wù)時,首先在Oracle提交,然后在TimesTen中提交,在此期間,應(yīng)用一直被阻塞AWT:即事務(wù)先在TimesTen中提交,然后以異步的模式在Oracle中提交。應(yīng)用不需要等待在Oracle數(shù)據(jù)庫那邊的提交。UserManaged類型:提供了一個完全開放的參數(shù)選擇模式,讓用戶自己去細(xì)粒度定義參數(shù)。2022/12/2936CacheConnect(2)C2023/1/437CacheConnect(3)DataAging的概念:

Aging就是當(dāng)TimesTen中的數(shù)據(jù)符合某些條件的時候,會被自動清除出TimesTen,當(dāng)系統(tǒng)的內(nèi)存不是很充足的時候,Aging可以保證有充足的空余空間去放入新的數(shù)據(jù),目前Aging的算法有兩種:一種是基于時間的,一種是基于LRU(最近最少使用)

特別說明:Aging可以針對表,也可以針對CacheGroup。針對表的時候,交換出去的數(shù)據(jù)將不能再被交換進來(TimesTen7.0.3版本)DataAging:2022/12/2937CacheConnect(3)2023/1/438CacheConnect(4)PassTrough:Level0:所有的SQL只是在TimesTen執(zhí)行Level1:SQL(除了Insert、Delete、Update及DDL之外)將被PassThrough到Oracle中執(zhí)行,如果該SQL在TimesTen執(zhí)行時產(chǎn)生語法錯誤。如果Insert、Delete及Update操作的目標(biāo)表在TimesTen不存在,則將被將被PassThrough到Oracle中執(zhí)行。Level2:同1,加上如果Insert、Update及Delete針對的是ReadOnlyCacheGroup,且符合1的描述,也將被PassThrough到Oracle中執(zhí)行。Level3:所有的SQL(除了Commit、Rollback、Savepoint及TimesTen獨有的設(shè)置其優(yōu)化器參數(shù)的內(nèi)置存儲過程)都被PassThrough到Oracle2022/12/2938CacheConnect(4)P2023/1/439CacheConnect(5)PassTrough:2022/12/2939CacheConnect(5)P2023/1/440CacheConnect(6)使用CREATEREADONLYCACHEGROUP

語句建立在Oracle端修改的數(shù)據(jù)自動同步到TimesTen中可以選擇全量和遞增兩種方式同步數(shù)據(jù)ReadonlyCacheGroup:2022/12/2940CacheConnect(6)使2023/1/441CacheConnect(7)如果應(yīng)用試圖修改一個ReadonlyCacheGroup的內(nèi)容,將會得到TimesTen錯誤碼8225,“Tableisreadonly”如果PassTrough設(shè)置為2或者3,DML語句將透傳到Oracle執(zhí)行,并把執(zhí)行的結(jié)果自動刷新回TimesTenReadonlyCacheGroup的限制:2022/12/2941CacheConnect(7)如2023/1/442CacheConnect(8)使用CREATESYNCHRONOUSWRITETHROUGHCACHEGROUP語句建立初始數(shù)據(jù)在CacheGroup建立后手動加載事務(wù)先在Oracle提交,如果提交失敗,TT必須回滾SWTCacheGroup:2022/12/2942CacheConnect(8)使2023/1/443CacheConnect(9)SWT的內(nèi)容可以通過命令手動加載、卸載和刷新建立SWT時不能指定WHERE條件TRUNCATETABLE不能反映在TimesTen中SWTCacheGroup的限制:2022/12/2943CacheConnect(9)S2023/1/444CacheConnect(10)使用CREATEASYNCHRONOUSWRITETHROUGHCACHEGROUP語句建立數(shù)據(jù)更新異步傳遞到Oracle應(yīng)用可以在Oracle數(shù)據(jù)庫宕機時繼續(xù)進行AWTCacheGroup:2022/12/2944CacheConnect(10)2023/1/445CacheConnect(11)TimesTen和Oracle即使連接失敗,事務(wù)信息也不會丟失事務(wù)在TimesTen和Oracle中提交的順序是一致的如果事務(wù)在TimesTen中成功,但在Oracle中提交失敗,將會在*.awterr文件中報告不能夠手動刷新數(shù)據(jù)建立CacheGroup不能指定WHERE條件在建立或刪除CacheGroup時,必須停止ReplicationAgent在Oracle中直接作的更新,有可能被TimesTen的修改覆蓋AWTCacheGroup的限制:2022/12/2945CacheConnect(11)2023/1/4464、常見問題日志不能自動刪除數(shù)據(jù)恢復(fù)時間漫長關(guān)鍵的連接屬性其它……2022/12/29464、常見問題日志不能自動刪除數(shù)據(jù)2023/1/447日志不能自動刪除現(xiàn)象:TimesTen的日志無法自動刪除,導(dǎo)致在磁盤上有大量的日志累積!!!日志刪除的條件,要求日志中的事務(wù)已經(jīng):1、作了Checkpoint2、通過Replication復(fù)制到備機3、在AWT方式下,通過ReplicationAgent復(fù)制到Oracle4、已作備份Command>callttlogholds;

<41,231442592,Replication

,AHOCSRB1:_ORACLE>

<41,231442592,Replication

,AHOCSRB2:DATA>

<41,231442592,Long-RunningTransaction

,138.1089>

<121,30922688,Checkpoint

,DATA.ds0>

<121,84106376,Checkpoint

,DATA.ds1>

5rowsfound.2022/12/2947日志不能自動刪除現(xiàn)象:TimesTe2023/1/448數(shù)據(jù)恢復(fù)時間漫長現(xiàn)象:一個實例在啟動時花費了大量的時間加載Checkpoint文件,加載時間取決于磁盤IO重演Log文件中的事務(wù),時間取決于文件的個數(shù)重建索引,時間取決于數(shù)據(jù)量、索引個數(shù)關(guān)閉實例前作2次Checkpoint2022/12/2948數(shù)據(jù)恢復(fù)時間漫長現(xiàn)象:一個實例在啟動2023/1/449關(guān)鍵的連接屬性現(xiàn)象:sys.odbc.ini中的關(guān)鍵參數(shù)PermSize/TempSizeCkptFrequency/CkptLogVolumeDurableCommitsConnectionsOracleID/UID/OraclePwdSMPOptLevel2022/12/2949關(guān)鍵的連接屬性現(xiàn)象:sys.odbc2023/1/450其它……現(xiàn)象:…….WangZheng@解決方案:…….2022/12/2950其它……現(xiàn)象:…….WangZhen2023/1/4512022/12/2951深入內(nèi)存數(shù)據(jù)庫TimesTenAlexWang深入內(nèi)存數(shù)據(jù)庫TimesTenAlexWang2023/1/4531、概述與傳統(tǒng)數(shù)據(jù)庫的比較

TimesTen為什么快性能指標(biāo)應(yīng)用場景2022/12/2921、概述與傳統(tǒng)數(shù)據(jù)庫的比較2023/1/454什么是內(nèi)存數(shù)據(jù)庫?內(nèi)存數(shù)據(jù)庫將數(shù)據(jù)和元數(shù)據(jù)存放在內(nèi)存中,可以獲得極高的響應(yīng)速度并實現(xiàn)實時數(shù)據(jù)緩存數(shù)據(jù)庫與應(yīng)用程序共享一個地址空間完善的事務(wù)管理,針對物理內(nèi)存的優(yōu)化調(diào)度算法和并發(fā)事務(wù)處理關(guān)系型數(shù)據(jù)庫,支持SQL92數(shù)據(jù)可靠性、完善的數(shù)據(jù)恢復(fù)機制2022/12/293什么是內(nèi)存數(shù)據(jù)庫?內(nèi)存數(shù)據(jù)庫將數(shù)據(jù)和元2023/1/455與傳統(tǒng)數(shù)據(jù)庫比較(1)傳統(tǒng)數(shù)據(jù)庫的目的是處理永久、穩(wěn)定的數(shù)據(jù)。強調(diào)維護數(shù)據(jù)的完整性、一致性,但很難顧及數(shù)據(jù)及其處理的定時限制,不能滿足實時應(yīng)用的需要傳統(tǒng)數(shù)據(jù)庫由于磁盤IO、緩存管理、排隊等待及鎖的延遲等使得事務(wù)實際平均執(zhí)行時間與估算的最壞情況執(zhí)行時間相差很大;內(nèi)存數(shù)據(jù)庫由于沒有磁盤IO和緩存管理,能搞準(zhǔn)確估算事務(wù)響應(yīng)時間內(nèi)存數(shù)據(jù)庫處理的數(shù)據(jù)通常是“短暫”的,即有一定的時效。所以,實際應(yīng)用中內(nèi)存數(shù)據(jù)庫主要處理實時性強的業(yè)務(wù)邏輯處理數(shù)據(jù)。而傳統(tǒng)數(shù)據(jù)庫旨在處理永久、穩(wěn)定的數(shù)據(jù),其性能目標(biāo)是高的系統(tǒng)吞吐量和低的代價傳統(tǒng)數(shù)據(jù)庫是IO密集型應(yīng)用,內(nèi)存數(shù)據(jù)庫為CPU密集型應(yīng)用2022/12/294與傳統(tǒng)數(shù)據(jù)庫比較(1)傳統(tǒng)數(shù)據(jù)庫的目的2023/1/456與傳統(tǒng)數(shù)據(jù)庫比較(2)CharacteristicOracleDatabase10gOracleTimesTenDatamodelRelational:SQLRelational:SQLTargetapplicationsMission-criticalMission-criticalOptimizationDisk-centric(IO)Memory-centric(CPU)TypicaldeploymentDatabasetierApplicationtierArchitectureClient/serverDirectdataaccessResponsetimesMillisecondsMicrosecondsDatacapacityTensofterabytesTensofgigabytesScalabilityUnlimitedSMP/clusterGoodSMP2022/12/295與傳統(tǒng)數(shù)據(jù)庫比較(2)Characte2023/1/457TimesTen為什么快?(1)2022/12/296TimesTen為什么快?(1)2023/1/458TimesTen為什么快?(2)2022/12/297TimesTen為什么快?(2)2023/1/459TimesTen為什么快?(3)最小化磁盤IO沒有緩存管理的消耗針對物理內(nèi)存的優(yōu)化調(diào)度算法直接訪問,沒有IPC消耗風(fēng)險:共享地址空間2022/12/298TimesTen為什么快?(3)最小化2023/1/460TimesTen性能指標(biāo)2022/12/299TimesTen性能指標(biāo)2023/1/461使用場景(1):常用數(shù)據(jù)緩存緩存經(jīng)常被訪問的數(shù)據(jù),提高應(yīng)用的處理能力及反應(yīng)速度,減少網(wǎng)絡(luò)和后臺數(shù)據(jù)庫的負(fù)載2022/12/2910使用場景(1):常用數(shù)據(jù)緩存緩存經(jīng)常2023/1/462使用場景(2):熱點數(shù)據(jù)緩存緩存當(dāng)前正使用的“熱點數(shù)據(jù)”或重要客戶的數(shù)據(jù),已提高反應(yīng)速度優(yōu)化服務(wù),提高用戶的忠誠度.針對Table,換出的數(shù)據(jù)不能再換入!2022/12/2911使用場景(2):熱點數(shù)據(jù)緩存緩存當(dāng)前2023/1/463使用場景(3):實時交易內(nèi)存數(shù)據(jù)庫是可對消息隊列和事務(wù)進行處理的實時數(shù)據(jù)庫,并可把處理結(jié)果“push”到后臺數(shù)據(jù)庫巨大的性能差異!2022/12/2912使用場景(3):實時交易內(nèi)存數(shù)據(jù)庫是2023/1/4642、TimesTen的組成

TimesTen的組成日志和檢查點鎖事務(wù)訪問方式

XLA2022/12/29132、TimesTen的組成Time2023/1/465TimesTen的組成2022/12/2914TimesTen的組成2023/1/466日志和檢查點日志分為緩存和文件兩部分雙重檢查點文件Blocking/Non-Blocking增量生成Checkpoint文件自動刪除日志數(shù)據(jù)從檢查點和日志中恢復(fù)LogBuffer的事務(wù)可能丟失?。。?022/12/2915日志和檢查點日志分為緩存和文件兩部分2023/1/467鎖處理并發(fā)性訪問的機制,序列化多個應(yīng)用對資源的同時訪問。TimesTen有三種鎖機制:DataStore級鎖其它進程不能同時訪問該DataStore,即DataStore級的鎖都是排他的。只有在當(dāng)前DataStore上沒有活動的事務(wù)時,才能獲取DataStore級的鎖。一旦獲得DataStore級鎖,其它事務(wù)將被阻塞直到該鎖定被釋放。初始化、數(shù)據(jù)批量導(dǎo)入產(chǎn)生DataStore級鎖。表級鎖當(dāng)事務(wù)要對一個表的大部分記錄進行查詢、修改或者刪除時,就會獲得表級鎖。也可通過命令ttOptSetFlag()來手工動態(tài)設(shè)置。行級鎖行級鎖的并發(fā)性是最好的。它只鎖定要操作的行,所以不同的應(yīng)用可以同時操作同一個表中不同的行。2022/12/2916鎖處理并發(fā)性訪問的機制,序列化多個應(yīng)2023/1/468事務(wù)(1)Datastore可被多進程/多線程所共享:ACID

完整的事務(wù)支持。不支持嵌套事務(wù)/XA交易獨立性

默認(rèn)ReadCommitted事務(wù)級別 不支持MVCC 降低為串行事務(wù)級別隔離級別與并發(fā)性是互為矛盾的

隔離程度越高,數(shù)據(jù)庫的并發(fā)性越差;隔離程度越低,數(shù)據(jù)庫的并發(fā)性越好提高效率,違反D!2022/12/2917事務(wù)(1)Datastore可被2023/1/469事務(wù)(2)TimesTen支持兩級事務(wù)隔離:ReadcommittedisolationSerializableisolationIsolationLevel

DirtyRead

NonRepeatableRead

ReaduncommittedPossiblePossibleReadcommittedNotpossiblePossibleRepeatablereadNotpossibleNotpossibleSerializableNotpossibleNotpossible2022/12/2918事務(wù)(2)TimesTen支持兩級事2023/1/470查詢優(yōu)化(1)基于Cost的優(yōu)化器,優(yōu)化器根據(jù)下面的因素計算Cost:TableandcolumnstatisticsMetadatainformationIndexchoicesScanmethodsJoinalgorithmchoice一定要用綁定變量!2022/12/2919查詢優(yōu)化(1)基于Cost的優(yōu)化器,2023/1/471查詢優(yōu)化(2)Hash索引只能出現(xiàn)在主鍵上,只能用于等值匹配查詢,但占用空間較大;建Hash索引時必須定義Pages值(Rows/256),以避免Hash碰撞。TimesTen的兩種索引:T-tree索引適宜做范圍、排序等查詢(orderby、groupby、distinct),當(dāng)然它也可做等值查詢,占用空間較小;全表掃描時候,如果被掃描的表具有T-tree索引(不管這個索引的列是否被用到),則性能會有較大的提升。2022/12/2920查詢優(yōu)化(2)Hash索引Time2023/1/472查詢優(yōu)化(3)

統(tǒng)計內(nèi)置命令ttOptEstimateStats和ttOptUpdateStats用于對數(shù)據(jù)庫進行統(tǒng)計,以準(zhǔn)確的計算執(zhí)行路徑的Cost,選擇最優(yōu)的執(zhí)行計劃。

臨時索引系統(tǒng)有時會創(chuàng)建臨時索引加快查詢速度,但如果臨時索引創(chuàng)建地過于頻繁,就要考慮手工建相應(yīng)的索引,這可以通過系統(tǒng)表MONITOR的列CMD_TEMP_INDEXES來監(jiān)測。2022/12/2921查詢優(yōu)化(3)統(tǒng)計臨時索引2023/1/473查詢優(yōu)化(4)最常用的掃描方式:基于T-Tree索引的掃描方式基于Hash索引的掃描方式,Hash索引只能夠建立在主鍵上,因此,查詢必然是主鍵查詢基于Rowid的查找,這是最快的查詢方式全表掃描,如果表上有一個T-Tree索引,掃描速度會明顯加快2022/12/2922查詢優(yōu)化(4)最常用的掃描方式:2023/1/474訪問方式Datastore可被多進程/多線程所共享:直接連接應(yīng)用以共享模式訪問DataStore,DataStore被預(yù)先裝載到共享內(nèi)存段,應(yīng)用則映射該共享內(nèi)存段到自己的運行地址空間上C/S連接應(yīng)用必須和TimesTen部署在不同的機子上,或者32位的應(yīng)用程序必須連接64位的DataStore,且32位的應(yīng)用不能在64位的機子上重新編譯,此時就只能選擇C/S連接方式。

ODBC驅(qū)動管理器驅(qū)動管理器是獨立于具體的數(shù)據(jù)源的,即在應(yīng)用和數(shù)據(jù)源之間增加了一個抽象層。2022/12/2923訪問方式Datastore可被多2023/1/475MicroLoggingDatastore可被多進程/多線程所共享:共享進程空間會使嵌入式應(yīng)用受進程故障的影響MicroLogging確保內(nèi)存數(shù)據(jù)庫不受應(yīng)用進程故障的影響異常退出進程的未決事務(wù)被回滾 如有必要,數(shù)據(jù)庫進行Revorvery安全且高性能2022/12/2924MicroLoggingDatas2023/1/476XLA跟蹤實時數(shù)據(jù)變化監(jiān)視交易變化發(fā)送數(shù)據(jù)變化到外部應(yīng)用實現(xiàn)實時事件通知與處理TransactionLogAPI(XLA):2022/12/2925XLA跟蹤實時數(shù)據(jù)變化Transac2023/1/4773、高可用性

Replication

CacheConnect2022/12/29263、高可用性Replication2023/1/478Replication(1)多路,點對點Active/standby或active/active表級或data-store級復(fù)制同步與異步數(shù)據(jù)傳送故障自動恢復(fù)沖突檢測與解除2022/12/2927Replication(1)多路,2023/1/479Replication(2)2022/12/2928Replication(2)2023/1/480Replication(3)同步或異步數(shù)據(jù)復(fù)制:

異步復(fù)制

異步傳送交易數(shù)據(jù)非??斓膽?yīng)用響應(yīng)時間適合于需要高性能、低延遲的應(yīng)用場景

同步復(fù)制

同步傳送交易數(shù)據(jù)在返回控制權(quán)給應(yīng)用之前,提交的交易能確保被傳送到遠(yuǎn)端節(jié)點同步復(fù)制可以由應(yīng)用系統(tǒng)在交易層面來進行控制“開啟”或“關(guān)閉”2022/12/2929Replication(3)同步或2023/1/481Replication(4)同步復(fù)制

網(wǎng)絡(luò)IO快于磁盤IO2022/12/2930Replication(4)同步復(fù)2023/1/482Replication(5)異步復(fù)制

2022/12/2931Replication(5)異步復(fù)2023/1/483Replication(6)Return-receipt異步復(fù)制

2022/12/2932Replication(6)Ret2023/1/484Replication(7)2022/12/2933Replication(7)2023/1/485Replication(8)createreplicationocs_a_a_replication

elementadatastore

mastermydataon"cx_pdscp1" subscribermydataon"cx_pdscp2"

returntwosafe

storemydataon"cx_pdscp1" returnservicesoff whenreplicationstopped durablecommiton elementbdatastore mastermydataon"cx_pdscp2" subscribermydataon"cx_pdscp1" returntwosafe storemydataon"cx_pdscp2" returnservicesoff whenreplicationstopped durablecommiton;

Replication名稱組成數(shù)據(jù)庫實例復(fù)制方式策略:當(dāng)Agent停止,復(fù)制關(guān)閉;固化事務(wù)提交。2022/12/2934Replication(8)cre2023/1/486CacheConnect(1)緩存Oracle數(shù)據(jù)庫的數(shù)據(jù)只讀或可更新的緩存雙向更新異步寫在一個Oracle數(shù)據(jù)庫上可以建立多個緩存實例DateAging和PassThrough2022/12/2935CacheConnect(1)緩2023/1/487CacheConnect(2)CacheGroup有如下幾種類型:SystemManaged類型:

ReadOnly:TimesTen中的數(shù)據(jù)只讀,數(shù)據(jù)只在Oracle中更新,然后通過Autorefresh機制刷新到TimesTen中SWT:即當(dāng)應(yīng)用提交事務(wù)時,首先在Oracle提交,然后在TimesTen中提交,在此期間,應(yīng)用一直被阻塞AWT:即事務(wù)先在TimesTen中提交,然后以異步的模式在Oracle中提交。應(yīng)用不需要等待在Oracle數(shù)據(jù)庫那邊的提交。UserManaged類型:提供了一個完全開放的參數(shù)選擇模式,讓用戶自己去細(xì)粒度定義參數(shù)。2022/12/2936CacheConnect(2)C2023/1/488CacheConnect(3)DataAging的概念:

Aging就是當(dāng)TimesTen中的數(shù)據(jù)符合某些條件的時候,會被自動清除出TimesTen,當(dāng)系統(tǒng)的內(nèi)存不是很充足的時候,Aging可以保證有充足的空余空間去放入新的數(shù)據(jù),目前Aging的算法有兩種:一種是基于時間的,一種是基于LRU(最近最少使用)

特別說明:Aging可以針對表,也可以針對CacheGroup。針對表的時候,交換出去的數(shù)據(jù)將不能再被交換進來(TimesTen7.0.3版本)DataAging:2022/12/2937CacheConnect(3)2023/1/489CacheConnect(4)PassTrough:Level0:所有的SQL只是在TimesTen執(zhí)行Level1:SQL(除了Insert、Delete、Update及DDL之外)將被PassThrough到Oracle中執(zhí)行,如果該SQL在TimesTen執(zhí)行時產(chǎn)生語法錯誤。如果Insert、Delete及Update操作的目標(biāo)表在TimesTen不存在,則將被將被PassThrough到Oracle中執(zhí)行。Level2:同1,加上如果Insert、Update及Delete針對的是ReadOnlyCacheGroup,且符合1的描述,也將被PassThrough到Oracle中執(zhí)行。Level3:所有的SQL(除了Commit、Rollback、Savepoint及TimesTen獨有的設(shè)置其優(yōu)化器參數(shù)的內(nèi)置存儲過程)都被PassThrough到Oracle2022/12/2938CacheConnect(4)P2023/1/490CacheConnect(5)PassTrough:2022/12/2939CacheConnect(5)P2023/1/491CacheConnect(6)使用CREATEREADONLYCACHEGROUP

語句建立在Oracle端修改的數(shù)據(jù)自動同步到TimesTen中可以選擇全量和遞增兩種方式同步數(shù)據(jù)ReadonlyCacheGroup:2022/12/2940CacheConnect(6)使2023/1/492CacheConnect(7)如果應(yīng)用試圖修改一個ReadonlyCacheGroup的內(nèi)容,將會得到TimesTen錯誤碼8225,“Tableisreadonly”如果PassTrough設(shè)置為2或者3,DML語句將透傳到Oracle執(zhí)行,并把執(zhí)行的結(jié)果自動刷新回TimesTenReadonlyCacheGroup的限制:2022/12/2941CacheConnect(7)如2023/1/493CacheConnect(8)使用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論