0

我有一种情况,应用程序从外部设备收集一长串数据库插入,例如每秒大约 100 次。接收这些请求的应用程序在与 mySQL DB 本身不同的服务器上运行。

由于我不想为每个插入打开和关闭数据库,我认为最好先将它们收集到某种队列中,然后将它们全部插入。

当我考虑DataSet mySQL为此使用构造时,我遇到了一个问题。

我需要insert some data into table A with autoincrement key

And this key I then need to use to insert a subsequent record in table B.

虽然在正常的 mySQL 中我只是LAST_INSERT_ID()用于此目的 - 但是当使用 DataSet 收集插入请求时,我不知道如何做到这一点。

解决这个问题的正确方法是什么?

ps 或者我可以在请求时插入并且不用担心 mySQL 在远程服务器上运行的事实。因此,不需要首先收集这些请求以供以后批量插入吗?

4

2 回答 2

1

我们在这里加速处理性能问题,因此寻找替代方案很重要。您正在考虑存储持久数据。因此,最多的选择可能是:-

  1. 会话
  2. 文件
  3. 数据库

不建议将会话用于操作类型的数据,并且对可存储的数据大小有限制。我会排除这个选项。

文件通常是计算机上最慢的东西,因此打开、写入和附加到文件可能不是最有效的。

那将留下数据库。就个人而言,我会推荐这个选项而不是我确定的其他 2 个选项。我听说您对持续打开数据库连接的担忧。PDO 对此有一个回答。

$dbh = new PDO('mysql:host=localhost;dbname=mydatabase', $user, $pass,
               array( PDO::ATTR_PERSISTENT => true
       ));
于 2013-11-10T10:24:32.847 回答
0

为您LAST_INSERT_ID()

select max(id) from yourdb.yourtbl;
于 2013-11-10T09:10:42.900 回答