引言
京东零售数据库团队持续多年深耕数据库技术领域,团队于今年(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子句彻底解决了这一问题。
sql
-- 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:专门针对电商库存管理场景设计的提示语法,提供目标影响行数控制、自动提交/回滚等特性。
ini
-- 库存扣减:确保只影响一行,成功自动提交,失败自动回滚
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模式进行统一管控
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
-- 为重要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作为专为京东电商场景设计的数据库,通过语法扩展、并发控制、查询优化等多个模块的深度创新,为电商业务的快速发展提供了强有力的数据库技术支撑。
这些优化不仅提升了系统性能,更重要的是为集团基础技术底座提供了坚实的基础。未来,京东零售数据库团队将持续深耕数据库内核技术,让数据库更好地服务业务发展。