数据库分区 - 更好地通过PHP或MySQL完成?

时间:2016-01-25 04:12:15

标签: php mysql database partitioning database-partitioning

让我首先解释一下上下文:我正在使用PHP和MySQL构建一个访问跟踪器。因此,当用户访问某个URL时,他的信息将被注册,然后他将被重定向到一个页面。然后,当他点击某个链接时,我会注册该信息,然后将用户重定向到他的目的地。

所以我在访问时需要在数据库中 WRITE 信息。我需要在点击时 READ和WRITE 信息。

我的问题是我要在数据库中保存很多行。而且由于我需要非常快速地进行读写(以便用户尽可能快地重定向,这是主要问题),我正在考虑对表进行分区。

但是最快的方法是什么?我在想两个解决方案:

使用MySQL

对表进行分区

基本上只是根据注册的ID范围对表进行分区。当我将查询数据时,MySQL将直接处理它,并且它将从PHP端透明。

但是由于我不知道要注册多少行,我怎样才能有效地定义范围?那么当我达到分区的限制时呢?

在需要时创建新表

如果我在内存中缓存了实际的行数,我可以知道每隔100.000行,我需要创建一个新表。所以在我达到极限之前,我只需创建一个新表。从给定的ID,我只需要除以100.000来知道我需要查询的表。

这样,我对最大分区数没有任何问题。

但在我的情况下,效率最高的是什么?基于PHP的分区系统(基本上我打算在解决方案#2中做什么)能比MySQL的分区系统更高效吗?或者我应该依赖MySQL,如果我达到了限制,创建另一个分区表?

0 个答案:

没有答案