今天我看到一位老師給我一份測試數據。
這是三個國產數據庫。算是分布式的。其中有兩個和我比較熟悉,但是這個數據看上去并不好。看上去第一個黃色的數據庫數據是這里最好的了。但是即使如此,我相信大部分做數據庫的人都知道。MySQL和PostgreSQL平時拿出的數據都比這些國產分布式數據庫要好。那Oracle就更加不用說了。
練為戰不為看
可能不懂數據庫的領導看上去這些數據,每秒幾千幾萬很厲害啊。其實剛才也說了,這對于數據庫來說這根本不叫事。
那我說說看法,這些測試的數據,我基本不看。因為不是從實際出發。
大家看過電影電視劇之類提到過軍事演習。里面經常會說一切以實戰出發。什么是實戰?就是模擬現實中遇到的問題。我國軍隊中一直有紅軍和藍軍。藍軍就是模擬外軍的作戰風格和戰術,看看紅軍能不能打贏。每次演習就是一次磨刀任務,如果打贏了。那么將來可能也能打贏。如果打輸了說明可能遇到這種打法會失敗。要總結失敗教訓。這叫實戰,模擬實際的,哪怕再惡劣的環境。而不是說對方一字排開在那里站著,讓我們打,看看命中率多高。
壓測數據脫離實際
以上表格的數據都是基于簡單場景的、標準SQL的壓測。而實際工作中幾乎不可能是這樣的。
大部分開發人員其實注重的是開發功能,至于索引不怎么關注。所以能用索引的場景太少了。真實的場景是什么?就是低效SQL。
如果總說這種極端理想壓測,這就像物理考試做題,在光滑水平面。 然后那么這個物體可以運行到哪里?
而實際上生產環境,就沒有所謂光滑水平面。意味著一到生產,發現何止不光滑,簡直尼瑪凹凸不平。別說可以運行多遠了,連動幾乎都沒動。
當然可能有人會說應該去治理。沒錯。但是現狀普遍沒有這么主動治理的。都是被動治理,即出問題就治理。不出問題不治理。
用真實姿勢壓測
我一直覺得應該來常態化的測試,就是爛SQL測試,一切從實戰出發。以無節操開發的寫的那種SQL直接上(包括表結構不合理等)。看看哪家產品能活著。因為POC好看,而實際拉胯最終帶來的效果是很惡劣的。