InnoDB或MyISAM会话?

我正在使用myisam表创建我正在构建的网站,因为它将主要是只读的。 这就是为什么我认为myisam会更好。 但是我将用户会话存储在数据库中......所以这意味着每个页面请求上的会话表的select + update。 所以对于会话,我现在在桌面上有1/1次读/写,如果我需要更新会话上的某些内容,写次数可能会更高。 我应该使用innodb这样的表吗? 或者是1/1读/写比率仍然是myisam没有问题的东西? 该应用程序不会有高流量(虽然我甚至不知道什么定义高流量为这种情况)


就原始性能而言,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] ),我建议您尝试一下。

但考虑到你的预期流量,使用这个或那个不应该有太大的差别。


你有很多选择,Mysql不是最好的选择:

  • 如果您有硬件Raid,则可以在光盘上保存好的选项,但不适合复制。
  • Mysql - 是的,没有我以前使用的Mysql - Myisam和50个用户表崩溃。 所以如果你需要你可以使用“MEMORY(HEAP)”表
  • 像PHP +扩展这样的语言有自己的会话存储eq WinCache会话处理程序 - 手册
  • 最流行的Php + memcached会话
  • 你甚至可以使用Sqlite进行会话存储,因为你可以。 对我来说最好的选择是Mongodb会话存储|| Redis的-SESSION-PHP
  • 有些人将序列化引擎更改为“igbinary”以获得更好的性能
  • 链接地址: http://www.djcxy.com/p/52235.html

    上一篇: InnoDB or MyISAM for sessions?

    下一篇: When to use MyISAM and InnoDB?