INSERT的最佳mysql表结构?

时间:2013-07-16 20:16:42

标签: mysql database performance insert filesystems

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

所以我的两个问题:

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

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

  3. 编辑:我主要担心网站会在发布后立即传播,所以我希望用户能够在很短的时间内访问。当然,由于数据库过载,我不想丢失他们输入的数据。

1 个答案:

答案 0 :(得分:3)

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

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

  

我主要担心网站会在发布后立即传播,所以我希望用户能够在很短的时间内访问。当然,由于数据库过载,我不想丢失他们输入的数据。

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