真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

通過(guò)自研數(shù)據(jù)庫(kù)畫(huà)像工具支持“去O”數(shù)據(jù)庫(kù)評(píng)估

“去O”,是近些年來(lái)一直很火的一個(gè)話題,隨之也產(chǎn)生了各種疑惑,包括現(xiàn)有數(shù)據(jù)庫(kù)評(píng)估、技術(shù)選型等。去O是項(xiàng)系統(tǒng)工程,需要做好充分的評(píng)估。本文通過(guò)自研工具,生成數(shù)據(jù)庫(kù)畫(huà)像,為去O評(píng)估提供一手?jǐn)?shù)據(jù),希望給大家?guī)?lái)借鑒。

從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供成都網(wǎng)站建設(shè)、網(wǎng)站制作服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。創(chuàng)新互聯(lián)將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。

一、常見(jiàn)疑惑

很多公司在考慮去O的時(shí)候,經(jīng)常面臨這樣的問(wèn)題—"對(duì)自己的數(shù)據(jù)庫(kù)不夠了解",也不免有這樣一些疑惑:

[管理者]

  • 數(shù)據(jù)庫(kù)去O成本高嘛?

  • 工作量大不大?

  • 工期長(zhǎng)嗎?

  • 是否存在什么風(fēng)險(xiǎn)?

[架構(gòu)師]

  • 使用MySQL能承載現(xiàn)有業(yè)務(wù)規(guī)模嘛?

  • 是否有什么技術(shù)風(fēng)險(xiǎn)?

  • 是否需要引入分庫(kù)分表嘛?

  • 是否需要引入緩存嘛?

  • 研發(fā)復(fù)雜度高嘛?

  • 需要投入多大工期?

  • 數(shù)據(jù)訪問(wèn)特征如何?

  • 遷移前后對(duì)比數(shù)據(jù)量大嗎?

[開(kāi)發(fā)者]

  • 復(fù)雜SQL多嘛?

  • 改造量是不是很大?

  • 是不是使用Oracle方言、專有對(duì)象,需要改造?

  • 等等

面對(duì)上面這些問(wèn)題,就需要快速了解現(xiàn)有Oracle的對(duì)象、語(yǔ)句、訪問(wèn)特征、性能表現(xiàn)等,并據(jù)此評(píng)估技術(shù)方案、遷移方案以及后續(xù)的工作量等。也就是說(shuō),需要給我們的數(shù)據(jù)庫(kù)進(jìn)行“畫(huà)像”?;谏厦娴臄?shù)據(jù)庫(kù)畫(huà)像,對(duì)去O工作全周期進(jìn)行指導(dǎo),包括以下方面都將大有裨益:

  • 決策階段:整體難度、成本(人財(cái)時(shí))、技術(shù)風(fēng)險(xiǎn)

  • 架構(gòu)階段:技術(shù)方案、對(duì)象結(jié)構(gòu)、性能評(píng)估

  • 研發(fā)階段:兼容性、復(fù)雜度、測(cè)試

  • 遷移階段:結(jié)構(gòu)遷移、數(shù)據(jù)遷移、數(shù)據(jù)校驗(yàn)

正是基于此類需求,有些公司推出評(píng)估產(chǎn)品,例如阿里的數(shù)據(jù)庫(kù)和應(yīng)用遷移服務(wù)(簡(jiǎn)稱 ADAM),但此類產(chǎn)品往往需要部署agent,上傳分析包等,對(duì)于安全比較敏感的企業(yè)不太可行。我所在的公司在兩年前啟動(dòng)去O工作時(shí),也面臨此問(wèn)題。故特意開(kāi)發(fā)個(gè)綠版小程序,可在本地運(yùn)行,方便評(píng)估工作。

地址:https://github.com/bjbean/oracle-estimate-report

二、設(shè)計(jì)思路

收集并匯總 Oracle 數(shù)據(jù)庫(kù)信息,包含環(huán)境、空間、對(duì)象、訪問(wèn)特征、資源開(kāi)銷及SQL語(yǔ)句等六方面信息,全面覆蓋數(shù)據(jù)庫(kù)實(shí)際運(yùn)行狀況。為信息收集更有針對(duì)性,工具通過(guò)參數(shù)設(shè)置部分閾值。通過(guò)運(yùn)行命令行,收集信息后生產(chǎn)WEB版評(píng)估報(bào)告,以可視化的方式直觀體現(xiàn)出來(lái)。不僅可作為去O評(píng)估依據(jù),亦可作為后續(xù)改造的數(shù)據(jù)參考。

三、畫(huà)像解讀

下面針對(duì)報(bào)告數(shù)據(jù)進(jìn)行解讀,并對(duì)常見(jiàn)的去O選型-MySQL進(jìn)行說(shuō)明。

3.1 概要信息

通過(guò)自研數(shù)據(jù)庫(kù)畫(huà)像工具支持“去O”數(shù)據(jù)庫(kù)評(píng)估

顯示收集的目標(biāo)的概要信息,包括IP、實(shí)例、用戶等。需注意分析時(shí)間,腳本會(huì)提取數(shù)據(jù)庫(kù)執(zhí)行特征(24小時(shí)內(nèi)),因此建議在業(yè)務(wù)高峰之后運(yùn)行。

3.2 空間信息

通過(guò)自研數(shù)據(jù)庫(kù)畫(huà)像工具支持“去O”數(shù)據(jù)庫(kù)評(píng)估

空間大小是數(shù)據(jù)庫(kù)選型需重點(diǎn)考慮的指標(biāo)之一,也會(huì)影響到后續(xù)遷移。如庫(kù)規(guī)模較大,應(yīng)考慮做分拆處理。拆分的原則就是盡量控制單庫(kù)規(guī)模。一般可遵循如下拆分優(yōu)先原則:

1)業(yè)務(wù)層垂直拆分

在應(yīng)用層面,將數(shù)據(jù)按照不同的業(yè)務(wù)條線進(jìn)行拆分。例如電商平臺(tái)中按照訂單、用戶、商品、庫(kù)存等拆分。各自拆分的部分,業(yè)務(wù)內(nèi)聚,無(wú)強(qiáng)數(shù)據(jù)依賴關(guān)系。

2)業(yè)務(wù)層水平拆分

在同一業(yè)務(wù)內(nèi)部,對(duì)數(shù)據(jù)建立生命周期管理,進(jìn)行數(shù)據(jù)冷熱分層。針對(duì)不同層的數(shù)據(jù)訪問(wèn)特點(diǎn)不同,可做進(jìn)一步拆分。例如電商平臺(tái)中,針對(duì)訂單可分為活躍訂單(二周內(nèi),可退換貨)、非活躍訂單(二周至半年期,客服可受理)、歷史訂單(半年以上)。

3)應(yīng)用層分庫(kù)分表

若經(jīng)過(guò)上述拆分單個(gè)庫(kù)的規(guī)模仍然較大,可考慮使用分庫(kù)分表技術(shù)。通常的做法是引入數(shù)據(jù)庫(kù)中間層,邏輯上虛擬出一個(gè)數(shù)據(jù)庫(kù),但物理上劃分為多個(gè)數(shù)據(jù)庫(kù)。這是一種不太“優(yōu)雅”的方案,因?yàn)楹茈y做到應(yīng)用透明。也就是說(shuō),必須在研發(fā)方面有所妥協(xié),犧牲一部分?jǐn)?shù)據(jù)庫(kù)能力。常見(jiàn)技術(shù)方案上可分為:Client、Proxy、SideCar三類,現(xiàn)多推薦使用Proxy模式(容器部署可考慮SideCar模式)。

4)基礎(chǔ)層分布式數(shù)據(jù)庫(kù)

較“分庫(kù)分表”方式更為徹底的是直接使用分布式數(shù)據(jù)庫(kù)。它提供了一種可承載更大規(guī)模(容量、吞吐量)的解決方案。近些年來(lái),分布式數(shù)據(jù)庫(kù)已逐漸成熟,推廣落地;并開(kāi)始在關(guān)鍵場(chǎng)景中嘗試使用。

3.3 對(duì)象信息

通過(guò)自研數(shù)據(jù)庫(kù)畫(huà)像工具支持“去O”數(shù)據(jù)庫(kù)評(píng)估

針對(duì)Oracle中對(duì)象,在改型中各有不同的考慮要點(diǎn)。報(bào)告中給出匯總數(shù)據(jù),也可給出明細(xì)數(shù)據(jù)方便查詢。

1)表

表的數(shù)量過(guò)多,直接影響數(shù)據(jù)字典大小,進(jìn)而影響數(shù)據(jù)庫(kù)整體效率。從MySQL來(lái)看,還需考慮文件句柄等問(wèn)題。這一指標(biāo)沒(méi)有一定之規(guī),需根據(jù)情況酌情考慮。這里更多是數(shù)據(jù)架構(gòu)層面考慮,避免單庫(kù)數(shù)據(jù)表過(guò)多。曾經(jīng)歷過(guò)單庫(kù)10萬(wàn)張表,性能低下;優(yōu)化后整合成2萬(wàn)張的優(yōu)化案例。如選擇MySQL,建議單庫(kù)不超過(guò)5000張表;庫(kù)*表的總數(shù)不超過(guò)20000。

2)表(大表)

控制單表的規(guī)模,是設(shè)計(jì)的要點(diǎn)之一,直接影響到訪問(wèn)性能。表過(guò)大,應(yīng)考慮采用上面的原則進(jìn)行拆分。表大小沒(méi)有通用原則,這里可通過(guò)參數(shù)進(jìn)行配置??砂凑瘴锢泶笮』蛴涗洈?shù)兩個(gè)維度設(shè)置。這里的關(guān)鍵點(diǎn)在于表的訪問(wèn)方式,如均為簡(jiǎn)單的kv型訪問(wèn),規(guī)模大些還好;如訪問(wèn)比較復(fù)雜,則建議閾值設(shè)置更低些。如選擇MySQL,大表復(fù)雜查詢或多表關(guān)聯(lián)等均不是其擅長(zhǎng)場(chǎng)景,可考慮使用ES、solr+hbase等方式異步處理復(fù)雜查詢。

3)表(分區(qū)表)

從9i、10g以來(lái),Oracle的分區(qū)功能日趨完善、功能增強(qiáng)。可以說(shuō)已成為Oracle應(yīng)對(duì)海量數(shù)據(jù)的利器。但對(duì)于MySQL來(lái)說(shuō),仍然不太建議使用分區(qū)功能。一方面,隨著硬件能力的增強(qiáng),單表可承載力變大;另一方面,MySQL使用分區(qū)還需面對(duì)“DDL放大”、“鎖變化”等問(wèn)題。如果團(tuán)隊(duì)可以很好地駕馭數(shù)據(jù)庫(kù)中間層,還是建議使用復(fù)雜度更低的分表技術(shù)。這也許會(huì)稍許增加研發(fā)量,但對(duì)運(yùn)維來(lái)說(shuō),好處多多。

4)字段(大對(duì)象)

在任何數(shù)據(jù)庫(kù)中,都不建議使用大對(duì)象。如果你用了,趁著改造工作,趕緊去掉吧。大對(duì)象功能對(duì)數(shù)據(jù)庫(kù)來(lái)說(shuō),就是肋。數(shù)據(jù)庫(kù)自身的ACID能力,應(yīng)著力保存更為重要的數(shù)據(jù)。

通過(guò)自研數(shù)據(jù)庫(kù)畫(huà)像工具支持“去O”數(shù)據(jù)庫(kù)評(píng)估

5)索引(B樹(shù))

索引過(guò)多會(huì)影響DML效率、占用大量空間??赏ㄟ^(guò)“索引/表”,大致反應(yīng)出索引數(shù)量的合理程度。這里沒(méi)有建議的數(shù)值,可根據(jù)情況酌情考慮。對(duì)于任何數(shù)據(jù)庫(kù)來(lái)說(shuō),都有類似的問(wèn)題,就是如何“構(gòu)建戰(zhàn)略性索引策略”。這里可參考下表(選自李華植-《海量數(shù)據(jù)庫(kù)解決方案》一書(shū)),梳理索引需求??茖W(xué)地創(chuàng)建、維護(hù)索引。

6)索引(其他)

Oracle除了通常的B+樹(shù)索引外,還支持其他類型的索引。如選擇其他數(shù)據(jù)庫(kù),那么這些索引都需要改造,通過(guò)其他方式實(shí)現(xiàn)。

7)視圖

視圖,作為SQL語(yǔ)句的邏輯封裝,在某些場(chǎng)景下(如安全)很有意義。不過(guò)它對(duì)于優(yōu)化器有較高要求,Oracle在這方面做了很多工作(可參看作者寫的《SQL優(yōu)化最佳實(shí)踐》一書(shū))。而對(duì)于MySQL,則不建議使用,考慮改造。

8)觸發(fā)器/存儲(chǔ)過(guò)程/函數(shù)

對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),承載了計(jì)算、存儲(chǔ)兩類能力。作為整個(gè)基礎(chǔ)架構(gòu)部分最難擴(kuò)展的組件,盡量發(fā)揮數(shù)據(jù)庫(kù)的核心能力很重要。相較于存儲(chǔ)能力而言,計(jì)算能力是可通過(guò)應(yīng)用層解決,而應(yīng)用層又是往往容易擴(kuò)展的。此外,考慮到未來(lái)的可維護(hù)性、可遷移性等因素,這部分考慮在應(yīng)用端解決吧。

通過(guò)自研數(shù)據(jù)庫(kù)畫(huà)像工具支持“去O”數(shù)據(jù)庫(kù)評(píng)估

9)序列

Oracle中的序列,可提供遞增的、非連續(xù)保障序號(hào)服務(wù)。在MySQL中有類似的實(shí)現(xiàn),是通過(guò)自增屬性來(lái)完成。這部分應(yīng)該可以做遷移,但如果并發(fā)量非常大;亦可考慮使用發(fā)號(hào)器的解決方案。

10)同義詞

同義詞是數(shù)據(jù)耦合的表現(xiàn),無(wú)論在什么數(shù)據(jù)庫(kù),都應(yīng)該摒棄掉。應(yīng)考慮在業(yè)務(wù)端進(jìn)行拆分,不再依賴于這種特性。

3.4 訪問(wèn)特征

通過(guò)自研數(shù)據(jù)庫(kù)畫(huà)像工具支持“去O”數(shù)據(jù)庫(kù)評(píng)估

這里收集了,在過(guò)去的24小時(shí)內(nèi)數(shù)據(jù)庫(kù)中DML次數(shù)最多的Top20。這直接地反應(yīng)出當(dāng)前系統(tǒng)的操作的“熱點(diǎn)”對(duì)象。這些對(duì)象都需要在選型之后、遷移之前重點(diǎn)評(píng)估其性能表現(xiàn)。能考慮分拆、緩存等手段,均可減低這些對(duì)象的熱點(diǎn)壓力。不僅局限于這些對(duì)象,更建議的是建立“業(yè)務(wù)壓力模型”。通過(guò)對(duì)業(yè)務(wù)充分的了解和評(píng)估后,將業(yè)務(wù)邏輯抽象出來(lái),轉(zhuǎn)化為數(shù)據(jù)壓力模型。此處的難點(diǎn)在于對(duì)業(yè)務(wù)邏輯的抽象能力及對(duì)模塊業(yè)務(wù)量的比例評(píng)估。

形成類似下面的偽代碼:

通過(guò)自研數(shù)據(jù)庫(kù)畫(huà)像工具支持“去O”數(shù)據(jù)庫(kù)評(píng)估

可依據(jù)上述偽代碼,編制壓力測(cè)試代碼。通過(guò)一些工具調(diào)用測(cè)試代碼,產(chǎn)生模擬測(cè)試的壓力。這對(duì)于系統(tǒng)改造、升級(jí)、擴(kuò)容評(píng)估、新硬件選型等均有意義。在具體去O工作中,新技術(shù)方案是否滿足需要,可通過(guò)此方法進(jìn)行評(píng)估驗(yàn)證。更多用業(yè)務(wù)的語(yǔ)言,來(lái)對(duì)比去O前后的承載力變化。這也是決策技術(shù)方案是否可行的考慮因素之一。當(dāng)然上述信息,只包括了DML,對(duì)查詢部分是不包含的,可以從Oracle AWR中獲得這些數(shù)據(jù)。更為完整的,可以考慮結(jié)合應(yīng)用做全鏈路的壓測(cè)。焦作國(guó)醫(yī)胃腸??漆t(yī)院:http://jz.lieju.com/zhuankeyiyuan/37845056.htm

3.5 資源消耗

通過(guò)自研數(shù)據(jù)庫(kù)畫(huà)像工具支持“去O”數(shù)據(jù)庫(kù)評(píng)估

這里列出了最近24小時(shí)的資源使用情況。這些數(shù)據(jù)主要有兩個(gè)目的:鄭州哪家醫(yī)院治療不孕不育好:byby.zztjyy.com

1)評(píng)估整體負(fù)載

因?yàn)樯鲜鲋笜?biāo)是Oracle的度量顯示的,無(wú)法直接類比到其他數(shù)據(jù)庫(kù)??梢詰{借專家經(jīng)驗(yàn)+歷史數(shù)據(jù),評(píng)估負(fù)載壓力。用于對(duì)其他備選技術(shù)方案進(jìn)行評(píng)估的依據(jù)之一。這其中的有些指標(biāo)(例如user calls等),可以轉(zhuǎn)化為量化指標(biāo)指導(dǎo)后續(xù)測(cè)試等工作。

2)評(píng)估瓶頸點(diǎn)

對(duì)于某項(xiàng)指標(biāo)非常突出的情況,那說(shuō)明現(xiàn)有業(yè)務(wù)也有瓶頸,在遷移至其他方案時(shí)盡量在設(shè)計(jì)階段就予以考慮,并在測(cè)試環(huán)節(jié)重點(diǎn)關(guān)注,減少可能的技術(shù)風(fēng)險(xiǎn)。

3.6 SQL語(yǔ)句

通過(guò)自研數(shù)據(jù)庫(kù)畫(huà)像工具支持“去O”數(shù)據(jù)庫(kù)評(píng)估

SQL語(yǔ)句的改寫,是整個(gè)遷移工作中最為頭疼的部分。除非是完全重構(gòu),否則是需要關(guān)注SQL改寫的工作任務(wù)。這里面涉及到改寫量、復(fù)雜度、性能對(duì)比等諸多內(nèi)容,很多還是需要人工甄別完成。

筆者曾經(jīng)有過(guò)這樣的經(jīng)驗(yàn),項(xiàng)目組花1個(gè)月的時(shí)間就完成某項(xiàng)目的“結(jié)構(gòu)+SQL”的遷移工作,但是后續(xù)又花費(fèi)了3個(gè)月的時(shí)間完成語(yǔ)句優(yōu)化、甚至結(jié)構(gòu)調(diào)整。其原因是遷移上線后語(yǔ)句無(wú)法滿足性能需求。而這是在邊上線、邊調(diào)整,過(guò)程異常痛苦。因此早期查明現(xiàn)有SQL情況,對(duì)于評(píng)估工作量、改寫難度、性能評(píng)估,有著重要的意義。而上面這部分就是收集了分析用戶在歷史的所有SQL(可以打開(kāi)明細(xì)開(kāi)關(guān),顯示全量SQL),其包含了以下這些維度。焦作國(guó)醫(yī)胃腸專科醫(yī)院:https://www.jianshu.com/p/b8966d1a468e

1)總SQL數(shù)

該指標(biāo)可近似反映業(yè)務(wù)繁忙程度。此外,也可用于后續(xù)有問(wèn)題語(yǔ)句的比例分析基礎(chǔ)。

2)超長(zhǎng)SQL

這里列出了超過(guò)指定字符數(shù)的語(yǔ)句,閥值在可通過(guò)參數(shù)進(jìn)行配置。如果是考慮MySQL,建議使用“短小精悍”的SQL,面對(duì)復(fù)雜SQL則一般表現(xiàn)不佳。那么對(duì)于這些超長(zhǎng)的語(yǔ)句,都是值得關(guān)注的對(duì)象,起碼是容易出現(xiàn)問(wèn)題的語(yǔ)句。

3)ANTI SQL

反向查詢,數(shù)據(jù)庫(kù)處理上都較為困難,這部分也比較考驗(yàn)優(yōu)化器。雖然在MySQL的較新版本中,對(duì)反向查詢有了不錯(cuò)的優(yōu)化,但這部分仍然值得關(guān)注。

4)Oracle Syntax SQL

有Oracle特征的寫法,即Oracle的方言(例如特有函數(shù)、偽列等),這些都是需要在遷移中進(jìn)行處理的。當(dāng)然現(xiàn)在也有的廠商,宣布其產(chǎn)品是兼容Oracle語(yǔ)法的,但也建議針對(duì)這些做專門測(cè)試。

5)Join 3+ Table SQL

多表關(guān)聯(lián),也是比較考驗(yàn)優(yōu)化器。特別是MySQL表間關(guān)聯(lián)效率偏低,不建議使用超過(guò)2個(gè)以上表的關(guān)聯(lián)。這里列出的是3個(gè)及以上的關(guān)聯(lián)查詢,需要考慮修改。針對(duì)特別復(fù)雜的查詢,可以考慮將其卸載到大數(shù)據(jù)平臺(tái)完成。

6)SubQuery SQL

子查詢情況類似上面,也是MySQL不擅長(zhǎng)的。雖然優(yōu)化器可在一定程度上進(jìn)行優(yōu)化,但還是值得關(guān)注。


網(wǎng)頁(yè)名稱:通過(guò)自研數(shù)據(jù)庫(kù)畫(huà)像工具支持“去O”數(shù)據(jù)庫(kù)評(píng)估
網(wǎng)站鏈接:http://weahome.cn/article/ggcsji.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部