AliSQL是阿里雲深度定製的獨立MySQL分支,除了社區版的全部功能外,AliSQL提供了相似於MySQL企業版的諸多功能,如企業級備份恢復、線程池、並行查詢等,而且AliSQL還提供兼容Oracle的能力,如sequence引擎等。RDS MySQL使用AliSQL內核,爲用戶提供了MySQL全部的功能,同時提供了企業級的安全、備份、恢復、監控、性能優化、只讀實例等高級特性。html
1月9日,依託AliSQL內核的專屬主機組RDS MySQL服務即將重磅發佈!
時間: 1月9日15:00 — 17:00
主題: RDS專屬主機組和ECS專有宿主機 聯合發佈會
詳情:https://promotion.aliyun.com/ntms/act/mysqlzhuanshuzhuji.html
預定直播!:https://yq.aliyun.com/live/1858
(需登錄阿里雲帳號哦!)mysql
MySQL表明了開源數據庫的快速發展,從2004年先後的Wiki、WordPress等輕量級Web 2.0應用起步,到2010年阿里巴巴在電商及支付場景大規模使用MySQL數據庫,再到2012年開始阿里雲RDS for MySQL爲成千上萬家客戶提供可靠的關係數據庫服務,積累了來自內外部功能、性能、安全方面的衆多需求,培養了一支強勁的MySQL研發團隊,並打造了面向企業場景的AliSQL分支,高效演進並穩定地服務着內外部關鍵業務場景。算法
讓咱們來一塊兒看一下AliSQL中面向企業場景的設計及功能。sql
MySQL 8.0有5個很是好的企業級功能,來逐一看一下:數據庫
咱們在2019年推出了基於MySQL 8.0版本的AliSQL版本,遠遠領先於同行。緩存
企業級場景(包括互聯網與非互聯網場景)的商業數字化程度愈來愈高,應用場景愈來愈豐富,RDS數據庫如何在有限資源(4c/8c規格,雲上彈性降底企業成本)的狀況下提供高質量服務,會面臨如下挑戰:安全
Dynamic Thread Pool能夠很好地解決上述問題,性能優化
Dynamic Thread Pool已經在RDS 5.6/5.7/8.0版本上線,並已經默認開啓,全部用戶和客戶均可以受益。TPCC模型最接近企業核心業務場景,在1024或2048客戶端併發的TPCC測試中,Dynamic Thread Pool能夠提高50%-100%左右的TpmC,並節約10%到20%的CPU資源消耗,給阿里雲全部客戶帶來實實在在的技術紅利。服務器
TPCC模型最接近企業核心業務場景,對此場景的優化可讓企業應用受益。在TPCC的壓力測試中,發現Index的鎖很是重,在節點分裂時會阻塞全部的其餘操做。AliSQL對此進行了優化,有效地下降了壓測過程當中,索引節點分裂的成本,大大地提高了TPCC場景的處理能力。在全內存的測試中,單機達到了39W的TpmC,相對於原生版本提高35-50%不等(大規格測試,5.6提高35%、5.7提高40%、8.0進升45%)。網絡
此優化已在RDS 56/57/80上同步優化發佈上線。
RDS 5.6/5.7/8.0都已經全線支持,而且支持SM4國密算法,能夠確保客戶數據的安全。
應用側的SQL優化對系統及業務的優化相當重要,原生的MySQL中缺乏行之有效的監控數據,AliSQL結合不一樣數據庫的經驗,並結合內部外部客戶的需求,在SQL性能這塊作了豐富的擴展,包含如下五個方面的擴展:
在仔細分析原生Performance Schema後,AliSQL中增長了這些額外的性能相關的數據,如實地反映了系統的運行狀況,方便咱們進行過後性能問題診斷,也方便了客戶進行SQL性能分析,也可讓第三方基於這些性能數據來爲客戶提供更好的性能優化服務。
在文件系統中刪除一個特別大的文件(Drop Table/Partition、Truncate Table/Partition)時,可能會鎖定整個文件系統,致使同一個文件系統上的其餘操做沒法進行,阻塞整個實例。AliSQL中對這種行爲進行了優化,當接到刪除表或分區的操做時,會記一個文件異步清理的任務,將表或分區的操做先作完,而後由後臺線程以相對溫和的方式進行清理。其原理是將大文件一步一步變小,到某個安全大小後,才完全刪除文件。
某些業務場景下,會產生大量的慢SQL語句,會被記錄在慢日誌中,而原生的MySQL一直使用單個文件機制會一直保持Slow Log文件打開,致使文件變得特別大(可高在上百GB),須要在關閉MySQL實例的狀況下,才能對Slow Log文件進行維護,很是地不友好。
AliSQL對此做出了改進,設計了Slow Log切換機制,能夠定時或到指定大小後進行切換(切換指令由外部觸發),避免須要重啓數據庫實例來維護Slow Log文件(好比釋放Slow Log空間)。其間還修復了以CSV格式存放Slow Log時,SQL執行時間範圍超過35天(一般是Binlog Dump命令)引發的損壞問題。
SQL Hint是很是有效的優化手段,AliSQL對SQL Hint作了功能擴展,能夠在運行過程當中將SQL計算中的路徑信息用相應的SQL Hint進行持久化保存,以保證執行計劃的穩定性。能夠有效應對如下場景下的SQL執行計劃變動:
對於核心業務的SQL,應當使用SQL Outline進行固化,避免SQL執行計劃變壞。
AliSQL還提供API進行SQL Hint編輯,便可以手工給SQL加一個Hint,進行透明的SQL優化,能夠在沒法更改應用程序代碼的狀況下進行SQL優化。並在此基礎上,與AliSQL其餘的優化功能進行集成,好比Statement Queue、Query Cache(研發中)等,能夠經過在SQL Outline中指定Hint來啓用Statement Queeu的併發控制,或啓用Query Cache,實現對應用透明的SQL優化。
MySQL的邏輯日誌(Binlog)給數據訂閱帶來了極大的便捷性,但也給性能帶來了負面影響。在服務客戶的過程當中,咱們發現企業場景對性能的要求愈來愈高,便對啓用Binlog後的事務提交機制進行了重大的技術突破,在不影響Binlog的前提下,去除了XA機制帶來的全部負面性能影響,相較於原生的MySQL,事務處理性能提高將近一倍。更實現了事務提交的Pipeline機制,交由Dynamic Thread Pool的線程去回覆用戶事務提交結果,進一步降底了線程池的線程數,提高了系統處理效率。
在MySQL中DDL語句是沒法回滾的,所以Drop/Truncate表或分區的操做會變得極期危險,在商業數據庫中也是如此。
Oracle在10g中加入了回收站的功能,能夠將Drop/Truncate的表或分區先放到回收站中,後續根據空間的使用狀況,按先進先出的策略自動回收。這樣就能夠在Drop/Truncate誤操做手,從回收站中快速恢復數據,而不須要進行實例基於時間點的恢復來找回誤操做的表,AliSQL在8.0上也實現了此回收站功能。
AliSQL還有其餘的企業級功能,例如Sequence引摯、Statement Queue等,在這裏不一一詳細解釋。
從業務中找需求,從技術中找需求,從運行維護中找需求,從合做夥伴中找需求,全部的需求方都是咱們的客戶,一直致力於讓AliSQL更加開放更加面向企業級應用。
大型企業數據庫服務首選,專屬主機組RDS MySQL服務重磅發佈!
時間: 1月9日15:00 — 17:00
主題: RDS專屬主機組和ECS專有宿主機 聯合發佈會
觀看方式:當即預定請戳下方連接??
本文做者:黃忠
本文爲阿里雲內容,未經容許不得轉載。