為什麼我總和效能指標相差很遠?
我經常看到類似這樣的標題某某DB比原生MySQL快N倍。原生的快多少倍其實我覺得不是太重要,甚至是不是比原生的MySQL PG快這也不好說。我們退一萬步認為這個假設成立,實際也用不出這個效果。我今天來講講為什麼。首先一個正常的主流的關係型資料庫發揮出每秒幾萬次,乃至十幾萬次的讀,和幾千次寫一點問題都沒有。這還是在單機的情況下,所以我也一再強調如果業務沒有達到單機的瓶頸,就單機(可以主從保障高可用)就好了。不要分庫分表,當然單機了甚至單機上的各個schema相互訪問一下就好了,不用介面,不用MQ了。一致性都有保障,開發工作量減少非常多。但是為什麼我們經常會遇到瓶頸?這裡分析一下官方的資料怎麼來的?現實的資料怎麼來的?
官方資料庫(也稱實驗室資料),是在理想環境下,按照標準的設計和標準的規範壓測的。我猜TPCC也是這樣吧?我沒參與過,只能猜。實際資料可能過於完美,但是我們可能沒有理想的實驗室,但是如果也按照標準的設計和標準的規範來做,我覺得打個8-9折還是可以的。
但是真實情況呢?又是不忍直視啊。似乎MySQL、PG甚至Oracle的原廠都太過理想化我們的實際開發水平了。比如Oracle覺得我們不應該有直接路徑讀,MySQL以前覺得我們單表或者兩表關聯,取幾條資料,巢狀迴圈最好為什麼要hash join?但是實際上我國現狀可能除了大廠的那些開發做得好些,一般的企業很多開發都是全表查詢。索引?索引是什麼?不清楚。咦,我怎麼越查越慢?放快取吧。分庫吧。分表吧。 資料同步吧。訊息佇列吧。可能官方賣家秀是資料是每秒10萬次,而買家秀是100秒1次。這就差了1000萬倍的效能。所以官方想的很好,宣傳的可能有點誇大,但是實際用下來非常拉胯。
但是這個鍋誰背。我以前一直舉例,考駕照時候手動擋的。坡道起步,五檔起步。熄火了是怪車還是怪坡?
通常來說一個併發場景。比如60秒有600個請求,那麼最差的要求,每次請求不得超過0.1秒為好。因為一個資料庫不太可能就處理一個場景。如果頻次X單次時間等於併發區間的話,那麼說明CPU基本很忙了。
所以我們各種效能基本還是依靠SQL質量。那各種資料庫能不能在應用程式碼很差的時候還能發揮出實驗室效果或者接近實驗室效果呢。很少吧。我目前看到的例如Oracle in-memory還有tidb的tiflash的設計以及MySQL的heatwave都是從設計上用硬體去抗掉了。這些我真正用過的僅有in-memory,真的是全表聚合一億條,也就一秒不到。而這個還是我虛擬機器效果,不是一體機的效果。所以我覺得真正能抗爛程式碼的效能才是真的效能。
比如: 我想起來以前看到TimesTen分散式叢集的介紹(我只用過單機的)
就這些資料而言,基本屬於驚人的效能。我覺得大家都不太相信,我其實覺得如果我們有條件使用的話,8-9成的效能是能發揮的出來的。因為他是硬體可以去抗效能的。
結論就是之所以和宣傳的效能天差地別,就是沒有按照規範設計和實施。除非產品就是結合硬體去抗爛程式碼。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2903033/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Gartner:為什麼元宇宙商業離我們還很遙遠?元宇宙
- 我們為什麼很難堅持下去
- 為什麼我覺得 Java 的 IO 很複雜?Java
- 生活為什麼總是對我動手?
- 效能指標指標
- 為什麼有些公司的IT很亂?
- 剖析HBase負載均衡和效能指標負載指標
- 我們到底為什麼要用 IoC 和 AOP
- 我為什麼要做IT
- 什麼是 BPMN ?為什麼我們要用 BPMN 和工作流 ?
- 深度剖析HBase負載均衡和效能指標負載指標
- 【Learning eBPF-1】什麼是 eBPF?為什麼它很吊?eBPF
- 以使用者為中心的效能指標【譯】指標
- 什麼是智慧指標?為什麼要用智慧指標?指標
- Loadrunner效能指標分析指標
- MySQL常用效能指標MySql指標
- 我為什麼使用 JavaJava
- 我們為什麼要遠離資料庫生成的ID?- Tugberk Ugurlu資料庫
- SEO為什麼沒辦法快速見效
- 因果迷境:為什麼我們會問“為什麼”?
- 為什麼我信仰長期主義,並且認為沒有戰略是很恐怖的事情?
- 為什麼許可權授權很難?- osohq
- 我們為什麼需要 DevSecOps 和製品倉庫?dev
- Python為什麼發展這麼快速?原因很簡單!Python
- Linux 網路效能指標Linux指標
- 為什麼說Spark SQL遠遠超越了MPP SQLSparkSQL
- 為什麼我們需要 VuexVue
- 我們為什麼要用RedisRedis
- 我們為什麼而工作
- 我為什麼要使用Webpack?Web
- 我們為什麼需要CDP?
- 人工智慧總要成就一批人,為什麼不是我人工智慧
- 【CNN】很詳細的講解什麼以及為什麼是卷積(Convolution)!CNN卷積
- 為什麼《Kenshi》在兩年之後依然很火?
- 為什麼對gRPC做負載均衡會很棘手?RPC負載
- 為什麼我停止使用IPFS和分散式Web? - withblue分散式Web
- GC是什麼?為什麼我們要去使用它GC
- 什麼是Web workers?為什麼我們需要他Web