2019年1月15日

MySQL事务隔离级别详解

摘要: 前两天面试,问到了四种隔离级别,当时觉得大多数数据库都为read committed,结果没想到mysql是个例外。在此做一下隔离级别和各种数据库锁的使用。 首先说一下ACID四大特性: 四大特性 · 原子性 事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联 阅读全文

posted @ 2019-01-15 21:41 ExplorerMan 阅读(173) 评论(0) 推荐(0)

mysql的事务隔离级别

摘要: 事务的四大特性(ACID):1.原子性(atomicity):一个事务必须视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。2.一致性(consistency):数据库总数从一个一致性的状态转换 阅读全文

posted @ 2019-01-15 21:24 ExplorerMan 阅读(113) 评论(0) 推荐(0)

分布式锁的几种实现方式

摘要: 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两 阅读全文

posted @ 2019-01-15 18:39 ExplorerMan 阅读(151) 评论(0) 推荐(0)

mysql事务,select for update,及数据的一致性处理

摘要: 在MySQL的InnoDB中,预设的Tansaction isolation level 为REPEATABLE READ(可重读) 在SELECT 的读取锁定主要分为两种方式: SELECT ... LOCK IN SHARE MODE SELECT ... FOR UPDATE 这两种方式在事务 阅读全文

posted @ 2019-01-15 18:00 ExplorerMan 阅读(205) 评论(0) 推荐(0)

MySQL的SELECT ...for update

摘要: 最近的项目中,因为涉及到Mysql数据中乐观锁和悲观锁的使用,所以结合项目和网上的知识点对乐观锁和悲观锁的知识进行总结。 悲观锁介绍 悲观锁是对数据被的修改持悲观态度(认为数据在被修改的时候一定会存在并发问题),因此在整个数据处理过程中将数据锁定。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据 阅读全文

posted @ 2019-01-15 17:27 ExplorerMan 阅读(472) 评论(0) 推荐(0)

秒杀场景,异步扣减库存解决超卖的问题

摘要: 1、限流2、将库存放到redis中、接收用户请求的时候。从redis取库存,判断库存量是否大于本次订单购买量库存大于本次购买量:扣减redis中的库存、并且将订单信息推送到MQ;库存小于本次购买量:直接返回、数量不足。3、MQ消费者获取消息:1):更新数据库库存(乐观锁)2):生成订单信息,扣除用户 阅读全文

posted @ 2019-01-15 16:53 ExplorerMan 阅读(1276) 评论(0) 推荐(0)

秒杀核心设计(减库存部分)-防超卖与高并发

摘要: 商品详情页面的静态化,varnish加速,秒杀商品库独立部署服务器这种就略过不讲了。只讨论库存部分的优化 mysql配置层面的优化可以参考我的这篇文章 《关于mysql innodb引擎性能优化的一点心得》 重点设计在数据库层面。 2张表: 第一张:判重表(buy_record),该用户有没秒杀过该 阅读全文

posted @ 2019-01-15 16:51 ExplorerMan 阅读(2195) 评论(0) 推荐(0)

简单的聊聊,分布式里商品的超卖和电商秒杀

摘要: 商品减库存的线程安全问题(商品的超卖问题)。 提到线程安全我们就想到了同步问题,但是由于这里是分布式的微服务,可能还要搭集群,以前的一台服务器下的代码可以加同步锁现在服务器都不一样,那么这种方案肯定行不通。 其实也可以考虑分布式锁去解决这个问题,但是由于是电商项目 执行效率的问题肯定是首先要考虑的。 阅读全文

posted @ 2019-01-15 16:47 ExplorerMan 阅读(282) 评论(0) 推荐(0)

导航