锁和事务
陈安志
这个作者很懒,什么都没留下…
展开
-
数据库锁(一)
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。转载 2016-01-12 10:49:28 · 289 阅读 · 0 评论 -
数据库锁(二)
数据库大并发操作要考虑死锁和锁的性能问题 这里用T1代表一个数据库执行请求,T2代表另一个请求,也可以理解为T1为一个线程,T2 为另一个线程。T3,T4以此类推。下面以SQL Server(2005)为例2 锁的种类共享锁(Shared lock)。例1:T1: select * from table (请想象它需要执行1个小时之久,后面的sql语句请都这么想转载 2016-01-12 10:50:35 · 288 阅读 · 0 评论 -
事务的ACID 属性
事务的四大属性ACID即事务的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。一致性(Consistency) 事务必须使数据库从一个一致性状态变换到另外一个一致性状态。隔离性(Iso转载 2016-01-12 10:51:31 · 567 阅读 · 0 评论 -
Java中事务的处理
2013.8.29号在家时阿里巴巴的电话面试里面问了一个关于java 事务的问题,当时只知道跟数据库有关,然后依稀记得commit,rollback什么的 ,具体就不知道了,这篇文章关于java事务讲的很详细,因此转载java的事务处理,如果对数据库进行多次操作,每一次的执行或步骤都是一个事务.如果数据库操作在某一步没有执行或出现异常而导致事务失败,这样有的事务被执行有的就没有被执行,从而转载 2016-01-12 10:52:47 · 597 阅读 · 0 评论 -
分布式数据重复提交
分布式环境中(非分布式也一样)在对某个进行数据添加的时候比如:点赞,用户点赞的时候将点赞信息存入到点赞表中,然后就是校验点赞查询是否存在一条记录,考虑到一些外界原因(dubbo 重新发起请求,当然正式环境下是关闭重新请求的,插入成功后没有给客户端返回成功信息等等。。。)导致重复提交点赞信息,这个时候数据库中就会有多条记录,当然就有问题了,查询的时候在sql中增加limit 1保证系统不会有问题转载 2016-01-12 10:53:54 · 713 阅读 · 0 评论 -
分布式环境下保证幂等性
分布式环境中(非分布式也一样)在对某个进行数据添加的时候比如:点赞,用户点赞的时候将点赞信息存入到点赞表中,然后就是校验点赞查询是否存在一条记录,考虑到一些外界原因(dubbo 重新发起请求,当然正式环境下是关闭重新请求的,插入成功后没有给客户端返回成功信息等等。。。)导致重复提交点赞信息,这个时候数据库中就会有多条记录,当然就有问题了,查询的时候在sql中增加limit 1保证系统不会有问题转载 2016-01-12 10:54:49 · 1904 阅读 · 0 评论 -
阿里中间件——消息中间件Notify和MetaQ
3.1、Notify Notify是淘宝自主研发的一套消息服务引擎,是支撑双11最为核心的系统之一,在淘宝和支付宝的核心交易场景中都有大量使用。消息系统的核心作用就是三点:解耦,异步和并行。下面让我以一个实际的例子来说明一下解耦异步和并行分别所代表的具体意义吧:假设我们有这么一个应用场景,为了完成一个用户注册淘宝的操作,可能需要将用户信息写入到用户库中,然后通知给红包中心给用户发新手红转载 2016-01-12 10:55:47 · 400 阅读 · 0 评论