程序员过关斩将——数据库的乐观锁和悲观锁并非真实的锁( 四 )
锁是数据库中最为重要的机制之一 , 无论平时写的select语句 , 还是update语句其实在数据库层面都和锁息息相关 。 如果没有锁机制 , 操作数据的时候可能会发生以下情况:
1. 更新丢失:多个用户同时对一个数据资源进行更新 , 必定会产生被覆盖的数据 , 造成数据读写异常 。
2. 不可重复读:如果一个用户在一个事务中多次读取一条数据 , 而另外一个用户则同时更新啦这条数据 , 造成第一个用户多次读取数据不一致 。
3. 脏读:第一个事务读取第二个事务正在更新的数据表 , 如果第二个事务还没有更新完成 , 那么第一个事务读取的数据将是一半为更新过的 , 一半还没更新过的数据 , 这样的数据毫无意义 。
4. 幻读:第一个事务读取一个结果集后 , 第二个事务 , 对这个结果集经行增删操作 , 然而第一个事务中再次对这个结果集进行查询时 , 数据发现丢失或新增 。
数据管理角度在数据库管理的角度或者数据行的角度来说 , 数据库锁可以分为共享锁和排它锁 , 这是面试过程中经常被提及的两种类型 。 本质其实很简单 , 站在数据的角度来看 , 如果数据当前正在被访问 , 下一个访问的请求该如何处理?和计算机二进制一样 , 无非就是允许被访问和不允许访问两种状态 。
推荐阅读
- 网游|颠覆你认知的网游土豪,程序员加班为他改游戏,还送专属服务器
- 网易|永劫无间诡异宕机事件:网易机房过热,程序员竟然祭出了干冰?
- 坦克大战|FC游戏埋藏了三十年的秘密,《坦克大战》隐藏着一封程序员的血书
- 梦幻西游|梦幻西游:程序员修复显示BUG用力过猛,现在武器亮的有点晃眼
- 塞尔达传说|Switch下载超200万,程序员才3人,这游戏真能比塞尔达还好玩?
- 神武4|《神武4》手游之宠物爆料:忠义仁勇神兽\牛云长\助你过关斩将
- 程序员|公司新招程序员,入职2天看了下电脑配置,2天后果断辞职
- 程序员|程序员内推10人进公司拿了10万内推费,年底领导:你转行做HR吧,结果愣了
- 程序员|程序员没转发公司内容被扣500,结果辞职半个月之后,领导懵了
- 红米手机|操作太骚!美国程序员把活外包给中国人,不用干活白拿140万工资