Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Смешивание типов таблиц MyISAM и InnoDB
 
 автор: Gendalf   (10.11.2009 в 02:16)   письмо автору
 
 

Здраствуйте, возможно ли смешивание таблиц в одном запросе с разными типами?
т.е. есть таблица user тип InnoDB и таблица posts с типом MyISAM. Можно ли делать типа такого
SELECT * FROM users u INNER JOIN posts p ON u.id_user = p.id_user

Проблема в том что хочу хранить критичные данные в InnoDB, а не сильно важные в MyISAM.
Но задумался над тем, что будет происходить, когда таблицы пересекаются. Как будет себя вести индексация и прочее?

  Ответить  
 
 автор: Trianon   (10.11.2009 в 02:39)   письмо автору
 
   для: Gendalf   (10.11.2009 в 02:16)
 

индексация никуда не денется.
транзакции уйдут.
Ограничения чужого ключа будут доступны только на InnoDB
Полнотекстовый поиск - только на MyISAM

  Ответить  
 
 автор: Gendalf   (10.11.2009 в 03:03)   письмо автору
 
   для: Trianon   (10.11.2009 в 02:39)
 

т.е. при таком запросе индексы все равно будут использоваться?
И вобще так делают на практике? смешивание типов... Просто отказаться от MyISAM нельзя, но хочется и InnoDB использовать для некоторых частей.

  Ответить  
 
 автор: Valick   (10.11.2009 в 09:56)   письмо автору
 
   для: Trianon   (10.11.2009 в 02:39)
 

транзакции уйдут.
совсем? или так же как и ключ только на InnoDB будут доступны

  Ответить  
 
 автор: Trianon   (10.11.2009 в 12:16)   письмо автору
 
   для: Valick   (10.11.2009 в 09:56)
 

а как Вы представляете себе откат транзакции в запросе
UPDATE 
   InnoDB_table i 
    JOIN MyISAB_table m ON i.m_id = m.i_id 
  SET 
    i.cnt = i.cnt + 1, 
    m.cnt = m.cnt + 1
  WHERE i.key = 'ikey' AND m.key = 'mkey'

  Ответить  
 
 автор: Valick   (10.11.2009 в 12:38)   письмо автору
 
   для: Trianon   (10.11.2009 в 12:16)
 

я имел ввиду запросы без таблиц MyISAM

  Ответить  
 
 автор: Trianon   (10.11.2009 в 13:21)   письмо автору
 
   для: Valick   (10.11.2009 в 12:38)
 

тогда какое же это смешение?

  Ответить  
 
 автор: Valick   (10.11.2009 в 13:27)   письмо автору
 
   для: Trianon   (10.11.2009 в 13:21)
 

ну я так понял, автор спрашивал про смешивание (содержание) таблиц InnoDB и MyISAM в одной базе данных и возможность их объединения в одном запросе.
Вопрос про транзакции возник по ходу дела. В общем я и хотел узнать, то что наличие таблицы MyISAM в базе, никак не отразиться на транзакциях если в запросе используется только таблица InnoDB

  Ответить  
 
 автор: Trianon   (10.11.2009 в 22:57)   письмо автору
 
   для: Valick   (10.11.2009 в 13:27)
 

Хорошо. Как исполнять такое?

BEGIN TRAN;
INSERT INTO MyISAM_table (x) VALUES (1);
INSERT INTO InnoDB_table (y) VALUES (2);
ROLLBACK;

  Ответить  
 
 автор: Gendalf   (11.11.2009 в 00:22)   письмо автору
 
   для: Trianon   (10.11.2009 в 22:57)
 

та ладно, тут по логике вещей итак видно, что если не было в MyISAM транзакций, то их и не будет ))
мне больше SELECT интересует, индексы используются и поступают ли так в реальных условиях

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования