写点什么

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

  • 2025-12-03
    北京
  • 本文字数:3357 字

    阅读完需:约 11 分钟

团队于今年(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 万行):


电商场景专项性能汇总

5、未来规划

1.持续语法扩展:基于业务需求继续扩展 SQL 语法功能


2.智能优化增强:引入机器学习优化执行计划选择


3.内核级技术支持:具备内核研发能力的团队,持续从最底层为业务研发提供深度优化的数据库解决方案


4.云原生存算分离:继续打造属于京东自己的高性能低成本数据库产品

6、结语

从开源内核到自研 DongSQL,京东零售数据库团队始终以"业务价值驱动技术创新"为核心理念。DongSQL 作为专为京东电商场景设计的数据库,通过语法扩展、并发控制、查询优化等多个模块的深度创新,为电商业务的快速发展提供了强有力的数据库技术支撑。


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

发布于: 刚刚阅读数: 3
用户头像

拥抱技术,与开发者携手创造未来! 2018-11-20 加入

我们将持续为人工智能、大数据、云计算、物联网等相关领域的开发者,提供技术干货、行业技术内容、技术落地实践等文章内容。京东云开发者社区官方网站【https://developer.jdcloud.com/】,欢迎大家来玩

评论

发布
暂无评论
京东自研电商数据库内核DongSQL简介_京东科技开发者_InfoQ写作社区