繁体   English   中英

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

[英]PHP mysql choosing engine type for stats

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

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

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

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

高性能MySQL这本书应该是你的第一个停靠点。

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

以下是innodb和myisam的详细信息

  • 对于高读取卷,myisam更好,因为表与行锁定,因此更新卷的innodb。

  • innodb是记录的,可以从myisam不能的崩溃中恢复,就像NTFS与FAT文件系统一样。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM