PHP mysql为统计数据选择引擎类型

时间:2012-01-17 08:44:32

标签: php mysql client

我正在尝试为网络系统开发接口。基本上,一个软件通过UDP和其他软件收集所有流量数据,并将数据插入mysql(客户端没有mysql服务器,只有具有用户界面访问权限的服务器有mysql服务器)。 有大约50个客户端具有非常高的流量,并且在mysql服务器上的插入操作非常快。但我想知道性能问题,我计划用推送服务器或其他东西实时打印统计数据,这些流量统计数据必须保存很长时间,所以我应该使用什么样的数据库引擎? myisamm,innodb,存档?有人可以向我解释一下吗?我也愿意接受建议

3 个答案:

答案 0 :(得分:1)

我认为您需要做的最重要的事情是建立一个环境,您可以在其中进行一些测试并分析不同的方法。

对于你正在谈论的那种事情,MyISAM可能很快就会变坏,你只是在表的末尾添加行并运行选择它 - 没有删除或更新。

您需要定期存档较旧的行,我相信存档存储引擎可能非常适合这种情况,但我从来没有机会使用它,也没有根据那里的经验说话。我怀疑它可以作为应用程序的主表使用。您可以考虑某种分区,例如您可以按月将结果存储在不同的表中。

本书High Performance MySQL应该是您的第一个停靠点。

听起来像一个宏伟的项目 - 祝你好运。

答案 1 :(得分:1)

以下是innodb和myisam的详细信息

  • myisam更适合高读取量,因为表格与行锁定而导致更新量较高的innodb。

  • innodb被记录下来,可以从myisam无法完成的崩溃中恢复,就像NTFS与FAT文件系统一样。

  • myisam有全文索引,innodb没有。

  • innodb有事务支持,提交和回滚,myisam缺少这些。

因此,如果您不关心更新和恢复表,并且不需要事务支持,则可以使用MyISAM。要解决大量数据的问题,您可以考虑使用MySQL分区,然后使用归档引擎定期存档备份表中的旧条目 如果您真的担心阅读速度,也可以考虑延迟插入。

更新:
对于MyISAM表,如果数据文件中间没有空闲块,则支持并发SELECT和INSERT语句。在这种情况下,您很少需要在MyISAM中使用INSERT DELAYED。 insert-delayed

答案 2 :(得分:0)

您应该构建每天更新的统计表,您可以查询所需的统计信息。