聊聊TPC那些事兒
最近幾天OceanBase TPC-H勇奪世界第一的PR宣傳被中文自媒體先后報道,興奮之余,筆者也想到,根據這些年對TPC機構以其審計師們的接觸,對TPC benchmark及其審計和發布流程有了一些了解,也聽到一些坊間的逸聞趣事,所以在恭喜OceanBase榮耀奪冠的時候,今天咱們也換個角度隨便聊聊關于TPC這個基準測試的事情。
1.誰在做TPC-H測試?
就先從TPC-H聊起吧,我們可以看到各個主流傳統數據庫廠商,在近些年早已經不再發表TPC-H的審計報告了,從而近年TPC-H越來越成為硬件設備廠商展示自己服務器處理能力的宣傳指標之一了。所以我們今天在TPC的官方網頁 [1] 就會看到很“有趣”的一幕,明明是數據庫性能的基準測試,但結果列表(所謂的“榜單”)一眼望去幾乎都是硬件廠商:系統 (System) 一欄幾乎都是服務器型號,測試贊助商 (Company/Sponsor) 幾乎都是設備廠商,除了OceanBase和Alibaba Cloud AnalyticDB是例外。而列表上不同的設備商往往會選用相同的數據庫產品做基準測試,例如在TPC-H中近些年測試使用最多的就是微軟的SQL Server Enterprise Edition。看到這里,我們大概會對TPC-H在業界中的作用解讀開始有了一些不一樣的想法了。
那為什么會這樣呢?首先我們來看看TPC-H這個benchmark。TPC-H 這個benchmark包含了非常嚴苛的ACID測試以及查詢性能測試,但嚴格來講并不是HTAP的TP和AP并存高并發的場景,而是在驗證ACID基礎上的一些相對簡單(對比TPC-DS)的OLAP查詢的性能測試。其中AP的并發查詢根據測試數據量 (scale factor) 不同,一般只有2-11個并發(在TPC-H中每個并發被稱為一個stream),在每個stream內22個查詢順序執行。而整個測試中TP只有一個并發 (stream),且這個TP的stream只包含對Order和Lineitem兩張表的千分之一左右數據的寫入和刪除,一般情況下只占每個AP stream執行耗時的很短時間,例如就以OceanBase這次公開發表的審計結果看,Performance RUN1的AP stream1耗時為1382秒,而TP的耗時僅不到7秒就結束了,對AP workload中的大部分查詢幾乎影響很小。并且由于TPC-H的數據模型過于簡單,數據分布單一,對于傳統數據庫系統的挑戰并不是很大。再加上各個數據庫廠商及學術界對于TPC-H這個benchmark已經研究的非常透了,哪個查詢該做什么優化,甚至多年前就有專門的論文來討論 [2],所以總體來看,TPC-H對于傳統數據庫系統來說沒有什么挑戰,對其宣傳作用也有限。而對以OceanBase為代表的數據庫“新勢力”來說,TPC-H難度適中,又比較全面地評測包括ACID在內的數據庫系統能力,發表測試結果可以為其帶來一定的可信度(我們后面再說為什么是“一定的”而不是“絕對的”),可以來作為商業推廣宣傳之一。
2.TPC-H的參考價值有多大?
這里再說說基準測試結果的可信度。首先TPC有嚴格的第三方審計制度,是常年與TPC合作的審計組織,這個組織里的審計師 (auditor) 都是數據庫領域有幾十年經驗的老專家,有些更是直接參與到benchmark的制定和修改中。整個審計流程非常嚴格,據說甚至連審計需要提供的日志輸出的格式都有嚴格要求。按理說在這樣嚴格的審計流程下,審計結果一定非常可信。Yes and No!
審計流程的嚴格沒有問題,但這里TPC對包括TPC-H, TPC-DS, TPC-C在內的TPC絕大數benchmark結果都要求是公開可測的,是公開發布的產品版本。此外TPC對哪些特殊優化是允許還是不允許都有要求,傳統數據庫廠商也都曾針對這些benchmark做了很多有針對性的優化,而個別優化無法在系統中默認打開,需要開關控制,而這樣的特殊優化是不能被TPC認可接受的,所以聽說也曾經出現過個別傳統數據庫廠商不得不撤回并重新發表某個TPC結果。回到大型分布式的數據庫系統,審計師現在一般不會直接登錄來親自測試驗證產品,往往會審查測試流程和腳本,并讓各個廠商自己提供證明,這些證明包括測試流程的審計日志,測試結果,正式版本的證明,所用硬件系統的價格證明,公開發售或提供服務(云產品)的證明等。有些時候這些證明并不能完全被證實,所以每次結果發布后,會有三個月的公示期,來讓公眾(包括競爭對手)來驗證。但是對于超大集群的測試結果,一般很少有人會有資源去驗證的,而對于云上產品,各個廠商也可以有方法來規避限制。所以總體來說,這個結果的可信度從技術角度一般沒有問題,但從TPC公開可測產品的要求來看,有時又無法完全保證。
再來看看TPC-DS。這項基準測試的第一家“上榜”廠商是國內星環,這也是TPC-DS基準推出后做的第一次官方審計測試,所以當時其實是星環幫助TPC一起解決了很多審計流程細節問題,這也是為什么星環當年的審計花費了很長時間。之后的阿里云的Cloud AnalyticDB和Cloud E-MapReduce兩個產品,得益于星環審計結果的公開測試腳本和文檔,在測試流程上可以少走一些彎路。這里也八卦一下,聽說阿里云這兩個產品有內部競爭所以在TPC-DS上時有PK,兩年內多次的審計測試讓TPC-DS的第三方審計公司這兩年的業務非常紅火,中國公司對于打榜的熱情應該著實讓TPC和其審計組織感動,據說每次審計的費用不菲,想來這也讓審計公司這兩年的業務更繁忙收益更好了,甚至聽說很多時候要提前很久來預約審計師的檔期時間。
3.云時代我們還要刷榜TPC嗎?
目前為止,我們看到TPC-DS的測試成績列表上基本上都是被中國公司占據,而國外特別是美國公司很少,這里面有不同的原因。首先像AWS Redshift,其TPC-DS默認開箱性能就非常優秀了,而且其產品本身的市場知名度和地位,不需要再借助TPC-DS來宣傳,就像傳統數據庫廠商已經很少去搞審計測試TPC-H這件事一樣了。而像Snowflake這樣的新興云數倉廠商,之前一直對于被公開(特別是被競爭對手)測試非常敏感,其TPC-DS性能一直比較“神秘”,期待以后可以看到其標準審計結果數據。國內某廠商據說在2019年也曾經聯系TPC來做審計,但由于上了美國實體限制名單,TPC只得退回其審計費用沒有再繼續。所以現在除了阿里云的兩個產品外,后來星環和華三也分別做過審計測試,其結果在TPC官網上都可以看到,其中星環第二次提交的成績還是非常不錯的,超過了阿里云兩款產品第一次“刷榜”的成績,但最近有一年的時間沒有再看到阿里云這兩個產品發表最新結果了。在某中文自媒體對OceanBase產品負責人的采訪文章中,文章作者也很期待OceanBase的TPC-DS審計結果發表,不知道是不是會再次掀起阿里云和OceanBase以及其它國內數據庫“新勢力”的新一輪“刷榜”熱情,讓我們拭目以待。
最后再來看TPC-C,這個基準測試的難度和“含金量”筆者個人認為要遠高于TPC-H,這是真正衡量一個TP系統的綜合能力。但是和TPC-H一樣,大多數傳統數據庫廠商因為各種原因已經幾乎不再審計和發表這項基準測試的結果了,更多的是一些設備商或集成商。而傳統廠商不再“刷榜”的另一個原因是其架構的擴展性達到相對瓶頸了,而這也是OceanBase可以利用其水平擴展的能力來“稱霸”榜首的一個重要原因。
好了,筆者今天就簡單地隨想隨寫了一些關于TPC的事情,個人認為,TPC-H打榜有意義,但從技術上來看意義有限,而TPC-C和TPC-DS相對的技術挑戰會更高一些。另一方面,現在國內新興數據庫技術及產品越來越多,作為國家重點發展的基礎系統軟件,對于中國的數據庫技術發展是非常好的一件事,但我們也要看到數據庫技術需要長期的積累沉淀和創新,要小心不要為了打榜出名而打榜,造成國內廠商的“打榜內卷”,而是真正能研發出對國家對民生有實際意義和技術突破的新技術新產品。
References:
[1]TPC,"TPC-H official results," [Online]. Available: http://tpc.org/tpch/results/tpch_last_ten_results5.asp?version=3 .
[2]T. N. a. O. E. Peter Boncz, "TPC-H Analyzed: Hidden Messages and Lessons Learned from an Influential Benchmark," [Online]. Available: https://homepages.cwi.nl/~boncz/snb-challenge/chokepoints-tpctc.pdf.
本文轉載自微信公眾號「楊建榮的學習筆記」,可以通過以下二維碼關注。轉載本文請聯系楊建榮的學習筆記公眾號。