>  기사  >  데이터 베이스  >  mysql의 데이터베이스 간 연결 쿼리 방법 예

mysql의 데이터베이스 간 연결 쿼리 방법 예

小云云
小云云원래의
2018-01-17 10:24:354823검색

이 글은 MySQL의 데이터베이스 간 쿼리 방법을 주로 소개합니다. 필요한 친구들이 참고하면 도움이 될 것입니다.

비즈니스 시나리오: 서로 다른 데이터베이스의 테이블을 연결하는 쿼리

예를 들어, 연결할 테이블은 머신 A의 데이터베이스 A에 있는 테이블 A 및 머신 B의 데이터베이스 B에 있는 테이블 B입니다.

이 경우 "select A.id,B.id from A left Join B on ~~;"을 실행하는 것은 불가능하지만 비즈니스 요구 사항은 불변이고 데이터베이스 설계도 불변이므로 이것이 고통스럽습니다. 엉덩이. .

해결책: 머신 A의 데이터베이스 A에 테이블 B를 만듭니다. . .

물론 농담이 아니고 MySQL의 페더레이션 엔진을 기반으로 한 테이블 생성 방식을 사용하고 있습니다.

테이블 생성 문의 예:


CREATE TABLE `table_name`(......) ENGINE =FEDERATED CONNECTION='mysql://[username]:[password]@[location]:[port]/[db-name]/[table-name]'

전제 조건: mysql은 페더레이션 엔진을 지원해야 합니다(쇼 엔진을 실행하면 지원 여부를 확인할 수 있습니다).

FEDERATED 엔진이 있지만 지원이 NO인 경우 my.cnf 파일 끝으로 이동하여 federated 줄을 추가하고 mysql을 다시 시작하세요.

FEDERATED가 전혀 없다면 이 줄은 mysql에 이 엔진이 설치되어 있지 않다는 의미이므로 즐겁게 플레이할 수 없습니다. 다음 작업이 상당히 크기 때문에 운영 및 유지 관리 회사에 가서 완료하는 것이 가장 좋습니다.

설명: FEDERATED 엔진을 통해 생성된 테이블에는 로컬 테이블 정의 파일만 있고, 데이터 파일은 원격 데이터베이스에 존재합니다. 이 엔진을 통해 원격 데이터 액세스 기능은 다음과 유사합니다. Oracle 하에서 DBLINK를 구현할 수 있습니다. 즉, 이 테이블 생성 방법은 데이터베이스 A에 테이블 B의 테이블 구조 파일만 생성합니다. 테이블의 인덱스, 데이터 및 기타 파일은 여전히 ​​머신 B의 데이터베이스 B에 있으며 이는 테이블을 생성하는 것과 같습니다. 데이터베이스 A에 있습니다. B에 대한 바로가기입니다.

결과적으로 계란은 더 이상 아프지 않습니다. .

몇 가지 참고 사항:

1. 로컬 테이블 구조는 원격 테이블 구조와 정확히 동일해야 합니다.

2. 원격 데이터베이스는 현재 MySQL로 제한되어 있습니다

3. 트랜잭션은 지원되지 않습니다

4. 테이블 구조 수정은 지원되지 않습니다.

다른 네티즌의 추가 의견:


CREATE TABLE IF NOT EXISTS `logintoken` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` char(1) NOT NULL DEFAULT '0',
`loginName` varchar(20) DEFAULT NULL,
`token` varchar(2000) DEFAULT NULL,
`tokenExpiredTime` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE =FEDERATED CONNECTION='mysql://root:root@192.168.5.102:3306/zysso/logintoken';

원격 5.12 logintoken 테이블을 사용하세요. , FEDERATED로 충분하므로 직접 열면 됩니다. 5.12에서는 활성화할 필요가 없습니다.

관련 권장 사항:

Oracle이 데이터베이스 간 쿼리를 구현하는 방법

데이터베이스 간 트랜잭션 일관성 문제에 대한 솔루션(예)

[MSSQL] SQL Server 데이터베이스 간 쿼리

위 내용은 mysql의 데이터베이스 간 연결 쿼리 방법 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.