• CSDN技术学习推荐频道
...

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

weixin_44020914 2022-03-17 11:12:01

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 语法

 

  1. UPDATE [LOW_PRIORITY]
  2. [COMMIT_ON_SUCCESS] [ROLLBACK_ON_FAIL] [QUEUE_ON_PK expr1] [TARGET_AFFECT_ROW expr2]
  3. [IGNORE] table_reference
  4. SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
  5. [WHERE where_condition]
  6. [ORDER BY ...]
  7. [LIMIT row_count]

 

2.2 INSERT 语法

 

  1. INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY]
  2. [COMMIT_ON_SUCCESS] [ROLLBACK_ON_FAIL] [QUEUE_ON_PK expr]
  3. [IGNORE]
  4. [INTO] tbl_name
  5. [PARTITION (partition_name,...)]
  6. [(col_name,...)]
  7. {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
  8. [ ON DUPLICATE KEY UPDATE
  9. col_name=expr
  10. [, col_name=expr] ... ]

 

2.3 说明

  1. UPDATE 只支持单对象更新,即支持 "single-table-syntax",不支持 "multiple-table-syntax"。
  2. 只支持单机场景,XA 场景之后的迭代版本由 proxy 实现。
  3. INSERT 的三种语法都支持,这里只列举一种。
  4. 标准语法参考官方标准:UPDATE SyntaxINSERT 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

...全文
给本帖投票
253 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-大数据 发布问题, 以便更快地解决您的疑问

87

社区成员

发帖
与我相关
我的任务
社区描述
TDSQL开发者
其他 企业社区
社区管理员
  • csdnsqst0015
  • kikokingzz
  • karina17
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

社区初立,为了鼓励小友们在社区中积极互动,现在有一个活动如下:

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部