会话比查询数据库更快吗?

时间:2010-07-11 18:50:57

标签: database session login performance temporary

例如,用户正在登录,并且系统正在存储有关它们的信息示例:birth date,因此从会话中获取此信息或查询数据库的速度更快?

我的想法是,用户只需登录一次,会话总是在那里,但如果我查询数据库,那么如果用户重新加载页面,系统需要反复查询,而不是获取来自临时“地方”的数据。

我使用PHP和MySQL。

3 个答案:

答案 0 :(得分:10)

对于几乎所有语言和数据库,是的。用户会话通常只是存储在内存中,获取它只是查找它的问题。数据库访问通常涉及与不同进程的某些套接字通信。相比之下相当沉重。

答案 1 :(得分:1)

你是怎么做到的?要做的是检查登录页面上的用户凭据,是的,您必须进行查询以检查用户指定的条件是否与数据库匹配。如果他们这样做,您将他们存储在会话中,然后您继续基于该会话。

所以,这不是比较,你必须在登录页面查询数据库一次,然后使用会话。

登录页面

// database query run once only at this page
// if user exits, you store it into session else redirect with an error message

答案 2 :(得分:0)

实际上,卡尔的答案并不完全正确,并说“MySql”也没有帮助。

你看,像mysql这样的数据库系统有“存储引擎”。这些通常写入文件,但有一些写入内存(MEMORY),其他写入内存但保留文件备份(MyISAM)和一些到/ dev / null(BLACKHOLE)。

所以这一切都取决于存储引擎:

  
      
  • MyISAM - MySQL 3.23的默认引擎,性能卓越
  •   
  • MEMORY - 基于哈希,存储在内存中,对临时表有用
  •   
  • InnoDB - 支持事务,行级锁定和外键
  •   
  • BerkeleyDB - 支持事务和页面级锁定
  •   
  • BLACKHOLE - / dev / null存储引擎(你写的任何东西都消失了)
  •   
  • 示例 - 存储引擎示例
  •   
  • ARCHIVE - 归档存储引擎
  •   
  • CSV - CSV存储引擎
  •   
  • ndbcluster - 群集,容错,基于内存的表
  •   
  • FEDERATED - 联合MySQL存储引擎
  •   
  • MRG_MYISAM - 收集相同的MyISAM表
  •   
  • ISAM - 过时的存储引擎
  •   

(来自PhpMyAdmin Egines列表的列表)