團(tuán)隊(duì)于今年(2025.9)打磨出了深度優(yōu)化的自研數(shù)據(jù)庫(kù)內(nèi)核——DongSQL V1.1.0。
[如果對(duì)前因后果比較感興趣,可以移步上一篇文章《寶劍鋒從磨礪出——零售數(shù)據(jù)庫(kù)內(nèi)核,為大促鑄劍!》]
本文將深度解析DongSQL在語(yǔ)法擴(kuò)展、并發(fā)控制、查詢優(yōu)化等方面的內(nèi)核改造,以及在電商場(chǎng)景下的優(yōu)化實(shí)踐。

1、DongSQL在語(yǔ)法擴(kuò)展上的優(yōu)化
1.1. RETURNING子句功能
?? 語(yǔ)法擴(kuò)展創(chuàng)新:DongSQL在標(biāo)準(zhǔn)SQL語(yǔ)法基礎(chǔ)上擴(kuò)展了RETURNING子句,這是重要語(yǔ)法創(chuàng)新。RETURNING子句允許DML語(yǔ)句(INSERT、UPDATE、DELETE、REPLACE)在執(zhí)行數(shù)據(jù)修改操作的同時(shí)返回受影響的行數(shù)據(jù),無(wú)需額外查詢。
傳統(tǒng)數(shù)據(jù)庫(kù)在執(zhí)行DML操作后,如果需要獲取操作結(jié)果,必須執(zhí)行額外的SELECT查詢,這在高并發(fā)場(chǎng)景下會(huì)產(chǎn)生額外的網(wǎng)絡(luò)往返開(kāi)銷(xiāo)。DongSQL通過(guò)RETURNING子句徹底解決了這一問(wèn)題。
--INSERT操作返回自增ID INSERTINTOorders(customer_id,order_date)VALUES(1001,NOW())RETURNINGorder_id; --UPDATE操作返回更新后的數(shù)據(jù) UPDATEproductsSETprice=price*1.1WHEREcategory='electronics' RETURNINGproduct_id,name,old_price,price; --DELETE操作返回被刪除的記錄 DELETEFROMexpired_sessionsWHEREexpire_time
?? 性能提升效果:經(jīng)測(cè)試驗(yàn)證,RETURNING子句在不同場(chǎng)景下都能帶來(lái)顯著的性能提升:
?固定行更新場(chǎng)景:16并發(fā)時(shí)TPS提升61%,響應(yīng)時(shí)間降低44%
?隨機(jī)行更新場(chǎng)景:128并發(fā)時(shí)TPS提升18%
?大規(guī)模更新測(cè)試:2000萬(wàn)次操作中平均TPS提升5-10%

?? 生產(chǎn)落地預(yù)期:該功能與DongDAL發(fā)號(hào)器邏輯高度匹配,有望將發(fā)號(hào)器性能瓶頸大幅提升(DongDAL團(tuán)隊(duì)配套開(kāi)發(fā)推進(jìn)中)
1.2. Hint語(yǔ)法擴(kuò)展
?? 多樣化Hint支持:DongSQL擴(kuò)展了Hint語(yǔ)法體系,提供了針對(duì)電商場(chǎng)景的專(zhuān)用提示功能,包括并發(fā)控制、庫(kù)存管理等領(lǐng)域特定的優(yōu)化。
?? Inventory Hint:專(zhuān)門(mén)針對(duì)電商庫(kù)存管理場(chǎng)景設(shè)計(jì)的提示語(yǔ)法,提供目標(biāo)影響行數(shù)控制、自動(dòng)提交/回滾等特性。
--庫(kù)存扣減:確保只影響一行,成功自動(dòng)提交,失敗自動(dòng)回滾 UPDATE/*+TARGET_AFFECT_ROW(1)COMMIT_ON_SUCCESSROLLBACK_ON_FAIL*/ inventorySETstock=stock-5 WHEREproduct_id=1001ANDstock>=5;
?? 性能提升數(shù)據(jù):在16并發(fā)的庫(kù)存扣減場(chǎng)景下,使用Inventory Hint比不使用hint性能提升215%。

2、DongSQL在并發(fā)控制上的優(yōu)化
2.1. CCL并發(fā)控制
?? 多維度限流機(jī)制:DongSQL實(shí)現(xiàn)了CCL(Concurrency Control)并發(fā)控制功能,通過(guò)多維度的限流策略,有效解決電商秒殺場(chǎng)景下的熱點(diǎn)數(shù)據(jù)訪問(wèn)問(wèn)題。
傳統(tǒng)數(shù)據(jù)庫(kù)在面對(duì)高并發(fā)熱點(diǎn)數(shù)據(jù)訪問(wèn)時(shí),往往會(huì)因?yàn)榧ち业逆i競(jìng)爭(zhēng)導(dǎo)致性能急劇下降,甚至系統(tǒng)雪崩。DongSQL的CCL通過(guò)智能排隊(duì)機(jī)制,將無(wú)序的并發(fā)請(qǐng)求轉(zhuǎn)換為有序處理,從根本上解決了這一問(wèn)題。
?? 多維度控制策略:
?基于字段的限流:ccl_queue_field(column_name, concurrency),對(duì)特定字段值進(jìn)行并發(fā)控制
?基于值的限流:ccl_queue_value(value, concurrency),對(duì)特定數(shù)據(jù)值進(jìn)行精準(zhǔn)限流
?基于SQL指紋的限流:ccl_queue_digest(concurrency),對(duì)相同SQL模式進(jìn)行統(tǒng)一管控
--對(duì)商品ID為999的熱門(mén)商品進(jìn)行限流,并發(fā)度限制為5 SELECT/*+ccl_queue_value(999,5)*/*FROMproductsWHEREproduct_id=999; --對(duì)庫(kù)存扣減操作按商品ID進(jìn)行限流 UPDATE/*+ccl_queue_field(product_id,8)*/inventorySETstock=stock-1WHEREproduct_id=?; --對(duì)相同SQL模式進(jìn)行統(tǒng)一限流 SELECT/*+ccl_queue_digest(10)*/*FROMhot_productsWHEREstatus=1;
?? 性能突破數(shù)據(jù):
?秒殺場(chǎng)景優(yōu)化:在4096并發(fā)下,使用CCL限流后TPS從573提升至1337,性能提升133%
?系統(tǒng)穩(wěn)定性:有效防止系統(tǒng)雪崩,將無(wú)序并發(fā)轉(zhuǎn)換為有序處理
?熱點(diǎn)緩解:通過(guò)隊(duì)列機(jī)制顯著降低熱點(diǎn)數(shù)據(jù)的鎖競(jìng)爭(zhēng)

2.2. Statement Outline執(zhí)行計(jì)劃及自定義提示管理
?? 企業(yè)級(jí)計(jì)劃穩(wěn)定性:DongSQL提供了Statement Outline功能,用于固化重要SQL的執(zhí)行計(jì)劃,防止因數(shù)據(jù)變化導(dǎo)致的計(jì)劃不穩(wěn)定問(wèn)題。
?? 自定義Hint注入工具:包括但不限于上述秒殺、CCL限流場(chǎng)景的Hint,即使業(yè)務(wù)研發(fā)預(yù)期外的過(guò)載或者突發(fā)流量發(fā)生,應(yīng)急情況下DBA也可以通過(guò)Statement Outline功能對(duì)問(wèn)題SQL進(jìn)行干預(yù)
--為重要SQL固化執(zhí)行計(jì)劃 CALLdbms_outln.add_index_outline( 'test_db','',1,'USEINDEX','idx_status','', 'SELECT*FROMordersWHEREstatus="PAID"' ); --為特定查詢添加ccl_queue_digest限流hint,限制并發(fā)度為2 CALLdbms_outln.add_optimizer_outline( 'test_db','',1,'/*+ccl_queue_digest(2)*/', 'SELECT*FROMordersWHEREcustomer_id=1001');
?? 核心價(jià)值:
?性能穩(wěn)定性:保障核心SQL性能不因數(shù)據(jù)變化而波動(dòng)
?智能限流:支持基于SQL指紋的手動(dòng)限流和自動(dòng)限流(自動(dòng)限流默認(rèn)不開(kāi)啟,需要開(kāi)啟的業(yè)務(wù)需單獨(dú)申請(qǐng))
?企業(yè)級(jí)管理:提供生產(chǎn)級(jí)的執(zhí)行計(jì)劃管理能力
3、DongSQL在查詢優(yōu)化上的改進(jìn)
3.1. 單點(diǎn)查詢優(yōu)化
?? 查詢路徑優(yōu)化:DongSQL實(shí)現(xiàn)了單點(diǎn)查詢bypass功能,針對(duì)主鍵等值查詢這類(lèi)高頻簡(jiǎn)單查詢,繞過(guò)部分SQL層處理邏輯,直接訪問(wèn)存儲(chǔ)引擎,大幅提升查詢性能。
電商場(chǎng)景中,商品詳情查詢、用戶信息查詢等基于主鍵的簡(jiǎn)單查詢占據(jù)了很大比例。雖然這些查詢邏輯簡(jiǎn)單,但在高并發(fā)下仍然消耗大量CPU資源。DongSQL的單點(diǎn)查詢優(yōu)化針對(duì)這一痛點(diǎn)進(jìn)行了專(zhuān)項(xiàng)優(yōu)化。
?? 性能提升數(shù)據(jù):
?不同環(huán)境性能提升:容器環(huán)境提升20%,物理機(jī)環(huán)境提升30%
?高并發(fā)場(chǎng)景:當(dāng)CPU達(dá)到瓶頸時(shí),QPS提升20-28%
?資源效率:相同硬件配置下處理能力顯著提升

3.2. 線程池優(yōu)化
?? 高并發(fā)處理能力:DongSQL實(shí)現(xiàn)了企業(yè)級(jí)線程池功能,通過(guò)智能線程調(diào)度和資源管理,顯著提升了系統(tǒng)在高并發(fā)場(chǎng)景下的處理能力和穩(wěn)定性。
傳統(tǒng)數(shù)據(jù)庫(kù)在面對(duì)大量并發(fā)連接時(shí),會(huì)為每個(gè)連接創(chuàng)建獨(dú)立線程,這在高并發(fā)下會(huì)導(dǎo)致線程切換開(kāi)銷(xiāo)過(guò)大、內(nèi)存消耗激增等問(wèn)題。DongSQL的線程池優(yōu)化通過(guò)復(fù)用線程資源,有效解決了這些問(wèn)題。
?? 調(diào)度機(jī)制:
?線程復(fù)用:通過(guò)線程池復(fù)用減少線程創(chuàng)建銷(xiāo)毀開(kāi)銷(xiāo)
?負(fù)載均衡:分配任務(wù)到不同線程,避免熱點(diǎn)線程
?優(yōu)先級(jí)調(diào)度:支持任務(wù)優(yōu)先級(jí),保障重要業(yè)務(wù)優(yōu)先處理
?? 性能突破數(shù)據(jù)(基于8C32G測(cè)試環(huán)境,sysbench 16張表每張1000萬(wàn)行數(shù)據(jù)):
只讀場(chǎng)景性能對(duì)比:
?低并發(fā)優(yōu)勢(shì):32線程時(shí),線程池模式QPS達(dá)到141,261,相比傳統(tǒng)模式的110,658提升27.6%
?高并發(fā)穩(wěn)定性:在512線程高并發(fā)下,線程池模式QPS保持131,939,而傳統(tǒng)模式僅61,580,性能提升114%
?延遲控制:512線程時(shí)TP99延遲從傳統(tǒng)模式的297.92ms優(yōu)化到118.92ms,降低60%
純寫(xiě)場(chǎng)景性能突破:
?中等并發(fā):64線程時(shí)QPS從46,577提升到57,655,性能提升23.8%
?高并發(fā)場(chǎng)景:512線程時(shí)QPS從29,541提升到58,166,性能提升97%
?超高并發(fā):4096線程時(shí)QPS從28,571提升到54,687,性能提升91%
讀寫(xiě)混合場(chǎng)景優(yōu)化:
?128線程:QPS從54,870提升到80,244,性能提升46%
?256線程:QPS從48,787提升到77,961,性能提升60%
?延遲優(yōu)化:256線程時(shí)TP99延遲從196.89ms優(yōu)化到158.63ms,降低19%

3.3. 其他查詢執(zhí)行優(yōu)化
?? 執(zhí)行路徑優(yōu)化:DongSQL在查詢執(zhí)行引擎層面進(jìn)行了多項(xiàng)優(yōu)化,包括算子優(yōu)化、內(nèi)存管理優(yōu)化、并行執(zhí)行優(yōu)化等。
?? 緩存機(jī)制增強(qiáng):優(yōu)化了Buffer Pool管理策略,頁(yè)面mutex優(yōu)化,提升了數(shù)據(jù)訪問(wèn)效率,降低了I/O鎖沖突。
4、性能基準(zhǔn)測(cè)試匯總
OLTP標(biāo)準(zhǔn)基準(zhǔn)測(cè)試
基于標(biāo)準(zhǔn)測(cè)試環(huán)境的性能數(shù)據(jù)(16C32G, 16張表,每張表100萬(wàn)行):
| 測(cè)試場(chǎng)景 | 最佳線程數(shù) | TPS | QPS | TP99延遲 | 平均延遲 |
| 只讀查詢 | 64 | 19,484 | 311,745 | 21.50ms | 3.28ms |
| 只寫(xiě)操作 | 256 | 17,004 | 102,025 | 29.72ms | 15.05ms |
| 插入操作 | 256 | 25,614 | 25,614 | 15.83ms | 9.99ms |
| 讀寫(xiě)混合 | 128 | 9,795 | 195,908 | 33.12ms | 13.06ms |
| 點(diǎn)查詢 | 64 | 560,933 | 560,933 | 0.18ms | 0.11ms |
電商場(chǎng)景專(zhuān)項(xiàng)性能匯總
| 優(yōu)化模塊 | 測(cè)試場(chǎng)景 | 性能提升幅度 | 關(guān)鍵指標(biāo) |
| RETURNING子句 | 固定行更新 | 61% | TPS: 925→1,490 |
| CCL并發(fā)控制 | 秒殺場(chǎng)景 | 133% | TPS: 573→1,337 |
| Inventory Hint | 庫(kù)存扣減 | 215% | TPS: 1,537→4,843 |
| 單點(diǎn)查詢優(yōu)化 | 主鍵查詢 | 28% | QPS: 76,432→98,470 |
5、未來(lái)規(guī)劃
1.持續(xù)語(yǔ)法擴(kuò)展:基于業(yè)務(wù)需求繼續(xù)擴(kuò)展SQL語(yǔ)法功能
2.智能優(yōu)化增強(qiáng):引入機(jī)器學(xué)習(xí)優(yōu)化執(zhí)行計(jì)劃選擇
3.內(nèi)核級(jí)技術(shù)支持:具備內(nèi)核研發(fā)能力的團(tuán)隊(duì),持續(xù)從最底層為業(yè)務(wù)研發(fā)提供深度優(yōu)化的數(shù)據(jù)庫(kù)解決方案
4.云原生存算分離:繼續(xù)打造屬于京東自己的高性能低成本數(shù)據(jù)庫(kù)產(chǎn)品
6、結(jié)語(yǔ)
從開(kāi)源內(nèi)核到自研DongSQL,京東零售數(shù)據(jù)庫(kù)團(tuán)隊(duì)始終以"業(yè)務(wù)價(jià)值驅(qū)動(dòng)技術(shù)創(chuàng)新"為核心理念。DongSQL作為專(zhuān)為京東電商場(chǎng)景設(shè)計(jì)的數(shù)據(jù)庫(kù),通過(guò)語(yǔ)法擴(kuò)展、并發(fā)控制、查詢優(yōu)化等多個(gè)模塊的深度創(chuàng)新,為電商業(yè)務(wù)的快速發(fā)展提供了強(qiáng)有力的數(shù)據(jù)庫(kù)技術(shù)支撐。
這些優(yōu)化不僅提升了系統(tǒng)性能,更重要的是為集團(tuán)基礎(chǔ)技術(shù)底座提供了堅(jiān)實(shí)的基礎(chǔ)。未來(lái),京東零售數(shù)據(jù)庫(kù)團(tuán)隊(duì)將持續(xù)深耕數(shù)據(jù)庫(kù)內(nèi)核技術(shù),讓數(shù)據(jù)庫(kù)更好地服務(wù)業(yè)務(wù)發(fā)展。
-
內(nèi)核
+關(guān)注
關(guān)注
4文章
1474瀏覽量
43088 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
4078瀏覽量
68522 -
京東
+關(guān)注
關(guān)注
2文章
1128瀏覽量
50139
發(fā)布評(píng)論請(qǐng)先 登錄
國(guó)產(chǎn)DSP,自研指令集內(nèi)核C2000,F(xiàn)28335、F280049、F28377
電商數(shù)據(jù)分析怎么做,瀏覽者才能自主分析?
STM32固件庫(kù)內(nèi)部結(jié)構(gòu)功能簡(jiǎn)介
每年第1天自動(dòng)刪除前1年數(shù)據(jù)庫(kù)內(nèi)容問(wèn)題
電商數(shù)據(jù)分析攻略,讓你輕松搞定數(shù)據(jù)分析!
螞蟻集團(tuán)自研數(shù)據(jù)庫(kù)產(chǎn)品OceanBase獨(dú)立
支付寶宣布自研數(shù)據(jù)庫(kù)OceanBase正式向全球開(kāi)放 可獲“支付寶同款”數(shù)據(jù)庫(kù)處理能力
螞蟻集團(tuán)自研數(shù)據(jù)庫(kù)OceanBase已宣布正式開(kāi)源
如何快速實(shí)現(xiàn)電商數(shù)據(jù)可視化分析
雙向賦能:AI與數(shù)據(jù)庫(kù)的修行之道
甲骨文推出HeatWave GenAI,集成數(shù)據(jù)庫(kù)內(nèi)大模型
國(guó)聯(lián)易安數(shù)據(jù)庫(kù)內(nèi)容保密檢查系統(tǒng)再獲涉密檢測(cè)證書(shū)
國(guó)聯(lián)易安:數(shù)據(jù)庫(kù)內(nèi)容保密檢查系統(tǒng)“護(hù)航”數(shù)據(jù)安全
京東商品評(píng)論API助力電商數(shù)據(jù)分析
解鎖淘寶京東拼多多API,讓電商數(shù)據(jù)為你所用
京東自研電商數(shù)據(jù)庫(kù)內(nèi)核DongSQL簡(jiǎn)介
評(píng)論