例如,用户正在登录,并且系统正在存储有关它们的信息示例:birth date
,因此从会话中获取此信息或查询数据库的速度更快?
我的想法是,用户只需登录一次,会话总是在那里,但如果我查询数据库,那么如果用户重新加载页面,系统需要反复查询,而不是获取来自临时“地方”的数据。
我使用PHP和MySQL。
答案 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列表的列表)