mysql基础教程西泽pdf,一文说清!

本文探讨了在高并发环境下使用分布式锁遇到的性能问题,如资源加锁时间过长和资源过大,以及解决方案,如资源拆分和重试策略。还讨论了节点宕机和任务执行时间超过锁的TTL带来的挑战,并提出了相应的解决办法。最后总结了面试中常见的技术问题,如算法、MySQL、Redis和网络知识。
摘要由CSDN通过智能技术生成

分布式锁的坑

高并发场景下的问题

以下问题不是说在并发不高的场景下不容易出现,只是在高并发场景下出现的概率更高些而已。

性能问题来自于以下两方面:

**①获取锁的时间上。**如果 Redlock 运用在高并发的场景下,存在 N 个 Master 节点,一个一个去请求,耗时会比较长,从而影响性能。

这个好解决,通过上面描述不难发现,从多个节点获取锁的操作并不是一个同步操作,可以是异步操作,这样可以多个节点同时获取。

即使是并行处理的,还是得预估好获取锁的时间,保证锁的 TTL>获取锁的时间+任务处理时间。

**②被加锁的资源太大。**加锁的方案本身就是会为了正确性而牺牲并发的,牺牲和资源大小成正比,这个时候可以考虑对资源做拆分。

拆分的方式有如下两种:

**①从业务上将锁住的资源拆分成多段,每段分开加锁。**比如,我要对一个商户做若干个操作,操作前要锁住这个商户,这时我可以将若干个操作拆成多个独立的步骤分开加锁,提高并发。

**②用分桶的思想,将一个资源拆分成多个桶,一个加锁失败立即尝试下一个。**比如批量任务处理的场景,要处理 200w 个商户的任务,为了提高处理速度,用多个线程,每个线程取 100 个商户处理,就得给这 100 个商户加锁。

如果不加处理,很难保证同一时刻两个线程加锁的商户没有重叠,这时可以按一个维度。

比如某个标签,对商户进行分桶,然后一个任务处理一个分桶,处理完这

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 前言 1 2 连接 MYSQL 1 2.1 命令行 1 2.2 Navicate 2 2.3 例 1:连接到本机上的 MYSQL 2 2.4 例 2:连接到远程主机上的 MYSQL 3 2.5 退出 MYSQL 命令: exit (回车) 4 3 修改密码 4 3.1 例 1:给 root 加个密码 ab12 。 4 3.2 例 2:再将 root 的密码改为 djg345 。 4 4 增加新用户 4 4.1 例 1、增加一个用户 test1 密码为 abc 4 4.2 例 2、增加一个用户 test2 密码为 abc 4 5 MySQL常用命令 5 5.1 启动 MySQL 服务器 5 5.2 进入 mysql 交互操作界面 5 5.3 退出 MySQL 操作界面 5 5.4 第一条命令 6 5.5 多行语句 6 5.6 一行多命令 7 5.7 显示当前存在的数据库 7 5.8 选择数据库并显示当前选择的数据库 8 5.9 显示当前数据库中存在的表 8 5.10 显示表 (db) 的内容 8 5.11 命令的取消 8 6 创建数据库和数据表 9 6.1 使用 SHOW 语句找出在服务器上当前存在什么数据库 9 6.2 创建一个数据库 abccs 9 6.3 选择你所创建的数据库 9 6.4 创建一个数据库表 9 6.5 显示表的结构 10 6.6 往表中加入记录 11 6.7 用文本方式将数据装入一个数据库表 11 7 检索数据 12 7.1 从数据库表中检索信息 12 7.2 查询所有数据 12 7.3 修正错误记录 12 7.4 选择特定行 13 7.5 选择特定列 13 7.6 对行进行排序 14 7.7 行计数 15 8 多表操作 15 8.1 查看第一个表 mytable 的内容 16 8.2 创建第二个表 title (包括作者、文章标题、发表日期) 16 8.3 多表查询 17 9 数据库表和数据库的修改和删除 18 9.1 增加一列 18 9.2 修改记录 18 9.3 增加记录 18 9.4 删除记录 19 9.5 删除表 19 9.6 数据库的删除 19 9.7 数据库的备份 20 9.8 用批处理方式使用 MySQL: 20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值