【问题标题】:Yii2 Session Storage in DB, too many rows? Performance?数据库中的 Yii2 会话存储,行太多?表现?
【发布时间】:2015-12-16 20:17:08
【问题描述】:

我刚开始使用yii\web\DbSession 进行会话存储,我当前的表中有 33,000 行。

我需要所有这些记录吗?我在使用它们吗? 我应该设置某种删除所有旧记录的实现吗?

【问题讨论】:

  • 配置超时。来自 yii 文档:The number of seconds after which data will be seen as 'garbage' and cleaned up. 所以你不需要实现删除,它已经存在了。如果您遇到性能问题 - 将会话从 db 切换到 memcacheredis
  • 真正的问题是 - 为什么选择关系数据库作为会话存储?
  • @Mjh 在开发服务器或本地机器上,如果你懒得安装 memcache 或 redis 也没关系。但在生产中 - 是的,这是个坏主意。
  • @ineersa 真的那么糟糕吗?我对 Redis 的经验为零,我在 github.com/yiisoft/yii2/blob/master/docs/guide/… 上关注 Yii 指南
  • @KhalidAl-Mutawa 实际上你不需要任何经验。只需安装它并使用来自 yii 的适当类。它已经为你完成了。

标签: php yii2


【解决方案1】:

看来,你有一个大项目,所以你有很多用户会话。拥有满满一桌的会议本身不是问题。 Yii DbSession 组件有一个垃圾收集器方法gcSession(),在每次会话保存时都会调用它,Yii 会自动处理会话表中的过期记录。

所以是的,你需要所有这些。

如果它降低了您的应用程序的速度,您可能需要调整您的 DBMS。有用的链接有一个很好的答案:MySQL optimization of huge table

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 2014-06-18
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多