移動互聯(lián)網(wǎng)時代,幾乎每一位做過中大型應(yīng)用的程序員,都經(jīng)歷過海量數(shù)據(jù) + 高并發(fā)帶來的折磨。
記得之前做過一個中型的互聯(lián)網(wǎng)應(yīng)用,為了應(yīng)付海量數(shù)據(jù)和高并發(fā),不得不硬著頭皮做了分庫分表,雖然技術(shù)成熟,但是運(yùn)維非常復(fù)雜,按需擴(kuò)展能力很差,尤其是當(dāng)數(shù)據(jù)的規(guī)模和查詢需求與之前的規(guī)劃不一樣的時候,調(diào)整起來非常的痛苦。比如按商戶id做了拆分,但是卻想從另外一個維度(如用戶id)進(jìn)查詢,處理起來非常麻煩。
海量數(shù)據(jù)再加上復(fù)雜的數(shù)據(jù)庫表結(jié)構(gòu),讓DBA每天都戰(zhàn)戰(zhàn)兢兢,因?yàn)閿?shù)據(jù)庫對程序員來說就是“黑盒子”,不定哪天就在代碼里寫了一條會觸發(fā)全表掃描的SQL,讓整個系統(tǒng)掛掉。特別是對于一些分析和查詢的場景,查詢耗時可能達(dá)到分鐘級別,嚴(yán)重影響用戶體驗(yàn)。
在那時候沒啥好辦法,出了問題只有靠人力撲上去做分析,加索引,半夜被叫醒都是家常便飯,非常苦逼。
我時常想,就沒有一種強(qiáng)大的云數(shù)據(jù)庫把這些問題都解決了,讓數(shù)據(jù)庫更好用、更高效,讓程序員的生活更加輕松一點(diǎn)嗎?
前幾天參加了騰訊全球數(shù)字生態(tài)大會,發(fā)現(xiàn)騰訊推出了一個叫做TDSQL Boundless(簡稱TDSQL-B)的分布式數(shù)據(jù)庫,它的幾個特性不由得讓人眼前一亮,讓我覺得騰訊云真是瞄準(zhǔn)了互聯(lián)網(wǎng)時代的數(shù)據(jù)庫痛點(diǎn)問題,并且提供了漂亮的解決方案。
01
和單機(jī)MySQL一樣好用的分布式數(shù)據(jù)庫
TDSQL Boundless(簡稱TDSQL-B)是騰訊云推出的最新一代超高性能分布式數(shù)據(jù)庫,我覺得它最大的亮點(diǎn)就是:“看起來/用起來”像個單機(jī)MySQL,但是性能和拓展性卻達(dá)到了分布式級別。
無需分片,彈性擴(kuò)容
就拿最讓人頭疼的數(shù)據(jù)分片來說,傳統(tǒng)的方式需要程序員手工指定分片鍵(shard key),一旦分片選錯,或者之后需要改動,后果極為嚴(yán)重。
但是在TSQL-B中,系統(tǒng)會根據(jù)數(shù)據(jù)量自動完成分片和調(diào)度,當(dāng)業(yè)務(wù)增長需要擴(kuò)容時,僅需新增節(jié)點(diǎn),數(shù)據(jù)會自動遷移至新節(jié)點(diǎn),傳統(tǒng)的分布式數(shù)據(jù)庫擴(kuò)容可能得“按月計算”,在TSQL-B這里縮減到了分鐘級,整個過程上層業(yè)務(wù)無感知,非常方便。
這比傳統(tǒng)分庫分表強(qiáng)太多了,程序員無需提前“絞盡腦汁”規(guī)劃分片策略,業(yè)務(wù)發(fā)展怎么變,無論數(shù)據(jù)從GB級增長到PB級,還是并發(fā)從萬級提升到十萬級,數(shù)據(jù)庫都能自動適應(yīng)。
百萬級QPS
傳統(tǒng)數(shù)據(jù)庫的“主從模式”,只有主節(jié)點(diǎn)能寫,其他節(jié)點(diǎn)只讀,都在“打下手”。TDSQL-B 不一樣,它采用多主模式,每個節(jié)點(diǎn)都能又讀又寫,就像多開了好幾個高速窗口,同時處理請求。并發(fā)能力直接拉滿,一個實(shí)例就能頂住百萬級QPS,突發(fā)流量來了也不慌。
存儲這塊兒,TDSQL-B 用上了高壓縮比引擎,對比 InnoDB,壓縮率最高能做到 20 倍。存儲成本直接砍下來,業(yè)務(wù)規(guī)模再大也能玩得起。
金融級可靠
TDSQL-B 天生就帶著金融級可靠性,系統(tǒng)會自動把數(shù)據(jù)拷貝成3份,放在不同機(jī)房或者機(jī)架里。就算一個機(jī)房斷電、硬盤壞了,其他副本馬上頂上,數(shù)據(jù)一條都不會丟(RPO=0)。哪怕是銀行轉(zhuǎn)賬、證券交易這種最嚴(yán)苛的場景,也能穩(wěn)穩(wěn)撐住。
如果遇到硬盤壞了、整機(jī)掛了,系統(tǒng)會在 30 秒內(nèi)自動切換到備用節(jié)點(diǎn),全程不用人工操作,用戶完全無感知。對金融、政務(wù)這種對“零中斷”要求極高的行業(yè)來說,簡直不要太省心。
TDSQL-B 還有個“數(shù)據(jù)親和性調(diào)度”的黑科技,會把主鍵、索引和相關(guān)表的數(shù)據(jù)安排在同一個節(jié)點(diǎn)上。這樣原本復(fù)雜的分布式事務(wù)就變成了單機(jī)事務(wù),避免了數(shù)據(jù)不一致的問題。賬單計算、余額更新這種關(guān)鍵操作,結(jié)果都能做到精準(zhǔn)無誤。
由于100%兼容MySQL語法,支持存儲過程、觸發(fā)器等MySQL核心功能,同時支持原生的Online DDL操作,現(xiàn)有MySQL業(yè)務(wù)無需改動一行代碼,即可無損遷移到TSQL-B,非常方便。
TSQL-B的這些能力不但讓它適合高并發(fā)的互聯(lián)網(wǎng)用戶,還適合要求“零中斷、零丟失”的金融行業(yè)用戶,例如銀行、證券、保險等核心交易系統(tǒng)。
比如某游戲中臺系統(tǒng),原來是8 * 一主3備分庫分表老架構(gòu),替換成TSQL-B以后,不但可以像單機(jī)MySQL那樣使用,資源成本還降低了60%,擴(kuò)容從月降到了分鐘。
02
TDAI:程序員的SQL守護(hù)神
相信不少人都有這樣的經(jīng)歷,上線的功能中包含了一個不起眼的SQL,結(jié)果把整個系統(tǒng)都搞掛掉。
在大會上我就看到了一個券商的案例,一個工程師在優(yōu)化債券交易模塊時,隨手添加了一條看似普通的SQL清理語句。這個SQL本來計劃在凌晨執(zhí)行,但是由于沒有正確利用索引,引發(fā)了核心交易表的全網(wǎng)掃描,數(shù)據(jù)庫性能持續(xù)惡化。
等到上午開市,大量高頻交易指令涌來的時候,數(shù)據(jù)庫鎖等待時間攀升至30+秒,高凈值客戶的交易被迫終止,應(yīng)急團(tuán)隊(duì)緊急回滾代碼后才逐步恢復(fù)服務(wù)。
這個事故反映出來的其實(shí)開發(fā)和DBA之間存著認(rèn)知鴻溝。
開發(fā)團(tuán)隊(duì)對業(yè)務(wù)邏輯和代碼門兒清,但一到數(shù)據(jù)庫這塊兒,基本就是個“黑盒子”,反正 ORM 框架能幫忙生成 SQL,管它呢。結(jié)果 SQL 寫出來跑得好不好,全憑運(yùn)氣。DBA懂?dāng)?shù)據(jù)庫內(nèi)核,也懂各種優(yōu)化技巧,但是沒法進(jìn)入開發(fā)環(huán)節(jié),只能是出了問題被動“救火”。
能不能在開發(fā)階段就發(fā)現(xiàn)并且消除SQL風(fēng)險的萌芽呢?
這就是TDAI要做的事情,它既懂代碼,又懂?dāng)?shù)據(jù)庫,在開發(fā)者在寫代碼的時候就能掃描代碼,發(fā)現(xiàn)有風(fēng)險的SQL,給出優(yōu)化建議。
這個功能還能無縫集成到CI/CD的流程中:
這就像給代碼裝上了一個“風(fēng)險透視鏡”,把可能出現(xiàn)的SQL風(fēng)險都消滅在無形之中。這個功能真的是很贊。
你可能會好奇,TDAI是怎么實(shí)現(xiàn)的呢?
現(xiàn)在的通用大模型肯定是不行的,數(shù)據(jù)庫是個垂直場景,通用大模型理解不了那些復(fù)雜的表和復(fù)雜的SQL。當(dāng)前業(yè)界智能體記憶系統(tǒng)(如AWS Bedrock AgentCore、Google Vertex AI Memory)側(cè)重記錄用戶偏好和對話上下文,未與企業(yè)私域數(shù)據(jù)深度打通。
所以騰訊云專門訓(xùn)練了一個數(shù)據(jù)庫大模型(DB LLM),包含了Code2SQL模型(C1)、智能診斷模型(D1)、智能優(yōu)化大模型(O1),將SQL抽取準(zhǔn)確率提升至90%+,并對SQL診斷推理持續(xù)深度優(yōu)化,診斷結(jié)果高置信度。
其次,TDAI還有一個全域上下文,整合Memory(長短期記憶)、DeepSearch(深度檢索)、Catalog(數(shù)據(jù)目錄),構(gòu)建企業(yè)級數(shù)據(jù)中樞,實(shí)現(xiàn)企業(yè)數(shù)據(jù)與智能體記憶的深度融合。
而工具集則基于MCP協(xié)議封裝上層智能體所需的原子能力(如實(shí)例克隆、流量回放),為智能體提供“從規(guī)劃到執(zhí)行”的工具支撐。
這一套組合拳打下來,就實(shí)現(xiàn)了事前預(yù)測SQL風(fēng)險的驚艷效果。
TDAI不僅解決了風(fēng)險SQL治理“先上線,再發(fā)現(xiàn)”的困境,還突破性地實(shí)現(xiàn)了從“人找數(shù)據(jù)”到“數(shù)據(jù)找人”的范式躍遷,它就像個24小時不間斷工作的哨兵,能自動看懂業(yè)務(wù),找出關(guān)鍵指標(biāo)的因果關(guān)系,能實(shí)時盯著數(shù)據(jù)流,秒級發(fā)現(xiàn)異常和趨勢變化。一旦發(fā)現(xiàn)問題,它會立刻生成帶有原因分析、趨勢預(yù)測和行動建議的報告,直接推送給決策者。
可以說,TDAI重新定義了數(shù)據(jù)庫治理范式,實(shí)現(xiàn)了用AI治理好數(shù)據(jù)庫。
03
AI自學(xué)習(xí)優(yōu)化器:越用越聰明
在云計算和大數(shù)據(jù)時代,數(shù)據(jù)不僅越來越多,還越來越復(fù)雜。企業(yè)的業(yè)務(wù)需求也跟著升級,尤其是做統(tǒng)計和分析的時候,動不動就是上億行的數(shù)據(jù),要跑多表 JOIN、好幾層嵌套查詢,還要面對動輒上百列的大寬表,這些查詢耗時經(jīng)常達(dá)到分鐘級別,嚴(yán)重影響用戶體驗(yàn)。
為了降低一個復(fù)雜SQL的查詢時間,經(jīng)常把DBA給累得夠嗆。
其實(shí)SQL執(zhí)行速度的快與慢,和數(shù)據(jù)庫的優(yōu)化器有極大的關(guān)聯(lián),優(yōu)化器的核心任務(wù)是從海量可能的執(zhí)行計劃中選擇最優(yōu)方案,以決定資源開銷和查詢時延,是決定數(shù)據(jù)庫查詢性能的核心環(huán)節(jié)。
但是在海量大數(shù)據(jù)和復(fù)雜查詢的場景下,傳統(tǒng)數(shù)據(jù)庫優(yōu)化器的局限就暴露了出來。
以10表關(guān)聯(lián)查詢?yōu)槔枰阉鞯膱?zhí)行計劃數(shù)量達(dá)到362萬至176億種!
優(yōu)化器要在有限時間里挑一個執(zhí)行計劃,會大量“剪枝”,結(jié)果就是最佳方案可能直接被錯過了!
另外優(yōu)化器主要靠過去的經(jīng)驗(yàn)來估算,但每個業(yè)務(wù)場景都不一樣,結(jié)果很難做到“因地制宜”,遇到數(shù)據(jù)傾斜,或者多列之間有關(guān)聯(lián)時,優(yōu)化器就很難準(zhǔn)確判斷數(shù)據(jù)分布。這樣一來,索引怎么選、JOIN 順序怎么排,常常會出錯,執(zhí)行效率大打折扣。
騰訊云 TDSQL-C 通過結(jié)合騰訊混元大模型的能力,建立了可自我反思演進(jìn)的全鏈路優(yōu)化器能力,成為業(yè)界首個推出 AI 自學(xué)習(xí)數(shù)據(jù)庫的廠商。
有了騰訊混元大模型的加持,極大地擴(kuò)展了搜索空間,避免陷入局部最優(yōu)解,通過可量化的數(shù)據(jù)反饋,突破了傳統(tǒng)獨(dú)立性假設(shè),減少了估算偏差。
騰訊還自研了一個“AI代價對比模型”,在線推理不同計劃的代價,能夠更準(zhǔn)確地度量每個執(zhí)行計劃的質(zhì)量。最后基于歷史執(zhí)行效果,持續(xù)反饋深度優(yōu)化模型,實(shí)現(xiàn) “越用越準(zhǔn)” 的智能優(yōu)化。
AI自學(xué)習(xí)優(yōu)化器的效果也非常驚人,在 TPC-DS 測試中,復(fù)雜查詢總時延可降幅80%以上。
在一個騰訊數(shù)據(jù)庫客戶的實(shí)際業(yè)務(wù)案例中,通過 AI 自學(xué)習(xí)優(yōu)化器的自動調(diào)優(yōu),擁有超16萬張表、600多種SQL語句、Top7慢查詢一天耗時13000多秒的客戶,在零人力投入的情況下,直接讓7類慢查詢總耗時下降80%+,查詢耗時壓縮到了3000秒內(nèi)。
04
總結(jié)
現(xiàn)在回頭來看,數(shù)據(jù)庫的這些年發(fā)展路線很清晰:
(1)從本地到云端
(2)從單機(jī)到分布式
(3)從人工調(diào)優(yōu)到智能化
但是,海量的數(shù)據(jù)和高并發(fā)也讓程序員為了分庫分表的設(shè)計,為了降低那么一點(diǎn)點(diǎn)查詢時間而絞盡腦汁,數(shù)據(jù)庫甚至成了程序員半夜被叫醒的“定時炸彈”。
而今天,騰訊云TDSQL-B 這樣的分布式數(shù)據(jù)庫、TDAI 和AI自學(xué)習(xí)優(yōu)化器,正在把這些煩惱一一解決掉。它不僅解決了開發(fā)者和 DBA 最痛的點(diǎn),還為未來的數(shù)據(jù)庫打開了一個全新的方向:數(shù)據(jù)庫不再只是一個被動的“黑盒”,而是能主動學(xué)習(xí)、主動優(yōu)化、主動守護(hù)的“智能伙伴”。
未來的程序員和 DBA 可以輕裝上陣,把精力真正放在業(yè)務(wù)創(chuàng)新上,而不是疲于救火。這是程序員,也是IT界最大的福音。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.