数据库集群

1000个人同时并发访问数据库时,产生死锁的可能性很大   高并发连接数据库的痛楚.

select * from userInfo with(nolock) //即使表枷锁了,也能将数据查询出来,但是查询出来的数据很有可能是脏数据。

select * from userInfo with(holdlock) //读取数据,并且给数据加锁,此时,只能对表进行读操作,而不允许CUD 

数据库中从表中读取数据的时候,会给表加上共享锁(s锁),即这个时候允许其他用户进行查询此表操作,
增,删,改 表的时候会给未加锁的表加上排他锁(x锁),这个时候不允许其它对此表的操作。


当一个数据库并发到一定的程度的时候,就不行了,到处都是死锁。

解决办法:
    读写分离,数据库集群。极大的降低了死锁的概率(一般有一个主库,负责修改操作,有几个从库负责读操作)
    读写分离有三个方法:
          1.买中间件, 能够判断请求是读操作(从从库读取数据),还是增删改(从主库修改数据)
          2.发布订阅,当向写的主库中跟新数据的时候(主库会记录一个快照),从库拿到快照并根据具体操作跟新内容。也就是说及时从写数据库中获得最新的备份,缺点是有延时
          3.代码实现多个库进行执行操作。(效率最低,只是查询时可以分流)
   
总结:SqlServer:做互联网项目的时候,SqlServer支持很弱,性能很差
      MySql:本身集群做的不错,而且有很多成功的开源案例。
      Oracle:本身集群做的非常好,但是成本很高。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值