3

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

4

2 回答 2

1

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

  1. 如果您有硬件 Raid,则将其保存在磁盘上是不错的选择,不利于复制。
  2. Mysql - 是和否 我以前使用过 Mysql - Myisam 和 50 个用户表崩溃。所以如果你需要你可以使用“ MEMORY (HEAP)”
  3. 像 PHP+extension 这样的语言有自己的 Session storage eq WinCache Session Handler - Manual
  4. 最受欢迎的Php+memcached 会话
  5. 您甚至可以将 Sqlite 用于 Session 存储,因为您可以。对我来说最好的选择是 Mongodb 会话存储 || REDIS-会话-PHP
  6. 有些人将序列化引擎更改为“ igbinary ”以获得更好的性能
于 2013-10-30T16:06:09.253 回答
1

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]),我建议您尝试看看。

但是考虑到您的预期流量,使用其中一个应该不会产生太大的影响。

于 2013-10-31T11:36:51.280 回答