处理大量MySQL表

时间:2014-12-11 07:55:59

标签: php mysql

我现在有大约200个网站使用的API。预计这一数字很快就会增长。我需要在客户的网站上存储每个访问者的信息(IP地址等)。每个客户的每日访问者数量范围从2000到50000.这意味着我每天要添加400000到500000行。为此,我正在为每个客户制作一张不同的表格。

现在问题是当我尝试从所有表中获取数据时,需要花费很多时间。我该怎么处理?我该如何存储数据?

谢谢!

3 个答案:

答案 0 :(得分:0)

我总是尝试在我的架构中将表保持在最低限度。也许您应该创建一个包含相关客户信息的客户表,然后使用包含所有访客信息的访问者表。用外键链接两者。

答案 1 :(得分:0)

由于所有表都相同,我只是将访问者信息保存在一个表中,并用一列来标识客户端/网站。

接下来的问题是这样的大表是否仍然可以执行......显然你需要索引等等,但这里有几个想法:

Partitioning:我对Mysql上的分区一无所知(但是在Postgresql上尝试过)。我们的想法是设计物理数据存储以满足您的数据检索/工作需求。如果你的餐桌变得庞大,可能会有一个想法。

"活"和"存档"表。我确定这有适当的术语。同样,根据您分析数据的方式,您可以保留今天/本周/本月/您需要的任何数据&#34实况#34;添加新记录的表,然后具有将旧记录移动到更大的存档表的内务处理功能。我们的想法是在较小的实时表中仅保留您想要经常分析的记录,因此查询性能很快。

最后,即使在大型表格上,您可能会对Mysql的性能感到惊喜。我有一个拥有数百万条记录的Postgresql表,而且没有任何游戏,性能绰绰有余。

答案 2 :(得分:0)

不要将原始数据存储在mysql中。将访问者数据放入队列(基于redis,rabbitmq等)并仅存储业务模型所需的聚合数据。