TDSQL·专家篇·利用热点更新技术应对秒杀场景

weixin_44020914 weixin_44020914 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

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 说明

  1. UPDATE 只支持单对象更新,即支持 "single-table-syntax",不支持 "multiple-table-syntax"。
  2. 只支持单机场景,XA 场景之后的迭代版本由 proxy 实现。
  3. INSERT 的三种语法都支持,这里只列举一种。
  4. 标准语法参考官方标准:UPDATE Syntax、INSERT Syntax。
  5. 对QUEUE_ON_PK指定的 expr 的值的对象,实施热点更新功能,通常 expr 的值是一个正整数值。
  6. 参数含义:
    • 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,表示只有一行受到影响。

 

······

更多内容详见:https://cloud.tencent.com/document/product/237/13402

...全文

相关推荐

cloudlite在线认证TDSQL题库

分布式数据库(Tencent Distributed SQL,TDSQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。目前 TDSQL 已经为超过500+的政企和金融机构提供数据库的公有云及私有云服务,客户覆盖银行、保险、证券、互联网金融、计费、第三方支付、物联网、互联网+、政务等领域。TDSQL 亦凭借其高质量的产品及服务,获得了多项国际和国家认证,得到了客户及行业的一致认可。

guanghui2125

TDSQL产品的培训讲义

腾讯云TDSQ产品的培训讲义,详细介绍了TDSQL这款产品介绍,部署已经使用方面的问题,有需要的朋友可以下载学习。

lph1987

分布式MySQL数据库TDSQL架构分析

腾讯计费平台部为了解决基于内存的NoSQL解决方案HOLD平台在应对多种业务接入时的不足,结合团队在MySQL领域多年应用和优化经验,最终在MySQL存储引擎基础上,打造一套分布式SQL系统TDSQL。本文是对该系统架构分析。腾讯计费平台部托管着公司90%以上的虚拟账户,如QB、Q点、包月服务、游戏的二级账户等,为了保证能顺畅支撑公司各大业务的实时在线交易,并且在各种灾难场景下数据是一致并且可用的,对系统的可用性、一致性切换要求非常高,因此计费团队历来都非常重视高一致性存储系统的建设。到目前为止,计费高一致性存储层的解决方案大致经过了3个阶段,本文将分享最新的基于MySQL的分布式解决方案。随

weixin_38685600

腾讯金融级数据库TDSQL分析

SDCC2015-腾讯-潘安群-腾讯金融级数据库TDSQL分析

瞠目结舌2

腾讯云TDSQL训练营考试及答案

腾讯云TDSQL第二期训练营考试_20220427

小雷思密达
评论 1
收藏 已收藏
分享
返回顶部