首页 » 友链在线 » django的session是存在数据库的session表里,这样会不会对数据库压力过大「django连接数据库mysql」

django的session是存在数据库的session表里,这样会不会对数据库压力过大「django连接数据库mysql」

访客 2025-01-28 0

扫一扫用手机浏览

文章目录 [+]

django的session是存在数据库的session表里,这样会不会对数据库压力过大

对于一般中小型应用而言,Session入库是能满足项目需要的,一旦应用访问量上升,那频繁读写数据库中的Session也容易给系统带来瓶颈。

Session不是最优方案

django的session是存在数据库的session表里,这样会不会对数据库压力过大「django连接数据库mysql」 友链在线

传统的Session是存储在应用服务器中的,一般是以文件形式存储在服务器硬盘中,这会导致过多Session带来的磁盘I/O压力,另一方面也不利于集群>摆设/span>。在这种背景下,有人就提出将Session存入数据库来解决上述问题,事实上的确也解决了问题,但另一个问题也随之而来,那就是:一旦网站并发过大,也很容易导致数据库瓶颈,>究竟span style="font-weight: bold;">数据库查询也存在耗时的。

建议将Session存入Redis

在实际生产环境中,我们基本上都是基于Redis来实现Session会话保持,这样做的好处有:

  • 易于分布式/集群>摆设/span>时实现Session互通;

  • Redis读写性能极高,Session频繁读写也不会带来性能压力;

  • 利用Redis Key的过期功能可轻松控制Session的>逾期/span>;

  • 可以将每个用户的session id记录下来,这样就可以查到某个注册用户所有session id, 轻松实现踢出登陆功能。

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!

你预计的访问量是多大?脱离这个就开始谈压力,就是耍流氓。

添加一个内存数据库保存session,可以加快速度,但服务器宕机session就没了。

也可以自己写个中间件处理,Django的文档里写有怎么写中间件,学习编程文档都不会看的话,那我真没辙。

做数据库的ha也是可以的。

使用memcached来保存session 这种方式跟数据库类似,不过因为是内存存取的,性能自然要比数据库好多了。但存入memcached中的数据都需要序列化,效率较低; memcached服务器一死,所有session全丢。

也可以terracotta来保存session 跟memcached类似,但是数据不需要序列化,并且是Find-Grained Changes,性能更好。配置对原来的应用完全透明,原有程序几乎不用做任何修改。而且terracotta本身支持HA

相关文章

梅州SEO领域翘楚,介绍哪家企业独占鳌头

搜索引擎优化(SEO)已成为企业提升网络知名度、拓展市场的重要手段。梅州,这座充满活力和机遇的城市,也涌现出一批优秀的SEO企业。...

友链在线 2025-03-31 阅读0 评论0