如何在MySql数据库中存储大量记录?

时间:2014-04-07 09:49:02

标签: php mysql database-design

我有一个表,其中包含大约2500行,用于单个用户ID。对于每个用户ID,将存在相同数量的行。如果用户数量增加,那么恐怕行数会很大。

那么请你建议我做什么? 我应该为不同的用户使用不同的表,还是为所有用户使用单个表。另外,在一个表中可以存在多少行/列的最大限制?

我的数据库看起来像下面的结构:

用户1的

id ----   col1 
1  ----  value1
2  ----  value2

..............

2500 ----价值2500

用户2的

id ----  col1 ...
1  ----  value1
2  ----  value2

..............

2500 ----价值2500

同样,它将继续假设100万用户

那么,我应该为每个用户创建单独的表,还是应该创建包含所有记录的1个表。

1 个答案:

答案 0 :(得分:5)

按原样使用表格。 MySQL可以轻松处理数十亿或数行的数据。使用一些不错的索引,你的表现也应该非常好。

这并不是说你不应该确保你有良好的桌面设计,但你也不应该担心处理你认为可能是大量数据的东西 - 实际上,数据集的海洋可能会下降。

列数确实没有太大差异,行大小可以增加硬盘驱动器访问它们的时间(根据我读过的一些文章),但与此同时,你必须有一个非常大的行才能真正注意到数千个查询的差异。

至于良好的结构,它实际上取决于你将如何使用它。如果您要执行许多不同的聚合函数,请确保您有一个允许它的表。如果您只需要几个特定的​​查询,最好创建一个报表特定的表,每天汇总数据一次。

编辑:有关行数实际限制的说明:

http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html

MyISAM存储引擎每个表支持2 ^ 32行,但您可以使用--with-big-tables选项构建MySQL,使其每个表最多支持2 ^ 64行。

http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html

InnoDB存储引擎似乎没有行数限制,但它的表大小限制为64 TB。这适合多少行取决于每行的大小。