如何将mysql的100万条记录从一台机器传输到另一台机器而不影响性能

时间:2015-12-23 07:15:03

标签: mysql ruby-on-rails

我为不同的客户生成独特的tokes。对于每个客户端请求,我必须生成100万个唯一令牌。生成唯一令牌需要很长时间,因此我在后台使用延迟作业gem执行此活动。

Flow of my application is as below
1) Client machine sends an api request to remote server to generate 1 million unique tokens.Remote machine sends response back to client machine with status "pending" and start generating 1 million unqiue tokens. 

2)After generating 1 million unique token for a request remote server sends these unique tokens back to the client machine using an API call. 

3)client machine stores these unique tokens in his database using delayed job.

但问题是每当我同时点击超过5个请求时,mysql正在关闭连接,错误“mysql服务器已经消失:mysql关闭连接问题”,因此无法生成唯一的令牌。

所以我想知道如何以有效的方式从远程服务器到客户端机器生成和传输这个独特的令牌(100万条记录)而不影响性能。

谢谢,

1 个答案:

答案 0 :(得分:1)

我不认为一次发送所有记录是一个好主意。如果客户端和服务器之间的连接丢失怎么办?数据传输需要重新开始吗?

我认为你应该建立一个API调用,它可以批量传递唯一的令牌,例外限制和偏移量。

  1. 在远程服务器上成功生成100万个令牌时,只需向客户端发送成功响应。
  2. 客户可以通过提供限制和抵消来批量请求数据/令牌。它还可以帮助您跟踪客户端加载的令牌数量和剩余数量。
  3. 重复步骤2,直到所有内容都加载到客户端。如果出现故障,您只能再次请求该数据/批量。
  4. 关于mysql问题:

    1. 尝试使用批量插入加载标记,批量插入也是批量生产的首选。 INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

    2. 尝试调整我的sql配置以提高性能。 This可以很好地阅读。

    3. 如果这有帮助,请告诉我。谢谢!