從2018年4月19日,第一個MySQL 8.0 GA版本8.0.11版本發布至今,已經過去有近3年的時間,
最近三周姜老師“喜提“MySQL 8.0.23,并做了大量的測試與驗證,深深地體會到MySQL 8.0的強大,
用過8.0,再想要讓我用回5.7,那簡直就和開過電車,再開燃油車一樣,回不去的。
今天,姜老師將分享自己最喜歡的MySQL 8.0的三大特性。
在真實的業務中,DBA的很大一部分工作就是需要對表進行DDL變更,
雖然,之前有pt-osc、gh-osc這樣工具可以變相完成在線加列的功能,然而,他們都不夠快速,也存在不少問題和限制,
在MySQL 8.0版本中,不論表的數據量有多大,加列操作都能瞬間完成,這就是內核原生的快速加列(Instant Add Column)功能。
BTW,這個功能是騰訊工程師陳福榮,梁飛龍開發并提交給官方。單就這一個功能,就足以吹噓一輩子。讓我們一起為這兩位大陸工程師點贊。
MySQL 8.0已經不再滿足于僅僅在OLTP領域稱王,可以說從8.0版本開始,MySQL將逐漸切入OLAP的賽道。
注意,上面我說的不是最近云環境下的HeatWeave產品,而是官方MySQL,
MySQL 8.0正式支持了Hash Join功能,并且廢棄了Block Nested Loop Join算法。在我的生產環境中,SQL執行效率得到大幅提升。
拿MySQL 8.0 + PowerBI來做個5~10T左右的小數倉,真是太適合不過,當然,數據量上去了,現在還得依賴Hadoop的大數據產品,
此外,8.0的CTE(Common Table Expression 通用表表達式)、Window Function(窗口函數)、Exists子查詢優化等,都將MySQL對于復雜SQL的支持提升到了一個新高度。
MySQL 8.0最大的誘惑在于性能的提升。
與操作系統升級不同的是,MySQL資料庫版本每次升級,伴隨性能的提升。而不是如操作系統般,同一硬件環境下,性能的倒推,然后倒逼用戶升級硬件。
不可否認,MySQL 5.7版本的性能已然有了大幅提升,在8.0版本中性能還有進一步的提升。可以說,官方在性能這塊的優化真的是不遺余力,
姜老師最為欣賞的功能是對于doublewrite的優化,即將doublewrite拆成多個文件以及對應內存鎖的拆分,這樣極大提升了MySQL在極端負載下的寫入性能。
另一個性能的提升點在于8.0版本對InnoDB層的整個redo模塊進行了重構,消除了之前存在于InnoDB層的一把大鎖,
通過上述的優化,MySQL 8.0在sysbench讀寫測試中,性能較5.7版本提升30%,較之5.6版本性能提升50%。
在sysbench的update測試中,MySQL 8.0版本較5.7版本有1倍的提升,較之5.6也有50%的性能提升,
注意:5.7版本的UPDATE性能有退化。
此外,雖然字符集UTFMB4已經使用非常廣泛,但8.0對于UTF8字符集的處理效率更高,因此能有更出色的性能,
在sysbench只讀測試環境下,MySQL 8.0比5.7能有40%的性能提升,
一分錢不花,用上MySQL 8.0,性能就能有30%~100%的,是不是做夢都會笑醒?
無論你是否相信,老大哥Oracle資料庫在大陸大勢已去,未來五年內,大陸銀行、證券、電信等領域將徹底完成去O。
感謝Trump,讓去IOE的進程提速至少5年的時間,本來一些old money們還猶猶豫豫,舍不得放下這么大一塊肥肉,而現在,沒有了任何可以回避的理由。
從18年前知道PostgreSQL資料庫伊始,PG一直扮演的是玄門正宗,追趕MySQL的角色,MySQL 8.0 OLAP、MGR功能的強化,已經讓PG資料庫所謂的most advanced open source database的稱號搖搖欲墜。
至于那些新時代的NewSQL新星們,不論是Aurora、OceanBase、TiDB們等,本質上,他們一點都不New,都是MySQL這個時代的產物,
所以,姜老師的結論是:在傳統OLTP領域,MySQL拿著望遠鏡都找不到對手,然后8.0版本又消無聲息地將手伸進了OLAP的口袋。
不要猶豫,趕緊升級到MySQL 8.0,相信我,一旦用上了,你肯定會再次愛上她——這個星球上最有魅力的資料庫,
MySQL, the most attractive database in the world.