关于程序中锁的认知是什么

一、锁的分类 1.运行程序层面的锁 2.数据库层面的锁 二、各种锁的含义 1.数据库层面的锁是默认的,无法修改的 ,数据库层面的锁叫做悲观锁(总是认为别人会去修改他)数据库层面的锁共有三种:共享锁、排他锁、更新锁 (1)共享锁:只读数据时(例:select),此时数据库会默认给该数据加上共享锁,此时别的程序无法修改该条数据了,别的程序可以加入该共享锁来读取该加共享锁的数据 (2)排他锁

一、锁的分类
1.运行程序层面的锁
2.数据库层面的锁
二、各种锁的含义
1.数据库层面的锁是默认的,无法修改的,数据库层面的锁叫做悲观锁(总是认为别人会去修改他)数据库层面的锁共有三种:共享锁、排他锁、更新锁
(1)共享锁:只读数据时(例:select),此时数据库会默认给该数据加上共享锁,此时别的程序无法修改该条数据了,别的程序可以加入该共享锁来读取该加共享锁的数据
(2)排他锁:假如你要修改某条数据时(例:update、delete),此时数据库会默认该条数据加上排他锁,该种情况下,别的程序不能读和修改该条数据,只有给该数据加排它锁的程序修改完成把锁去掉后,别的程序才可以操作该条数据
(3)更新锁:该锁是介于共享锁和排它锁之间的锁,避免俩人同时申请排他锁,产生死锁的现象
2.程序层面的锁:程序层面的锁是乐观锁(认为自己在修改该条数据时,别的程序不会去修改他)
(1)关于程序层面的乐观锁,一般有俩种方法解决该问题:一是在数据库中加上version字段,当要修改某条数据时会先把该条数据的version版本号记下来,然后程序去执行相关读写操作,操作成功后准备提交时,再去读取version字段的值是否之前的一直,如果一直执行提交,并在该本版号version字段的值上加1;二是在该条数据上加上lock(该字段的值默认为false)字段,有程序开始修改该条数据时&#x

知秋君
上一篇 2024-08-11 20:36
下一篇 2024-08-11 20:02

相关推荐