博客 / 詳情

返回

京東自研電商數據庫內核DongSQL簡介

團隊於今年(2025.9)打磨出了深度優化的自研數據庫內核——DongSQL V1.1.0。

[如果對前因後果比較感興趣,可以移步上一篇文章 《寶劍鋒從磨礪出——零售數據庫內核,為大促鑄劍!》 ]

本文將深度解析DongSQL在語法擴展、併發控制、查詢優化等方面的內核改造,以及在電商場景下的優化實踐。

在這裏插入圖片描述

1、DongSQL在語法擴展上的優化

1.1. RETURNING子句功能

▶︎ 語法擴展創新:DongSQL在標準SQL語法基礎上擴展了RETURNING子句,這是重要語法創新。RETURNING子句允許DML語句(INSERT、UPDATE、DELETE、REPLACE)在執行數據修改操作的同時返回受影響的行數據,無需額外查詢。

傳統數據庫在執行DML操作後,如果需要獲取操作結果,必須執行額外的SELECT查詢,這在高併發場景下會產生額外的網絡往返開銷。DongSQL通過RETURNING子句徹底解決了這一問題。

-- INSERT操作返回自增ID 
INSERT INTO orders (customer_id, order_date) VALUES (1001, NOW()) RETURNING order_id; 

-- UPDATE操作返回更新後的數據 
UPDATE products SET price = price * 1.1 WHERE category = 'electronics'  
RETURNING product_id, name, old_price, price; 

-- DELETE操作返回被刪除的記錄 
DELETE FROM expired_sessions WHERE expire_time < NOW()  
RETURNING session_id, user_id, expire_time;

▶︎ 性能提升效果:經測試驗證,RETURNING子句在不同場景下都能帶來顯著的性能提升:

固定行更新場景:16併發時TPS提升61%,響應時間降低44%

隨機行更新場景:128併發時TPS提升18%

大規模更新測試:2000萬次操作中平均TPS提升5-10%

在這裏插入圖片描述

▶︎ 生產落地預期:該功能與DongDAL發號器邏輯高度匹配,有望將發號器性能瓶頸大幅提升(DongDAL團隊配套開發推進中)

1.2. Hint語法擴展

▶︎ 多樣化Hint支持:DongSQL擴展了Hint語法體系,提供了針對電商場景的專用提示功能,包括併發控制、庫存管理等領域特定的優化。

▶︎ Inventory Hint:專門針對電商庫存管理場景設計的提示語法,提供目標影響行數控制、自動提交/回滾等特性。

-- 庫存扣減:確保隻影響一行,成功自動提交,失敗自動回滾
 UPDATE /*+ TARGET_AFFECT_ROW(1) COMMIT_ON_SUCCESS ROLLBACK_ON_FAIL */
  inventory SET stock = stock - 5 
   WHERE product_id = 1001 AND stock >= 5;

▶︎ 性能提升數據:在16併發的庫存扣減場景下,使用Inventory Hint比不使用hint性能提升215%。

在這裏插入圖片描述

2、DongSQL在併發控制上的優化

2.1. CCL併發控制

▶︎ 多維度限流機制:DongSQL實現了CCL(Concurrency Control)併發控制功能,通過多維度的限流策略,有效解決電商秒殺場景下的熱點數據訪問問題。

傳統數據庫在面對高併發熱點數據訪問時,往往會因為激烈的鎖競爭導致性能急劇下降,甚至系統雪崩。DongSQL的CCL通過智能排隊機制,將無序的併發請求轉換為有序處理,從根本上解決了這一問題。

▶︎ 多維度控制策略

基於字段的限流ccl_queue_field(column_name, concurrency),對特定字段值進行併發控制

基於值的限流ccl_queue_value(value, concurrency),對特定數據值進行精準限流

基於SQL指紋的限流ccl_queue_digest(concurrency),對相同SQL模式進行統一管控

-- 對商品ID為999的熱門商品進行限流,併發度限制為5
 SELECT /*+ ccl_queue_value(999, 5) */ * FROM products WHERE product_id = 999; 
 
 -- 對庫存扣減操作按商品ID進行限流 
 UPDATE /*+ ccl_queue_field(product_id, 8) */ inventory SET stock = stock - 1 WHERE product_id = ?; 
 
 -- 對相同SQL模式進行統一限流 
 SELECT /*+ ccl_queue_digest(10) */ * FROM hot_products WHERE status = 1;

▶︎ 性能突破數據

秒殺場景優化:在4096併發下,使用CCL限流後TPS從573提升至1337,性能提升133%

系統穩定性:有效防止系統雪崩,將無序併發轉換為有序處理

熱點緩解:通過隊列機制顯著降低熱點數據的鎖競爭

在這裏插入圖片描述

2.2. Statement Outline執行計劃及自定義提示管理

▶︎ 企業級計劃穩定性:DongSQL提供了Statement Outline功能,用於固化重要SQL的執行計劃,防止因數據變化導致的計劃不穩定問題。

▶︎ 自定義Hint注入工具:包括但不限於上述秒殺、CCL限流場景的Hint,即使業務研發預期外的過載或者突發流量發生,應急情況下DBA也可以通過Statement Outline功能對問題SQL進行干預

-- 為重要SQL固化執行計劃 
CALL dbms_outln.add_index_outline(  
'test_db', '', 1, 'USE INDEX', 'idx_status', '',  
 'SELECT * FROM orders WHERE status = "PAID"' 
 ); 
 -- 為特定查詢添加ccl_queue_digest限流hint,限制併發度為2 
CALL dbms_outln.add_optimizer_outline(  
'test_db', '', 1, '/*+ ccl_queue_digest(2) */',  
'SELECT * FROM orders WHERE customer_id = 1001' );

▶︎ 核心價值

性能穩定性:保障核心SQL性能不因數據變化而波動

智能限流:支持基於SQL指紋的手動限流和自動限流(自動限流默認不開啓,需要開啓的業務需單獨申請)

企業級管理:提供生產級的執行計劃管理能力

3、DongSQL在查詢優化上的改進

3.1. 單點查詢優化

▶︎ 查詢路徑優化:DongSQL實現了單點查詢bypass功能,針對主鍵等值查詢這類高頻簡單查詢,繞過部分SQL層處理邏輯,直接訪問存儲引擎,大幅提升查詢性能。

電商場景中,商品詳情查詢、用户信息查詢等基於主鍵的簡單查詢佔據了很大比例。雖然這些查詢邏輯簡單,但在高併發下仍然消耗大量CPU資源。DongSQL的單點查詢優化針對這一痛點進行了專項優化。

▶︎ 性能提升數據

不同環境性能提升:容器環境提升20%,物理機環境提升30%

高併發場景:當CPU達到瓶頸時,QPS提升20-28%

資源效率:相同硬件配置下處理能力顯著提升

在這裏插入圖片描述

3.2. 線程池優化

▶︎ 高併發處理能力:DongSQL實現了企業級線程池功能,通過智能線程調度和資源管理,顯著提升了系統在高併發場景下的處理能力和穩定性。

傳統數據庫在面對大量併發連接時,會為每個連接創建獨立線程,這在高併發下會導致線程切換開銷過大、內存消耗激增等問題。DongSQL的線程池優化通過複用線程資源,有效解決了這些問題。

▶︎ 調度機制

線程複用: 通過線程池複用減少線程創建銷燬開銷

負載均衡: 分配任務到不同線程,避免熱點線程

優先級調度: 支持任務優先級,保障重要業務優先處理

▶︎ 性能突破數據(基於8C32G測試環境,sysbench 16張表每張1000萬行數據):

只讀場景性能對比

低併發優勢:32線程時,線程池模式QPS達到141,261,相比傳統模式的110,658提升27.6%

高併發穩定性:在512線程高併發下,線程池模式QPS保持131,939,而傳統模式僅61,580,性能提升114%

延遲控制:512線程時TP99延遲從傳統模式的297.92ms優化到118.92ms,降低60%

純寫場景性能突破

中等併發:64線程時QPS從46,577提升到57,655,性能提升23.8%

高併發場景:512線程時QPS從29,541提升到58,166,性能提升97%

超高併發:4096線程時QPS從28,571提升到54,687,性能提升91%

讀寫混合場景優化

128線程:QPS從54,870提升到80,244,性能提升46%

256線程:QPS從48,787提升到77,961,性能提升60%

延遲優化:256線程時TP99延遲從196.89ms優化到158.63ms,降低19%

在這裏插入圖片描述

3.3. 其他查詢執行優化

▶︎ 執行路徑優化:DongSQL在查詢執行引擎層面進行了多項優化,包括算子優化、內存管理優化、並行執行優化等。

▶︎ 緩存機制增強:優化了Buffer Pool管理策略,頁面mutex優化,提升了數據訪問效率,降低了I/O鎖衝突。

4、性能基準測試彙總

OLTP標準基準測試

基於標準測試環境的性能數據(16C32G, 16張表,每張表100萬行):

測試場景 最佳線程數 TPS QPS TP99延遲 平均延遲
只讀查詢 64 19,484 311,745 21.50ms 3.28ms
只寫操作 256 17,004 102,025 29.72ms 15.05ms
插入操作 256 25,614 25,614 15.83ms 9.99ms
讀寫混合 128 9,795 195,908 33.12ms 13.06ms
點查詢 64 560,933 560,933 0.18ms 0.11ms

電商場景專項性能彙總

優化模塊 測試場景 性能提升幅度 關鍵指標
RETURNING子句 固定行更新 61% TPS: 925→1,490
CCL併發控制 秒殺場景 133% TPS: 573→1,337
Inventory Hint 庫存扣減 215% TPS: 1,537→4,843
單點查詢優化 主鍵查詢 28% QPS: 76,432→98,470

5、未來規劃

1.持續語法擴展:基於業務需求繼續擴展SQL語法功能

2.智能優化增強:引入機器學習優化執行計劃選擇

3.內核級技術支持:具備內核研發能力的團隊,持續從最底層為業務研發提供深度優化的數據庫解決方案

4.雲原生存算分離:繼續打造屬於京東自己的高性能低成本數據庫產品

6、結語

從開源內核到自研DongSQL,京東零售數據庫團隊始終以"業務價值驅動技術創新"為核心理念。DongSQL作為專為京東電商場景設計的數據庫,通過語法擴展、併發控制、查詢優化等多個模塊的深度創新,為電商業務的快速發展提供了強有力的數據庫技術支撐。

這些優化不僅提升了系統性能,更重要的是為集團基礎技術底座提供了堅實的基礎。未來,京東零售數據庫團隊將持續深耕數據庫內核技術,讓數據庫更好地服務業務發展。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.