團隊於今年(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作為專為京東電商場景設計的數據庫,通過語法擴展、併發控制、查詢優化等多個模塊的深度創新,為電商業務的快速發展提供了強有力的數據庫技術支撐。
這些優化不僅提升了系統性能,更重要的是為集團基礎技術底座提供了堅實的基礎。未來,京東零售數據庫團隊將持續深耕數據庫內核技術,讓數據庫更好地服務業務發展。