mysql跨服务器查询(java)

问题描述

目前有两个服务器S1,S2S1中有表A,B,C,其中两张表A,B数据记录上百万条S2中有D,E,F,其中F也是上百万条数据,现在要把ABCDEF一起连表查询(性能要求本地服务器访问1毫秒以内)我是该每个数据库各自子查询再在java程序里联合(又该如何分页?),还是写一个跨服务器连表查询?以前没做过这样子的,求大神指教!!

解决方案

解决方案二:
最好不要分开查询然后用程序处理,两种方案:1.使用databaseLink跨域查询,比较简单,查询频繁的话效率不高,因为每次都要去查。2.在一个库里建立中间表,用etl连两个源,先把查询结果落地在中间表,然后每次都增量存,这样查询起来就相当于在一个库里查,效率很高,而且某一个库挂了也不影响,只要中间表不挂即可。一般多数据源都是先做数据集成,然后在去查。不然万一一个源down了,你系统不就废了
解决方案三:
你好,听了你的建议我在S2建了个中间表,把S1几个表的放进这个中间表目前不懂得如何把S1的表同步到S2中间表的一些字段如S1中A的name、B的tel、C的address怎么同步到S2的中间表的name、tel、address之中我的方案是先把S1先迁移到S2中间表,定时每天凌晨3点更新同步,可这明显会有信息滞留的问题。。。学生党,求详细解释引用1楼ooppookid的回复:

最好不要分开查询然后用程序处理,两种方案:1.使用databaseLink跨域查询,比较简单,查询频繁的话效率不高,因为每次都要去查。2.在一个库里建立中间表,用etl连两个源,先把查询结果落地在中间表,然后每次都增量存,这样查询起来就相当于在一个库里查,效率很高,而且某一个库挂了也不影响,只要中间表不挂即可。一般多数据源都是先做数据集成,然后在去查。不然万一一个源down了,你系统不就废了

解决方案四:
人呢
解决方案五:
分表分库,水平切分,催着切分。看看mysqlproxy
解决方案六:
6张表要求join,我猜你的数据应该属于比较原始的数据,如果时效性不高的话,可以考虑每天半夜把当天的数据算好放在一张表里供查询如果要实时查的话,我觉得比较难搞
解决方案七:
每个数据库各自子查询再在java程序联合这个肯定达不到1毫秒后台还需要处理分页其实可以做到;可以横向分页;也就是在一张表的结果集上横向加字段比如之前结果集为name,sexage ,将S2中的结果集加入应该是name,sexage,color等等;这种方式我之前操作过,可行,不会改编数据的总列数;跨域的没做过,只使用jta连接多个数据库做过查询;跟你第一种方式类似;如果是我的话,会采用这种方式;单表查,每天一个时间点,定时将多表查询的结果集存到本地的一张单表中,这样就会是单表查询;效率也会快很多;
解决方案八:
引用5楼ygycomon的回复:

6张表要求join,我猜你的数据应该属于比较原始的数据,如果时效性不高的话,可以考虑每天半夜把当天的数据算好放在一张表里供查询如果要实时查的话,我觉得比较难搞

目前是定时每天凌晨3点把S1几张表联合查询插入更新到一张S1新表,再把这张表复制到S2的新表中问题是这个复制如何操作?我看到有定时导入导出sql文件但那都是整个数据库,求单张表的java导入导出。或者有更好的建议(跨服务器查询?单表同步?)求大神指导
解决方案九:
引用7楼u011699239的回复:

Quote: 引用5楼ygycomon的回复:
6张表要求join,我猜你的数据应该属于比较原始的数据,如果时效性不高的话,可以考虑每天半夜把当天的数据算好放在一张表里供查询如果要实时查的话,我觉得比较难搞

目前是定时每天凌晨3点把S1几张表联合查询插入更新到一张S1新表,再把这张表复制到S2的新表中问题是这个复制如何操作?我看到有定时导入导出sql文件但那都是整个数据库,求单张表的java导入导出。或者有更好的建议(跨服务器查询?单表同步?)求大神指导

数据库表同步这么简单的事情也要问,自己谷歌去吧

时间: 2024-11-01 18:05:17

mysql跨服务器查询(java)的相关文章

跨服务器查询

一:场景    先说说场景吧,为了不过分暴露业务,就用字母代替下吧,半个月前业务那边报了个bug,说根据A条件和B条件筛选一批数据, 当把时间(C条件)范围拉小点,可以筛选出数据,把(C条件)时间拉大点,就没有数据了.   二:分析    乍一看,泥煤的...真的有点神奇哦,0-24点可以拉到数据,0-12点反而就拉不到了,晕....然后就仔细分析了下代码, 然来不知道哪一个程序员在M库里根据各种条件筛选出了20条数据,因为B条件在N库里面,所以他拿着这20条数据到N库去做筛选, 结果20条数据

MYSQL跨服务器同步数据经验分享_Mysql

项目需要,自己找了些资料和亲手配置过后:得出的经验分享. (1)主服务器 修改配置文件/etc/my.cnf(my.ini) [mysqld] # mysql-bin是log文件的前缀,也可以使用其它的名字,比如服务器名 # 如果不带路径,会把log文件写到`/var/lib/mysql`下 log-bin=mysql-bin # serverid在一个同步体系中必须是唯一的,大于等于1且小于2^32-1的整数 server-id=1 binlog-do-db = 数据库名 (你要备份的数据库)

mysql 跨表查询、更新、删除示例_Mysql

下面来谈谈跨表插入,更新和删除 首先讨论的是跨表查询: insert into `table_A` select * from `table_B`;注意*代表全部插入. 接着又讨论关于跨表更新 复制代码 代码如下: update `table_A`, `table_B` set `table_A`.`name` = `table_B`.`name` where `table_A`.`id` = `table_B`.`id`;

MYSQL跨服务器同步数据经验分享

项目需要,自己找了些资料和亲手配置过后:得出的经验分享. (1)主服务器 修改配置文件/etc/my.cnf(my.ini) [mysqld] # mysql-bin是log文件的前缀,也可以使用其它的名字,比如服务器名 # 如果不带路径,会把log文件写到`/var/lib/mysql`下 log-bin=mysql-bin # serverid在一个同步体系中必须是唯一的,大于等于1且小于2^32-1的整数 server-id=1 binlog-do-db = 数据库名 (你要备份的数据库)

SQl 跨服务器查询语句_MsSql

select * from OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名 insert 本地库名..表名 select * from OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名 或使用联结服务器: --创建linkServer exec sp_addlinked

跨服务器查询导入数据的sql语句_MsSql

insert into MICS_WorkPlan_RestDays select * from OPENROWSET('SQLOLEDB', 'SERVER=192.168.2.97;uid=用户名;pwd=密码;Database=数据库','select * from v_restdays(sql语句,可执行存储过程)') as a 此语句可用来将另一服务器中的数据插入到本数据库中的某一表内

跨服务器查询导入数据的sql语句

insert into MICS_WorkPlan_RestDays select * from OPENROWSET('SQLOLEDB', 'SERVER=192.168.2.97;uid=用户名;pwd=密码;Database=数据库','select * from v_restdays(sql语句,可执行存储过程)') as a 此语句可用来将另一服务器中的数据插入到本数据库中的某一表内

Oracle跨服务器查询插入数据

 想实现insert into 当前库表 select 远程库中的表数据这种方式的数据同步,于是配置了一下oracle服务,远程和本地服务都是oracle 一.在当前库中插入数据 ? 1 2 create public database link remotedb  connect to username identified by password using 'db'; create public database link curdb connect to username identif

SQL跨数据库服务器查询和跨表更新的操作

SQL Server数据库跨数据库服务器查询和跨表更新的相关知识是本文我们主要要介绍的内容,接下来我们就通过一个实例来介绍这一过程.实例是这样的:想实现的功能很简单, 在我的本地一个表用来保存省的信息: T_Province,在另外一台服务器上也有一个保存省的表province,其中有我本地没有的provience_name_en和provience_id信息.我希望将它们保存到我的表中. 准备工作 首先我在本地 T_Province 表中添加了 ProvinceNameEn 和 Provinc