如何跟踪多数据库连接的分页信息?

时间:2012-01-13 12:45:05

标签: java mysql database

我有以下设置

MySQL服务器instance1 MySQL服务器instance2

在这两个表中我都有一个分区的表记录。我必须从每个实例中检索数据并在JQGrid中显示数据。

以下是需要考虑的因素: 1)从每个数据库实例中只需要获得1000条记录。 2)合并这1000条记录,并按默认列按升序排序。 3)再次从合并的记录中获得仅在网格中显示的1000条记录。 4)对于接下来的1000条记录,我们不应该显示任何已显示的早期记录。

我遇到的主要问题是如何唯一地识别从提取的记录中显示的最后一行。

我想过这样做: 1)从所有连接获取每条记录的rowid。但是从两个实例中rowid将是相同的,那么我如何识别哪个记录来自哪个数据库? 2)检查rowid和主键组合。但是如果客户端在所有实例上将主键的自动增量值设置为相同,那么我们就不会得到唯一的组合。

我错过了什么或者还有其他办法吗?

我使用JDBC连接来连接数据库。

[已解决] 通过编写一个小函数解决了这个问题,该函数计算并创建了每次迭代从每个连接中获取的记录数的映射。

抱歉无法在此处添加代码,因为它是客户端IP。

2 个答案:

答案 0 :(得分:0)

您通常使用POJO类唯一标识一行,您可以根据类字段覆盖hashCode()和equals()方法。您可以将最后一行放入HashMap并检查它。 从表中检索的rownumber可以通过使用RANK()和PARTITION BY创建一个。使用合并结果创建临时或tmp_表,然后将其删除。

希望这有助于升技。

答案 1 :(得分:0)

如果两个mysql实例可以互相看到,那么如何创建一个视图,UNION这两个查询结果。那么在java世界中,你可以对这个视图进行查询/分页吗?