이 글은 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';
데이터베이스 간 트랜잭션 일관성 문제에 대한 솔루션(예)
[MSSQL] SQL Server 데이터베이스 간 쿼리
위 내용은 mysql의 데이터베이스 간 연결 쿼리 방법 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!