聊聊虛擬化和容器對資料庫的影響
虛擬機器上執行資料庫和物理機上執行資料庫哪個好?這裡說的好應該說是效能好,穩定性好。以我之前的認識是物理機較好。虛擬機器執行的資料庫在高負荷時候表現不佳。為什麼?今天來談談。
有一次我們談及到物理機,有人問一個物理機的CPU相當於多少個虛擬機器的CPU。說這個話其實就已經定性了,一個物理機的CPU會強於虛擬機器的CPU,至於強多少那麼是需要定量的。我們來看一個圖,這是一臺普通PC伺服器。
這個是2個插槽的,也就是2C的物理機伺服器,每個CPU8核,也就是16核,由於開了超執行緒所以邏輯上CPU是32個。假如通常用Oracle的CPU其實我也不知道應該是2還是32.不過國人這種通常是以2來算的。
這個機器上開了多少機器?
從匯出的列表上看有114個CPU(遠大於32個),212G記憶體(也遠大於實際)。為什麼可以做到這個?這就從CPU的原理說起。(我爸以前總說我不要開很多東西,計算機是分時處理系統。他學計算機的時候我還沒出生)。這是什麼意思?
我們有的時候聽著音樂,寫文件,還能開著網頁和下載電影,同時還聊天。就是同一時刻(我們人的)計算機在多很多事情。其實現代計算機普通的CPU一般每秒能運算幾億到幾十億次,比如我們用一個CPU邊放影片邊和別人打字聊天,CPU就會以極快的速度來切換兩個任務(其實任務的切換是作業系統來做的,作業系統就是計算機的管家,管理和排程計算機資源,讓計算機資源更高效地被我們利用),快到讓你感覺兩件事情好像在同時發生的。因為她快到我們無法感知到他切換了。我們的交流電220V 50赫茲。也就是每秒切換50次,我們分不出來,覺得他是一直恆定的。同樣計算機也是快的我們以為她是持續工作,其實他在嘲笑人類,我換來換去你都不知道。說這個有什麼用呢?有。虛擬化就是在這個上面做文章,我32C的物理機虛擬出來114個CPU,也就是說只要不是上面的30個多機器的都在同一時(每一個微妙納秒)刻滿負荷執行,他是可以來回切換的,而我們又感知不到。所以從這個角度來說,這個上面虛擬出來1000個CPU也是可以的。那麼一個物理機的CPU對應多少個虛擬機器的CPU就沒有一個準確的資料,甚至可以說沒法對比。
大家用過雲盤吧?看上去每個人都有好幾T。其實也是商家知道不是所有人都同時會用滿。所以10T可以分給1000個人。只要不是說有人都用10G以上就可以支援。我2013年參加SACC的時候聽到360的人說(那時候360還有云盤)。他們的硬碟使用率只要超過70%就是事故。所以你能理解了吧。因為大家同時發力就會讓泡沫破滅。虛擬化很大程度上是超賣了計算和儲存資源。這裡用泡沫形容不知道是不是貼切。虛擬化你就當是是保險吧。不能所有投保人同時都出事了。
為什麼我說虛擬化不適合資料庫。資料庫是高(CPU IO)密集度產品。計算資源和儲存資源有的時候獨享還不夠,更別說來共享分出去了。專心做本職工作效率高還是不停的切換效率高?
同樣docker容器也是一樣。但是非正式環境學習拿來用沒有問題。每個容器就會一個程式,每個程式都是共享作業系統的資源的。正式環境如果說沒什麼業務,那個業務人工做都來得及,用虛擬化和容器也不是不行。(估計沒人願意承認自己業務這麼小)
說回資料庫,PostgreSQL和MySQL都是有多個database,Oracle是好多PDB。在物理機環境下,每個子db可能峰值不一樣,這樣在一個物理機下,不同時刻執行的子db峰值不一樣,所以能夠內部平衡一下。如果全面滿負荷那就沒辦法了。我見過有人在Oracle的資料庫上特意去繫結CPU的,就是為了這個。虛擬機器不代表雲,雲的特點是彈性伸縮,快速獲得。但是一般VM是做不到自動伸縮的。所以虛擬機器申請環境都是按照峰值申請,日常是浪費的。雲是可以做到。在CPU 記憶體和磁碟達到最大範圍臨時擴大一下,然後再回收。這部分彈性計費。
僅從技術上以我個人觀點說明物理機為什麼比虛擬機器更加合適資料庫。或者說資料庫部署在虛擬機器上的弊端。所以單純以CPU來衡量物理機甚至是一體機與虛擬機器的對比其實他們不在一個頻道上。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2850483/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 容器化對資料庫的效能有影響嗎?資料庫
- 虛擬記憶體對 OI 的影響記憶體
- Docker不做虛擬化核心,對.NET有什麼影響?Docker
- 聊聊分散式資料庫中單節點故障的影響分散式資料庫
- 虛擬主機對網站有哪些影響?網站
- 磁碟排序對Oracle資料庫效能的影響排序Oracle資料庫
- ORM框架和資料庫對系統效能影響的比較ORM框架資料庫
- 元宇宙技術對於虛擬模擬應用的影響元宇宙
- 磁碟排序對Oracle資料庫效能的影響PT排序Oracle資料庫
- 變更OS時間對資料庫的影響資料庫
- 執行緒數目對資料庫的影響執行緒資料庫
- 修改系統時間對oracle資料庫的影響Oracle資料庫
- MySQL資料庫的效能的影響分析及其優化MySql資料庫優化
- 資料對於製造業的國際化影響
- OS和資料庫版本不同對RMAN備份還原的影響資料庫
- 資料庫調優和資料遷移是如何影響資料庫的RY資料庫
- 關於資料庫開啟大頁對效能的影響資料庫
- 虛擬機器和容器的對比 Virtual Server VS Docker虛擬機ServerDocker
- 容器技術和虛擬機器技術的對比虛擬機
- 專案資料視覺化對甲方客戶的影響視覺化
- 分支對程式碼效能的影響和優化優化
- 峰會預告 | Android容器和虛擬化Android
- NVM作為主存上對資料庫管理系統的影響資料庫
- 【Mysql】master_info 與 relay_info對資料庫的影響MySqlAST資料庫
- 表資料的儲存對索引的影響索引
- 表的nologging和logging屬性對資料庫redo資料生成的影響資料庫
- 主庫resetlogs對備庫的影響
- 如何在 Docker 容器中執行支援 OData 的 JBoss 資料虛擬化 GADocker
- 搜維爾科技:【研究】SenseGlove-觸覺技術對虛擬現實的影響
- 驗證資料壓縮對DML的影響
- SYSAUX表空間滿對資料庫的影響以及解決措施UX資料庫
- 不停機 data guard 注意事項 (重建orapw對資料庫的影響)資料庫
- 資料線線損和長度對資料傳輸和網路傳輸的影響
- 再聊聊資料庫國產化替代資料庫
- 【15】進大廠必須掌握的面試題-容器化和虛擬化面試面試題
- 沙盒化容器:是容器還是虛擬機器虛擬機
- 聊聊圖資料庫和圖資料庫的小知識資料庫
- Oracle安裝過程對資料庫級語言設定的影響Oracle資料庫