SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 15.10.2008 19:54:16

Golova
Завсегдатай
Зарегистрирован: 23.03.2007
Сообщений: 92

federated, merge - как собрать несколько таблиц в одну

требуется сделать одну таблицу из нескольких таблиц(скорее частей одной и той же таблицы) расположеных на разных серверах.
опишу простейший случай:
все указанные таблицы имеют одинаковую структуру(схему).
имеем server1->table1, server2->table2
хочу сделать server2.table3 которая будет содержать в себе table1, table2

какие варианты я пробовал:
1) сделал federate для server1->table1 на server2, затем merge(table1_fed, table2)
создается но при любом select или insert выдает ошибку:
"Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist"
2) пытался найти в инете инфу про multiple federated tables ничего не нашел.

Может есть у кого еще мысли ?

Неактивен

 

#2 15.10.2008 22:13:26

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: federated, merge - как собрать несколько таблиц в одну

1. MERGE работает только с MYISAM-таблицами

2. FEDERATED работает только с одной таблицей

Можно выбирать данные с разных серверов на уровне логики приложения или внутри хранимой процедуры с использованием одной FEDERATED-таблицы

Как еще один вариант - MASTER-MASTER репликация.

Неактивен

 

#3 15.10.2008 22:33:44

Golova
Завсегдатай
Зарегистрирован: 23.03.2007
Сообщений: 92

Re: federated, merge - как собрать несколько таблиц в одну

Спасибо за ответ.
А не в курсе, может собираются релизовать эти два пункта, что я описал, в следующих  версиях MySQL?

Неактивен

 

#4 16.10.2008 02:29:06

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: federated, merge - как собрать несколько таблиц в одну

А как же VIEW над FEDERATED-табличками?

Неактивен

 

#5 16.10.2008 12:37:51

Golova
Завсегдатай
Зарегистрирован: 23.03.2007
Сообщений: 92

Re: federated, merge - как собрать несколько таблиц в одну

а не будет ли VIEW по скорости  уступать MERGE ?
например VIEW задан так:

CREATE ALGORITHM = MERGE VIEW table1_fed_merge AS SELECT * FROM table1_fed, table2;

Т.е. ответ предполагает сравнение MERGE и VIEW для обычных таблиц (не federated), т.к. MERGE(federated) не поддерживается.

хм:
CREATE ALGORITHM = MERGE VIEW table1_fed_merge AS SELECT * FROM table1_fed, table2;
ERROR 1060 (42S21): Duplicate column name 'col1'

это и понятно, ведь я писал: "все указанные таблицы имеют одинаковую структуру(схему)."

а что вы имели ввиду под:

paulus написал:

А как же VIEW над FEDERATED-табличками?

?

Отредактированно Golova (16.10.2008 12:46:45)

Неактивен

 

#6 17.10.2008 15:11:31

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: federated, merge - как собрать несколько таблиц в одну

Брр, видимо, я плохо отличаю очевидное для всех sad

CREATE VIEW twotables AS
SELECT * FROM table1
UNION ALL
SELECT * FROM table2

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson