我正在建设一个网站,使用myisam表格,因为它将主要是只读的。这就是为什么我认为myisam会更好。但我正在数据库中存储用户会话...这意味着每个页面请求都需要从sessions表中选择+更新。所以对于会话,我现在在表上有1/1的读取/写入,并且如果我需要在会话上更新某些内容,则写入可能会更高。我应该为这样的表使用innodb吗?还是1/1的读写比仍然不是myisam的问题?该应用程序不会有高流量(尽管我甚至不确定什么情况下定义高流量)。
您有很多选择,而Mysql并不是最好的选择:
MyISAM在原始性能方面通常比InnoDB更快(主要因为它不是ACID)。因此,访问MyISAM比InnoDB消耗的资源更少。
另一方面,MyISAM仅支持表级锁定:在高并发环境中,延迟会增加。然而,几十个简单查询不应该造成太多麻烦(假设大多数查询都是直接的SELECT session_data FROM session_table WHERE session_id = <some_id>
)。
相反,InnoDB提供了更强的稳健性:一个InnoDB表几乎不可能损坏,并且在性能方面的差异越来越小(例如,请参见这个基准测试)。有些人甚至会认为,现在没有什么理由继续使用MyISAM(InnoDB成为v5.5的默认存储引擎)。
很抱歉我没有提供更明确的答案来回答哪个更“快”。当涉及到性能优化时,必须进行真实的测试。请记住您可以非常容易地切换引擎(ALTER TABLE t ENGINE=[MyISAM | InnoDB]
),建议尝试并查看结果。