<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          你的數(shù)據(jù)庫(kù),能撐起多少并發(fā),有數(shù)嗎?

          共 3176字,需瀏覽 7分鐘

           ·

          2020-10-12 21:31

          點(diǎn)擊藍(lán)色“有關(guān)SQL”關(guān)注我喲

          加個(gè)“星標(biāo)”,天天與10000人一起快樂成長(zhǎng)


          阿里巴巴的 OceanBase 數(shù)據(jù)庫(kù),性能超過(guò) Oracle 100倍,號(hào)稱世界第一。大家可還記得今年的 OB 打榜賽?


          不論真假,我還是對(duì)衡量標(biāo)準(zhǔn),很感興趣。尤其是數(shù)據(jù)倉(cāng)庫(kù)的標(biāo)準(zhǔn)TPC-H.

          TPC-H測(cè)試標(biāo)準(zhǔn),以8張表,22個(gè)查詢作為基礎(chǔ),在一定時(shí)間內(nèi)(通常是1小時(shí)),通過(guò)7個(gè)并發(fā)查詢,衡量數(shù)據(jù)庫(kù)的每秒處理事務(wù)數(shù),作為數(shù)據(jù)庫(kù)性能度量標(biāo)準(zhǔn)。用一個(gè)公式來(lái)描述整個(gè)過(guò)程,就是 QphH@Size.

          2018 年,惠普使用 microsoft sql server on linux 作為測(cè)試對(duì)象,向 TPC 組織, 提交了一次TPC-H性能報(bào)告。

          在1T的數(shù)據(jù)量下,花費(fèi)近47萬(wàn)美金,達(dá)到了每小時(shí)100萬(wàn)的查詢數(shù),即每秒可完成280查詢。公式表達(dá),1009065.5 QphH@1000GB.

          后臺(tái)回復(fù):惠普,即可得這份《報(bào)告》以及相應(yīng)的表和查詢腳本

          當(dāng)然,這還沒考慮到查詢性能的可接受程度,以27.6s這樣的平均速,其實(shí)很多用戶是會(huì)不滿意的。

          image

          這份報(bào)告雖然說(shuō)明一定的問(wèn)題,比如 Throughput 度量,性價(jià)比,但缺少對(duì)服務(wù)器的性能監(jiān)控。比如7個(gè)并發(fā),1小時(shí)連續(xù)壓測(cè)下,服務(wù)器的性能監(jiān)控圖。

          再者,數(shù)據(jù)庫(kù)的最終吞吐量,是否可以再擴(kuò)大,也沒有具體說(shuō)明白。如果降低并發(fā),是不是能夠獲得較好的性能?

          為了模擬惠普的這次測(cè)試,我通讀了TPC-H的測(cè)試標(biāo)準(zhǔn),惠普的這份測(cè)試報(bào)告,還有幾篇來(lái)自維普的論文。最終找到了模擬的方法。

          以下是詳細(xì)的測(cè)試步驟:

          1)下載 HammerDB 軟件
          2)準(zhǔn)備 SQL Server 測(cè)試環(huán)境
          3)復(fù)現(xiàn) Power Test
          4)? 復(fù)現(xiàn) Throughput Test

          1) 下載 HammerDB

          公眾號(hào)后臺(tái)回復(fù) HammerDB,即可得到 zip 版本的 HammerDB 連接。

          解壓縮后,直接打開,就可以使用

          image

          2)準(zhǔn)備 SQL Server 測(cè)試環(huán)境

          這就要自己準(zhǔn)備了,到微軟的官方網(wǎng)站下載180天的試用版,即可

          3)復(fù)現(xiàn) Power Test

          由于這次模擬的是 SQL Server TPC-H 測(cè)試標(biāo)準(zhǔn),所以在 HammerDB 中,我們需要預(yù)先配置:

          第一次打開 HammerDB 是這樣的,以 Oracle TPC-C 為默認(rèn)選中狀態(tài):

          image

          通過(guò)菜單 Options, 配置 SQL Server TPC-H 測(cè)試標(biāo)準(zhǔn):

          image
          image

          在 TPC-H 整套測(cè)試方案中,指定了8張表,22個(gè)查詢,配備相應(yīng)的數(shù)據(jù)生成程序與查詢生成程序,但這兩個(gè)程序都是使用c/c++寫的,必須先通過(guò)編譯,再通過(guò)調(diào)用接口來(lái)用在自己的測(cè)試方案中,我嘗試了下,放棄!不僅源碼復(fù)雜,有些環(huán)境還需要額外配置。

          在搜索了 n 篇論文以及博文之后,我發(fā)現(xiàn) HammerDB 已經(jīng)替我們把這些環(huán)境配置都搞定了,于是就它了。

          有了 HammerDB,我們唯一要做的事情,就是指定一個(gè)可用的測(cè)試數(shù)據(jù)庫(kù)就可以。

          image

          這里需要說(shuō)明的是 Scale Factor,也就是擴(kuò)展因子。說(shuō)人話,就是數(shù)據(jù)庫(kù)大小配置。總共可以分為6級(jí),1GB,10GB,30GB,100GB,300GB,1000GB.

          那么既然是自己測(cè)試,選擇1,即1GB,就可以了

          image

          點(diǎn)一下 Build,就完成了數(shù)據(jù)庫(kù)環(huán)境配置。

          通過(guò) SQL Server Profiler, 我們可以看到數(shù)據(jù)庫(kù)正在發(fā)生的一切:

          image

          通過(guò) HammerDB 的Build界面,可以看到執(zhí)行狀態(tài):

          image

          當(dāng)然,時(shí)間會(huì)很久,我們可以去喝一杯咖啡再來(lái),HammerDB會(huì)自動(dòng)報(bào)告,數(shù)據(jù)裝載是否完成:

          image

          由于裝載時(shí)間非常長(zhǎng),所以一旦數(shù)據(jù)庫(kù)建立成功,我們就要對(duì)它進(jìn)行備份:

          image

          接下來(lái),我們就要試著運(yùn)行一次 Power Test:

          首先配置 Driver Script:

          image

          Driver Script 做的事情,就是為測(cè)試中的虛擬用戶,配置執(zhí)行的操作。比如配置一組22個(gè)查詢組成的查詢流,讓虛擬用戶在登錄數(shù)據(jù)庫(kù),依次執(zhí)行這22個(gè)查詢。

          配置完 Driver Script, 我們就可以生成指定數(shù)量的并發(fā)用戶。這些用戶,可以執(zhí)行剛才配置的 Driver Script.

          Power Test 測(cè)試目的,是察看是否有明顯的響應(yīng)時(shí)間缺陷,所以設(shè)置單個(gè)用戶:

          image

          一旦配置完成,就可以雙擊 Create 來(lái)生成虛擬用戶的配置信息:

          image

          接著,我們點(diǎn)擊運(yùn)行單用戶的單次執(zhí)行:

          image

          耐心等待測(cè)試完成:

          image

          單輪測(cè)試用了124秒,似乎不夠理想。但這是我可憐的筆記本虛擬機(jī)服務(wù)器啊。

          然后,肯定會(huì)有讀者說(shuō),這是數(shù)據(jù)倉(cāng)庫(kù)啊,不能沒有寫入的操作啊。是的,這個(gè)寫入,我們也可以模擬,通過(guò)開啟 Refresh Function:

          image

          然后再重復(fù)新建用戶,并開啟測(cè)試。

          4)復(fù)現(xiàn) Throughput Testing

          Throughput 是吞吐量的意思,這個(gè)概念很有意思。

          首先來(lái)說(shuō)說(shuō)并發(fā)用戶。當(dāng)同時(shí)有10個(gè)用戶訪問(wèn)數(shù)據(jù)庫(kù)時(shí),假設(shè)他們同時(shí)執(zhí)行1條 SELECT 語(yǔ)句。此時(shí),并發(fā)數(shù)是10,Throughput 也是10,但你能不能說(shuō)數(shù)據(jù)庫(kù)并發(fā)度不夠呢?不能。因?yàn)榇藭r(shí)這并發(fā)的10個(gè)用戶,都對(duì)速度感到滿意,說(shuō)明完全可以再容納更多的人來(lái)數(shù)據(jù)庫(kù)查詢。

          于是,增加了100個(gè)人來(lái),還是運(yùn)行 一條SELECT語(yǔ)句。那么此時(shí),如果大家還是對(duì)響應(yīng)很滿意,說(shuō)明數(shù)據(jù)庫(kù)非常棒,還可以吸納更多的人。

          好,加20倍流量,來(lái)了200人。于是,有用戶反映,速度慢了,明顯慢了一倍以上,當(dāng)有50%的人都說(shuō)慢了的時(shí)候,顯然數(shù)據(jù)庫(kù)的吞吐量,要小于 200.

          我們往下調(diào)調(diào),來(lái)150人吧。此時(shí)90%以上的人,對(duì)速度滿意,那么就可以說(shuō),數(shù)據(jù)庫(kù)的吞吐量在 150左右了。

          這,就是 TPC-H 測(cè)試標(biāo)準(zhǔn)報(bào)告中,要體現(xiàn)的內(nèi)容了。不過(guò),人家更標(biāo)準(zhǔn),使用的是 QphH@Size.

          所以,我們要使用 hammerDB來(lái)模擬這個(gè)操作:

          首先設(shè)置4個(gè)并發(fā)用戶,第一個(gè)用戶會(huì)模擬寫入的操作:

          image

          開啟 QphH@Size 的統(tǒng)計(jì)功能:

          image

          等待測(cè)試完成

          image

          理論上,測(cè)試時(shí)間越長(zhǎng),測(cè)試的準(zhǔn)確度越高,但我們只是模擬,所以運(yùn)行一組 Query Set, 讓 HammerDB 幫我們預(yù)估就可以了:

          image
          image
          image
          image

          可以看到,4個(gè)并發(fā)測(cè)試下來(lái),大概可以得到每小時(shí)近20000個(gè)事務(wù)處理。也就是每秒鐘處理6個(gè)事務(wù)。

          那么是不是 Throughput 為6,就是我的數(shù)據(jù)庫(kù)極限了呢,我懷疑,可以更高。于是我調(diào)高了用戶并發(fā)數(shù),加了2個(gè),再來(lái)看 QphH:

          image
          image

          發(fā)現(xiàn),最高的 QphH 雖然比4個(gè)用戶那次高,但明顯已經(jīng)影響了用戶的響應(yīng)時(shí)間,普遍從原來(lái)的100s 延長(zhǎng)到了160s 以上。說(shuō)明,已經(jīng)不能再增加并發(fā)查詢了,6事務(wù)/秒已經(jīng)是我這臺(tái)數(shù)據(jù)庫(kù)的極限。

          很可惜的是,HammerDB 并不能動(dòng)態(tài)增加用戶數(shù),導(dǎo)致測(cè)試不流暢,不得不說(shuō)是個(gè)遺憾。我看到 oracle 廠商在 demo 他們的系統(tǒng)時(shí),并發(fā)用戶數(shù),是動(dòng)態(tài)可加的,想加就加,相減就減,操作隨意地令人發(fā)指。提高了測(cè)試的準(zhǔn)確度。

          說(shuō)Oracle是世界,乃至宇宙第一,還不得不服。



          --完--





          往期精彩:


          本號(hào)精華合集(二)

          如何寫好 5000 行的 SQL 代碼

          如何提高閱讀 SQL 源代碼的快感

          我在面試數(shù)據(jù)庫(kù)工程師候選人時(shí),常問(wèn)的一些題

          零基礎(chǔ) SQL 數(shù)據(jù)庫(kù)小白,從入門到精通的學(xué)習(xí)路線與書單









          瀏覽 37
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲AV永久无码精品国产精 | 久热只有精品 | WwW69免费视频 | 69成人做爰www免费看 | 91成人在线电影 |