【发布时间】:2013-07-16 20:16:42
【问题描述】:
我在共享主机上有一个网站,预计会有很多访问者。我不需要用于读取的数据库(页面上显示的所有内容都是用 PHP 硬编码的),但我想存储用户输入的数据,因此仅用于编写。事实上,我只是存储它以便之后对其进行统计分析(在我的本地计算机上,下载后)。
所以我的两个问题:
MySQL 是一个可行的选择吗?它的目的是在共享主机上运行,可以使用 PHP/MySQL,所以我不能真正使用很多其他花哨的包,但是如果例如为此目的,写入文件会更好,这也是可能的。据我了解,在文件中添加一行对于大文件来说是一个相对复杂的操作。另一方面,100 多个用户同时连接到 MySQL 数据库可能也是一个巨大的负载,即使它只是为了执行 1 个廉价的 INSERT 查询。
如果 MySQL 是一个不错的选择,那么最好如何配置表?目前我有一个 InnoDB 表,主键
id自动递增(当然在存储数据的列旁边)。这是通用配置,所以也许有更优化的方式,因为我只需要写入表,而不是从中读取?
编辑:我主要是担心网站一发布就会火爆,所以我希望用户在很短的时间内访问。当然,我不希望由于数据库过载而丢失他们输入的数据。
【问题讨论】:
-
只写数据的最佳数据结构什么都不是。下一个最好的将是一个平面文件......也就是说,如果你真的担心写入会阻碍处理。我想大多数时候,这无关紧要。
-
@PaulProgrammer - 这不就是 MySQL BLACKHOLE 存储引擎的用途吗? :)
-
这真的不是写的,你需要阅读它来做统计分析。
-
平面文件是什么意思?如果我读取一个文件,向其中添加一行,然后将其写回,那么第 100000 行将需要读取和写入 100000 行,不是吗?
-
不,您可以附加到文件而无需读取和重写整个内容。
标签: mysql database performance insert filesystems