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

SQL多用户访问数据库怎样解决冲突?

发布时间:2019-07-03 02:57 来源:未知 编辑:admin

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

  知道合伙人互联网行家采纳数:5644获赞数:28009专注全网营销,品牌推广,营销推广,网站运营,自媒体运营;如果求助没有及时回复,欢迎私信。向TA提问展开全部sql多用户访问数据库其实就是事务并发,会引起如下问题:

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

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

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

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

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

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

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

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

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

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

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

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