TDSQL·专家篇·利用热点更新技术应对秒杀场景
1 引言
1.1 背景
在“秒杀”和“限时抢购”等这样的场景下,大量用户在极短时间内请求大量商品。而体现在 MySQL 数据库中,同一商品在数据库里肯定是一行存储,所以会有大量的线程来竞争 InnoDB 行锁,当并发度越高时等待的线程也会越多,TPS 会下降 RT 会上升,数据库的吞吐量会严重受到影响。本文档描述 MariaDB 解决“秒杀”和“限时抢购”所做的特殊优化——热点更新技术。
1.2 使用简介
热点更新:采用如下示例语句对某个数据对象频繁进行更新。
目前仅支持 Percona 5.7.17 版本,可在 MariaDB 购买页 购买。
UPDATE COMMIT_ON_SUCCESS ROLLBACK_ON_FAIL QUEUE_ON_PK 88 TARGET_AFFECT_ROW 1 table_name SET k=k+1 WHERE id=88
2 UPDATE 和 INSERT 语法变化
UPDATE 和 INSERT 的 SQL 语句可以增加新关键字,以表达热点更新的功能,红色为新增内容。
2.1 UPDATE 语法
UPDATE [LOW_PRIORITY]
[COMMIT_ON_SUCCESS] [ROLLBACK_ON_FAIL] [QUEUE_ON_PK expr1] [TARGET_AFFECT_ROW expr2]
[IGNORE] table_reference
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
2.2 INSERT 语法
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY]
[COMMIT_ON_SUCCESS] [ROLLBACK_ON_FAIL] [QUEUE_ON_PK expr]
[IGNORE]
[INTO] tbl_name
[PARTITION (partition_name,...)]
[(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
2.3 说明
- UPDATE 只支持单对象更新,即支持 "single-table-syntax",不支持 "multiple-table-syntax"。
- 只支持单机场景,XA 场景之后的迭代版本由 proxy 实现。
- INSERT 的三种语法都支持,这里只列举一种。
- 标准语法参考官方标准:UPDATE Syntax、INSERT Syntax。
- 对
QUEUE_ON_PK指定的 expr 的值的对象,实施热点更新功能,通常 expr 的值是一个正整数值。 - 参数含义:
COMMIT_ON_SUCCESS:更新操作成功后,立即提交。适合单语句作为一个事务。ROLLBACK_ON_FAIL:更新操作失败后吗,立即回滚。适合单语句作为一个事务。QUEUE_ON_PK expr:指定热点更新对象,对被更新的对象封锁和解锁。被更新的对象总数不超过hot_commodity_query_size,即,具有不同值的 expr 的个数不超过hot_commodity_query_size。expr 取值自由,但建议与主键保持一致,也可以不一致。TARGET_AFFECT_ROW expr:指定热点更新影响的数据行。expr 是一个正整数([1, MAX], MAX 是 8 位正数的最大值)。通常 expr 为 1,表示只有一行受到影响。
······
相关推荐
cloudlite在线认证TDSQL题库
分布式数据库(Tencent Distributed SQL,TDSQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。目前 TDSQL 已经为超过500+的政企和金融机构提供数据库的公有云及私有云服务,客户覆盖银行、保险、证券、互联网金融、计费、第三方支付、物联网、互联网+、政务等领域。TDSQL 亦凭借其高质量的产品及服务,获得了多项国际和国家认证,得到了客户及行业的一致认可。
TDSQL产品的培训讲义
腾讯云TDSQ产品的培训讲义,详细介绍了TDSQL这款产品介绍,部署已经使用方面的问题,有需要的朋友可以下载学习。
分布式MySQL数据库TDSQL架构分析
腾讯计费平台部为了解决基于内存的NoSQL解决方案HOLD平台在应对多种业务接入时的不足,结合团队在MySQL领域多年应用和优化经验,最终在MySQL存储引擎基础上,打造一套分布式SQL系统TDSQL。本文是对该系统架构分析。腾讯计费平台部托管着公司90%以上的虚拟账户,如QB、Q点、包月服务、游戏的二级账户等,为了保证能顺畅支撑公司各大业务的实时在线交易,并且在各种灾难场景下数据是一致并且可用的,对系统的可用性、一致性切换要求非常高,因此计费团队历来都非常重视高一致性存储系统的建设。到目前为止,计费高一致性存储层的解决方案大致经过了3个阶段,本文将分享最新的基于MySQL的分布式解决方案。随
腾讯金融级数据库TDSQL分析
SDCC2015-腾讯-潘安群-腾讯金融级数据库TDSQL分析
腾讯云TDSQL训练营考试及答案
腾讯云TDSQL第二期训练营考试_20220427


