京东自研电商数据库内核DongSQL简介

京东自研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万行):

测试场景最佳线程数TPSQPSTP99延迟平均延迟
只读查询6419,484311,74521.50ms3.28ms
只写操作25617,004102,02529.72ms15.05ms
插入操作25625,61425,61415.83ms9.99ms
读写混合1289,795195,90833.12ms13.06ms
点查询64560,933560,9330.18ms0.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作为专为京东电商场景设计的数据库,通过语法扩展、并发控制、查询优化等多个模块的深度创新,为电商业务的快速发展提供了强有力的数据库技术支撑。

这些优化不仅提升了系统性能,更重要的是为集团基础技术底座提供了坚实的基础。未来,京东零售数据库团队将持续深耕数据库内核技术,让数据库更好地服务业务发展。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值