当前位置: 首页 > 知识库问答 >
问题:

一个涉及java微服务接口调用及数据库查询的问题?

邹修真
2023-06-10

大家好,请看我的问题:
现有微服务A、微服务B,两个服务链接的是不同的数据库而且不在同一个机器上。
微服务A中的数据库人员表(base_user)存放了一万条人员信息,微服务B中需要调用A的接口,将没有调入过的人员列表查询出来(然后在前端勾选后调入到B的sys_user表中)。

我的实现方式是:
首先从B的sys_user中查询出所有的人员id列表,然后通过该id列表调用A的接口,A的接口执行mysql(下面语句省略了分页,实际项目是分页的):

select * from base_user where id not in ('1','2',......)

这种方式在sys_user中人员数量较少的情况下还算可以,但是随着调入人员的增加,A接口的速度越来越慢,因为not in 的id列表太大了。

select * from base_user where id not in ('1','2',此处省略9000个id)

请问大神们,有没有其他的实现方式或者mysql上可以优化的地方呢?
谢谢!

共有2个答案

曾云
2023-06-10

目的是把A服务中的表A(base_user)导入到B服务的表B(sys_user)中去,可以考虑使用消息队列来同步。

表A数据发生变化(增删改操作),发送消息
微服务B消费消息,判断数据,更新变化

慕嘉茂
2023-06-10

1.分批处理
2.用 JOIN 而不是 IN
3.使用临时表
4.异步处理
5.用缓存

 类似资料:
  • 我有三个表,product、category和product_to_category。Product具有主键product_id、category_id和PRODUCT_TO_CategoryP2C_ID。product_to_category使用产品各自的ID以多对多的关系将产品链接到类别。 基本上,我想写一个查询,从类别表中不存在的类别中选择所有产品。这是由于产品正在从另一个数据库迁移。 我有

  • 本文向大家介绍php连接oracle数据库及查询数据的方法,包括了php连接oracle数据库及查询数据的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php连接oracle数据库及查询数据的方法。分享给大家供大家参考。具体分析如下: php有强大的功能不但可以支持mysql,mssql,mysqli之个我们还可以与oracle数据连接,要让php支持oracle非常的简单我们只要把

  • 问题内容: 我想使用Golang创建数据库驱动的应用程序。我正在尝试以TDD方式进行。当我尝试测试进行Sql查询的方法时,有哪些可用的软件包? 我不想连接到用于开发的默认数据库。在运行测试时,我可以编写代码来占用另一个测试数据库,但是是否有已经执行该操作的go库。 是否有任何可在不连接数据库的情况下进行db测试的库? 用golang进行数据库测试的标准方法是什么? 问题答案: 不久前,在重构自己的

  • 我读过萨姆·纽曼的《微服务》一书,在关于分裂整体的一章中,他举了一个“打破外键关系”的例子,他承认跨API进行连接会更慢--但他接着说,如果你的应用程序足够快,它比以前慢有关系吗? 这似乎有点油嘴滑舌?人的经历是什么?您使用了哪些技术来使API联接执行得令人满意?

  • 我刚刚开始将我的项目分离到小微服务中。我有一个处理 API 授权的微服务(检查 API 请求中提供的 apiKey 是否有效),因此为此,我有一个单独的 API 授权数据库,其中包含下表和以下架构: APIKey: ApiKey (VARCHAR, PK) TenantID (INT, FK) 租户:租户ID(INT, PK)名称(VARCHAR) 如您所见,APIKey表链接到租户表。 我有另一

  • 我是一个彻头彻尾的Java新手,对Java接口还很陌生。我做错了什么?