我的Silex应用程序始终将会话数据存储在服务器上,但我想转移到mysql数据库,这样我就不会被绑定到单个Web服务器了。不过,我对性能感到疑惑。我打算使用PdoSessionHandler。我的问题是:目前我有大约177K存储会话。垃圾收集会慢吗?从文件系统迁移到数据库会不会影响性能?
答案 0 :(得分:2)
您是否会在会话到期时获得索引?如果没有索引,那么是的,它会很慢。 OTOH,您认为在磁盘上搜索177,000个文件的速度有多快?可能 lot 比使用数据库做它明确设计的事情要慢。
你会受到性能打击吗?大概。会有意义吗?取决于系统正在对数据库执行的操作,数据库的配置以及运行它的服务器。
简而言之 - 是的,将数据库用作会话存储将是不可避免的成本,但它可能值得为它提供的能力。
我建议使用Redis,虽然支持磁盘。
答案 1 :(得分:1)
老实说,使用MySQL数据库作为缩放名称中的事实会话存储是您在分布式会话存储中可能犯的最严重错误之一。
让我解释一下原因......
我的建议是改用memcached之类的东西。在连接开销可以显着降低的情况下,没有要编写的db模式,默认情况下,会话处理程序的驱动程序已存在于PHP中。在memcached之上抛出类似igbinary之类的东西,你可以获得超快速的序列化以及更便宜的内存会话处理,可以轻松扩展和分发,只需最少的工作量和副作用。例如,AWS为其提供了用于其PaS中的memcached / redis负载平衡和复制解决方案的Elasticache。如果您不在AWS上,还有Twem Prox。