我正在使用myisam表创建一个网站,因为它将主要是只读的。这就是为什么我认为myisam会更好。但是我将用户会话存储在数据库中......所以这意味着每个页面请求上的会话表的select + update。所以对于会话,我现在在桌面上有1/1次读/写,如果我需要更新会话上的某些内容,写次数可能会更高。我应该使用innodb这样的表吗?或者是1/1读/写比率仍然是myisam没有问题的东西?该应用程序将不会有高流量(虽然我什至不知道什么才算高流量针对这种情况)InnoDB或MyISAM会话?
回答
的MyISAM往往快于InnoDB的原始PE方面性能(主要是因为它不是ACID)。因此访问MyISAM 比InnoDB消耗更少的资源。另一方面,MyISAM仅支持表级锁定:在高并发环境中,延迟增加。几十个简单的查询不应该导致太多麻烦,但是(假设大多数查询将是一个简单的SELECT session_data FROM session_table WHERE session_id = <some_id>
)。相反,InnoDB提供了更强大的功能:InnoDB表几乎不可能被损坏,性能差异往往越来越小(例如参见this benchmark)。有些人甚至会争辩说现在没有什么理由继续使用MyISAM(InnoDB成为v5.5中的默认存储引擎)。
对于没有提供关于哪个“更快”的更确切答案,我感到抱歉。与性能优化一样,必须执行实际测试。请记住,您可以非常轻松地切换引擎(ALTER TABLE t ENGINE=[MyISAM | InnoDB]
),我建议您尝试一下。
但考虑到您的预期流量,使用这一个或另一个不应该有太大的区别。
这将很容易切换,但有些事情像自动增量在两个引擎中工作方式不同。更不用说innodb上的死锁检测。至于“哪一个更快” - 只要所有东西都在几秒钟而不是全部秒钟内运行,我真的不在乎。而且我担心可能会因myisam开始发生,因为太快会发生全桌锁。无论如何,感谢您的意见,我认为你的最后一句话很好地回答了我的问题:) – Marius
你有很多选择和MySQL是不是最好的一个:
- 保存到光盘的如果你有硬件RAID,不错的选择,不适合复制。
- Mysql - 是的,没有我以前使用的Mysql - Myisam和50个用户表崩溃。所以,如果你需要,你可以使用“MEMORY (HEAP)"表
- 一些语言如PHP +扩展了自己的会话存储EQ WinCache Session Handler - 手动
- 最受欢迎Php+memcached session
- 可以使用甚至SQLite,让会话存储,因为你可以。我最好的选择是MongoDB的会话存储|| REDIS-SESSION-PHP
- 有人更改序列化引擎“igbinary”有更好的表现
- 1. LONG Blob innodb或MyISAM
- 2. 哪个引擎? InnoDb或MyISAM?
- 3. InnoDB与MyISAM
- 4. mysql innodb vs myisam inserts
- 5. 使用MyIsam和Innodb
- 6. Openfire - MySQL存储引擎:InnoDB或MyISAM?
- 7. 存储网站选择 - Myisam或Innodb?
- 8. Prestashop的MyISAM或InnoDB数据库?
- 9. MyISAM或InnoDB主要用于写表
- 10. 带MySQL后端的JPA2:MyISAM或InnoDB
- 11. 的MySQL - InnoDB的VS的MyISAM
- 12. 的MyISAM和InnoDB的替代
- 13. Innodb引擎和Myisam引擎
- 14. WordPress的InnoDB和MyISAM表
- 15. 从myisam转换到innodb
- 16. mysql max_user_connections以及innodb vs myisam
- 17. MyISAM替代不是InnoDB吗?
- 18. MyISAM与InnoDB vs.其他......?
- 19. InnoDB JPA,继续强制MyISAM
- 20. 当MyISAM比InnoDB更好时?
- 21. MySQL备份MyISAM与InnoDB
- 22. 何时使用MyISAM和InnoDB?
- 23. MySQL合并InnoDb和MyiSAM表
- 24. 写在InnoDB从MyIsam读取
- 25. myISAM和InnoDB表的外键
- 26. 创建InnoDB表为MyISAM
- 27. phpmyadmin将myisam转换为innodb
- 28. MYSQL innodb或myisam?哪一个最适合这种情况?
- 29. 如何知道mysql表是否使用myISAM或InnoDB引擎?
- 30. MySQL成本:Cascade或MyISAM上的InnoDB单独删除
我会说'既不是':如果你担心性能,两者都太慢。使用MEMORY(引擎)或Memcached/Redis(另一个具有内存存储的RDBMS)。 – raina77ow
您想要对内置PHP会话不支持的会话做什么? – RandomSeed
@RandomSeed ...将它们存储在数据库中。这不是关于会话的问题,而是关于存储引擎的问题。会议就是这方面最好的例子,但它们不是唯一的情况,比如1/1。所以,我们不要在这里谈论话题。 – Marius