码迷,mamicode.com
首页 > Web开发 > 详细

.net mvc中session的锁机制

时间:2018-11-11 19:09:55      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:内容   必须   级别   control   数据   事务隔离   cti   测试结果   数据库   

今天遇到个奇怪的问题, 一个秒杀商品系统, 大量秒杀请求进来, 到了action居然是单线程执行! 这样产生的效果就是“这个系统好慢啊!!”。

可是我没有加lock,为什么会变成单线程执行呢?

 

找资料才知道, session有个锁机制。

资料内容:

和数据库的锁一样, 分共享锁和排它锁。

共享锁占用时,排它锁必须等待,而另一个共享锁可以同事访问;

排它锁占用时,其他所有锁都必须等待。

两个锁的持续时间都是整个action走完才释放。类似于Repeatable以上的事务隔离级别。

 


而我的实际测试结果是:

无论是读还是写,都是排它锁占用!

也就是说,只要用到session,哪怕在BaseController里仅仅读取, 最终action也是线性执行的。

因此session是性能杀手。

.net mvc中session的锁机制

标签:内容   必须   级别   control   数据   事务隔离   cti   测试结果   数据库   

原文地址:https://www.cnblogs.com/dengshaojun/p/9942929.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!