问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQL多用户访问数据库如何解决的冲突?

发布网友 发布时间:2022-04-08 02:45

我来回答

3个回答

热心网友 时间:2022-04-08 04:14

sql多用户访问数据库其实就是事务并发,会引起如下问题:
1、脏读:一个事务读取到了另外一个事务没有提交的数据
事务1:更新一条数据
事务2:读取事务1更新的记录
事务1:调用commit进行提交
此时事务2读取到的数据是保存在数据库内存中的数据,称为脏读。
读到的数据为脏数据
详细解释:
脏读就是指:当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,
另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个
事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。
2、不可重复读:在同一事务中,两次读取同一数据,得到内容不同
事务1:查询一条记录
事务2:更新事务1查询的记录
事务2:调用commit进行提交
事务1:再次查询上次的记录
此时事务1对同一数据查询了两次,可得到的内容不同,称为不可重复读。
3、幻读:同一事务中,用同样的操作读取两次,得到的记录数不相同
事务1:查询表中所有记录
事务2:插入一条记录
事务2:调用commit进行提交
事务1:再次查询表中所有记录
此时事务1两次查询到的记录是不一样的,称为幻读
详细解释:
幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,
这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表
中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,
就好象发生了幻觉一样。
处理以上隔离级别的问题,采用如下方是:
事务隔离五种级别:
TRANSACTION_NONE 不使用事务。
TRANSACTION_READ_UNCOMMITTED 允许脏读。
TRANSACTION_READ_COMMITTED 防止脏读,最常用的隔离级别,并且是大多数数据库的默认隔离级别
TRANSACTION_REPEATABLE_READ 可以防止脏读和不可重复读,
TRANSACTION_SERIALIZABLE 可以防止脏读,不可重复读取和幻读,(事务串行化)会降低数据库的效率
以上的五个事务隔离级别都是在Connection接口中定义的静态常量,
使用setTransactionIsolation(int level) 方法可以设置事务隔离级别。
如:con.setTransactionIsolation(Connection.REPEATABLE_READ);
注意:事务的隔离级别受到数据库的*,不同的数据库支持的的隔离级别不一定相同
1 脏读:修改时加排他锁,直到事务提交后才释放,读取时加共享锁,读取完释放事务1读取数据时加上共享锁后(这 样在事务1读取数据的过程中,其他事务就不会修改该数据),不允许任何事物操作该数据,只能读取,之后1如果有更新操作,那么会转换为排他锁,其他事务更 无权参与进来读写,这样就防止了脏读问题。
但是当事务1读取数据过程中,有可能其他事务也读取了该数据,读取完毕后共享锁释放,此时事务1修改数据,修改 完毕提交事务,其他事务再次读取数据时候发现数据不一致,就会出现不可重复读问题,所以这样不能够避免不可重复读问题。
2 不可重复读:读取数据时加共享锁,写数据时加排他锁,都是事务提交才释放锁。读取时候不允许其他事物修改该数据,不管数据在事务过程中读取多少次,数据都是一致的,避免了不可重复读问题
3 幻读问题:采用的是范围锁RangeS RangeS_S模式,锁定检索范围为只读,这样就避免了幻影读问题。

热心网友 时间:2022-04-08 05:32

最常见的是多个用户同时操纵一个表的时候冲突,一个想改数据,一个想读删数据,当然会有冲突,这是有锁的机制来约束并发访问数据,就是当一个用户对一个表的某个字段进行操作时锁定数据,直到操作完成锁才接触,然后下一个用户来操作数据。追问这锁是SQL Server自动提供的还是需要我手工设置的?

追答是自己手动设置的,当然,代码也可以实现。可以在表中建立锁,锁又分为独占锁(就是在某个时期只允许某个用户操作某个特定表对象)、共享锁(大家都可以使用)、更新锁(解决死锁的问题)。锁的机制挺麻烦的,一言半语也说不清,你可以自己查下资料。

热心网友 时间:2022-04-08 07:07

不用太多考虑,数据库系统替你考虑大部分情况。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我梦见一条蛇,谁能解梦? ...战地3港版,多人联网要求ea账号,于是用电脑注册了一个,用ps3登入提... 谁给推荐几个不花钱的好玩的游戏啊!无聊中... 天气潮汐预报app哪个好用 涨潮有什么软件 墨迹天气怎么看潮汐时间 墨迹天气潮汐预报设置教程 哪种天气预报能看潮汐 小米手机开发者模式在哪里关闭?小米手机开发者模式 上海行迈企业管理咨询有限公司讲师介绍 赵继红培训课程 出现:Error Nr.2003 Can't connect to mysql server on ‘localhost... sql error (2003):can't connect to mysql server on 'ip' (10060... 我的MYSQL提是错误是10060,好象是MYsql没连接到本机,现在MYSQL登路不进... Mysql安装后输入密码报错 navicat for mySQL中链接不上,报错10060是咋回事啊?防火墙也是关闭了的... 最近貌似出来了好多CF疯狗在叫唤CSOL垃圾 抄袭一类的问题 CSer进来为我解答下 CF游戏 7000CF点怎么花?划算?请体验过的人说! 傍晚玩CF玩了次挑战模式送了个闪光眼镜,去到角色那里发现还有防烟雾头和一个灵狐者,这是什么回事? 几个防烟分区合用一个竖向排烟井、排烟管道面积计算? 商场防火、防烟分区如何划分? 小学生五年级自我介绍 消防指挥管理岗位体检能带眼镜吗 CF垃圾,CSOL的顶, 支持CSOL。 角磨机震动是因为什么原因? 3D眼镜中,红蓝和红绿有什么区别? 为什么我玩cf时被闪光闪了后就会卡住几秒中!要等画面恢复后才能动! 自我介绍五年级 CF防烟怎么调 小学五年级自我介绍两分钟 最近这几天干电焊天天打眼,戴上眼镜电焊帽都不管用,请问是怎么回事,谢谢啦 华硕笔记本f9 f10键(如图)有什么功能? 我用Navicat连接mysql 出现10060错误是怎么回事 竹荪的做法 竹笋有哪些营养价值 笔记本电脑的触摸板怎样实现像鼠标右键一样的功能 请问一下:我有一幅图片,想搜索图片上的人物是谁,可以搜索到吗? 想知道图片上的人是谁 找不到照片上的人 找图片上的人是谁 可以通过图片在网上搜索图片上的人是谁么? 我要寻找得到这张照片上的人,为啥就发生犯了非常的很难找不到的情况啊? 当涉及预计负债,该怎么核算? 亏损合同产生的预计负债的会计分录怎么做? 亏损合同的预计负债应怎么做会计处理 预计负债实际发生支出时怎样结转 莲藕怎么蒸不会发黑 确认了预计负债 发票开来了怎么办?如何做账 预计负债财务费用怎么计算 莲藕怎么煮不会黑 预计负债包含预提费用吗?预提费用时怎么下账? 关于预计负债调整企业所得税应纳税所得额的问题