京东自研电商数据库内核DongSQL简介
1.1 RETURNING子句功能
-- INSERT操作返回自增IDINSERT 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;
固定行更新场景:16并发时TPS提升61%,响应时间降低44% 随机行更新场景:128并发时TPS提升18% 大规模更新测试:2000万次操作中平均TPS提升5-10%
1.2 Hint语法扩展
-- 库存扣减:确保只影响一行,成功自动提交,失败自动回滚UPDATE /*+ TARGET_AFFECT_ROW(1) COMMIT_ON_SUCCESS ROLLBACK_ON_FAIL */inventory SET stock = stock - 5WHERE product_id = 1001 AND stock >= 5;
2.1. CCL并发控制
基于字段的限流:ccl_queue_field(column_name, concurrency),对特定字段值进行并发控制 基于值的限流:ccl_queue_value(value, concurrency),对特定数据值进行精准限流 基于SQL指纹的限流:ccl_queue_digest(concurrency),对相同SQL模式进行统一管控
-- 对商品ID为999的热门商品进行限流,并发度限制为5SELECT /*+ 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执行计划及自定义提示管理
-- 为重要SQL固化执行计划CALL dbms_outln.add_index_outline('test_db', '', 1, 'USE INDEX', 'idx_status', '','SELECT * FROM orders WHERE status = "PAID"');-- 为特定查询添加ccl_queue_digest限流hint,限制并发度为2CALL dbms_outln.add_optimizer_outline('test_db', '', 1, '/*+ ccl_queue_digest(2) */','SELECT * FROM orders WHERE customer_id = 1001');
性能稳定性:保障核心SQL性能不因数据变化而波动 智能限流:支持基于SQL指纹的手动限流和自动限流(自动限流默认不开启,需要开启的业务需单独申请) 企业级管理:提供生产级的执行计划管理能力
3.1 单点查询优化
不同环境性能提升:容器环境提升20%,物理机环境提升30% 高并发场景:当CPU达到瓶颈时,QPS提升20-28% 资源效率:相同硬件配置下处理能力显著提升
3.2 线程池优化
线程复用:通过线程池复用减少线程创建销毁开销 负载均衡:分配任务到不同线程,避免热点线程 优先级调度:支持任务优先级,保障重要业务优先处理
低并发优势: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 其他查询执行优化
测试场景 | 最佳线程数 | 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 |
推荐阅读