2

我在共享主机上有一个网站,预计会有很多访问者。我不需要用于读取的数据库(页面上显示的所有内容都是用 PHP 硬编码的),但我想存储用户输入的数据,因此仅用于编写。实际上,我只是存储它以便之后对其进行统计分析(在我的本地计算机上,下载后)。

所以我的两个问题:

  1. MySQL 是一个可行的选择吗?它旨在在共享主机上运行,​​可以使用 PHP/MySQL,所以我不能真正使用很多其他花哨的包,但是如果为此目的写入文件会更好,那也是可能的。据我了解,在文件中添加一行对于大文件来说是一个相对复杂的操作。另一方面,100 多个用户同时连接到 MySQL 数据库可能也是一个巨大的负载,即使它只是为了执行 1 个廉价的 INSERT 查询。

  2. 如果 MySQL 是一个不错的选择,那么应该如何最好地配置表?目前我有一个 InnoDB 表,主键id自动递增(当然在存储数据的列旁边)。这是通用配置,所以也许有更优化的方法,因为我只需要写入表,而不是从中读取?

编辑:我主要担心该网站一发布就会病毒式传播,所以我希望用户在很短的时间内访问。当然,我不希望由于数据库过载而丢失他们输入的数据。

4

1 回答 1

3

MySQL 是一个非常合理的选择。可能比平面文件好得多,因为您说您想稍后聚合和分析这些数据。对平面文件执行此操作可能需要很长时间,尤其是在文件很大的情况下。此外,RDBMS 用于聚合和数据集操作。非常适合创建报告数据。

除了现有的行键之外,将您想要的任何数据列以及某种用于跟踪用户的标识符放入表中。IP 地址是用户跟踪的合理选择,或者神奇的 cookie 值可能会起作用。这只是一张桌子,你不需要考虑太多。您可能希望在经常过滤报告的列上添加非聚集索引,例如 IP 地址、访问日期等。

我主要是担心网站一发布就会火爆,所以我希望用户在很短的时间内访问。当然,我不希望由于数据库过载而丢失他们输入的数据。

假设有适当的硬件支持,MySQL 等 RDBMS 明确设计用于处理重负载。不要出汗。

于 2013-07-16T20:25:57.073 回答