您好、欢迎来到现金彩票网!
当前位置:秒速快3 > 数据相关冲突 >

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

发布时间:2019-07-21 16:13 来源:未知 编辑:admin

  程序供多个用户使用,当用户同时连接数据库的时候冲突还是同时读一个表的时候冲突还是同时写一个表的时候才冲突?冲突的时候当以什么方式预防或解决?...

  程序供多个用户使用,当用户同时连接数据库的时候冲突还是同时读一个表的时候冲突还是同时写一个表的时候才冲突?冲突的时候当以什么方式预防或解决?

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  千锋教育专注HTML5前端、Java开发、Python全栈、UI设计、物联网嵌入式、区块链、大数据、人工智能、软件测试、PHP、云计算、信息安全、Unity游戏开发、红帽RHCE认证培训服务

  脏读就是指:当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,

  另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个

  幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,

  这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表

  中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,

  TRANSACTION_READ_COMMITTED 防止脏读,最常用的隔离级别,并且是大多数数据库的默认隔离级别

  TRANSACTION_SERIALIZABLE 可以防止脏读,不可重复读取和幻读,(事务串行化)会降低数据库的效率

  注意:事务的隔离级别受到数据库的限制,不同的数据库支持的的隔离级别不一定相同

  1 脏读:修改时加排他锁,直到事务提交后才释放,读取时加共享锁,读取完释放事务1读取数据时加上共享锁后(这 样在事务1读取数据的过程中,其他事务就不会修改该数据),不允许任何事物操作该数据,只能读取,之后1如果有更新操作,那么会转换为排他锁,其他事务更 无权参与进来读写,这样就防止了脏读问题。

  但是当事务1读取数据过程中,有可能其他事务也读取了该数据,读取完毕后共享锁释放,此时事务1修改数据,修改 完毕提交事务,其他事务再次读取数据时候发现数据不一致,就会出现不可重复读问题,所以这样不能够避免不可重复读问题。

  2 不可重复读:读取数据时加共享锁,写数据时加排他锁,都是事务提交才释放锁。读取时候不允许其他事物修改该数据,不管数据在事务过程中读取多少次,数据都是一致的,避免了不可重复读问题

  3 幻读问题:采用的是范围锁RangeS RangeS_S模式,锁定检索范围为只读,这样就避免了幻影读问题。

  最常见的是多个用户同时操纵一个表的时候冲突,一个想改数据,一个想读删数据,当然会有冲突,这是有锁的机制来约束并发访问数据,就是当一个用户对一个表的某个字段进行操作时锁定数据,直到操作完成锁才接触,然后下一个用户来操作数据。是自己手动设置的,当然,代码也可以实现。可以在表中建立锁,锁又分为独占锁(就是在某个时期只允许某个用户操作某个特定表对象)、共享锁(大家都可以使用)、更新锁(解决死锁的问题)。锁的机制挺麻烦的,一言半语也说不清,你可以自己查下资料。

http://talkingwithjon.com/shujuxiangguanchongtu/701.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有