Использование ORMLite с таблицами MySQL и MyISAM

Драйвер MySQL ORMLite по умолчанию использует таблицы InnoDB. В документации описывается, как настроить его для использования других типов таблиц, но не описываются последствия этого. Имея недавно неудачный опыт работы с InnoDB, я хотел бы перейти на MyISAM, но просто хотел проверить, что все функции ORMLite будут продолжать работать правильно, если я это сделаю, поскольку я знаю, что в MyISAM отсутствуют некоторые функции, поддерживаемые InnoDB. У кого-нибудь есть опыт в этом? Какие-то скрытые проблемы?

(FWIW, я знаю, что мое приложение не нуждается в транзакциях, что является одной из очевидных функций, которые потерпят неудачу)


person Jules    schedule 21.03.2013    source источник


Ответы (1)


Извините, но я понятия не имею о разнице между InnoDB и MyISAM с точки зрения ORM. Я надеюсь, что ORMLite это никак не повлияет. Что тип таблицы является внутренним обозначением MySQL и может повлиять на производительность или поведение запросов.

Вот хорошая таблица различий между двумя типами, которую я приведу здесь.

  1. InnoDB новее, а MyISAM старше.
  2. InnoDB сложнее, а MyISAM проще.
  3. InnoDB более строг в отношении целостности данных, в то время как MyISAM свободен.
  4. InnoDB реализует блокировку на уровне строки для вставки и обновления, а MyISAM реализует блокировку на уровне таблицы.
  5. InnoDB имеет транзакции, а MyISAM — нет.
  6. InnoDB имеет внешние ключи и ограничения отношений, а MyISAM — нет. InnoDB имеет лучшее восстановление после сбоев, в то время как MyISAM плохо восстанавливает целостность данных при сбоях системы.
  7. MyISAM имеет индекс полнотекстового поиска, а InnoDB — нет.

Единственное, что я вижу в этом списке, что влияет на уровень запроса, это то, что MyISAM не поддерживает внешние ключи или ограничения, но ORMLite (по состоянию на 3/2013) их также не поддерживает. MyISAM не поддерживает транзакции, но вы можете совершать вызовы ORMLite без них.

Внезапно я не вижу в этом списке ничего, что могло бы повлиять на ORM. Тем не менее, тестирование было бы хорошей идеей. :-)

person Gray    schedule 21.03.2013
comment
Спасибо. Я постараюсь не забыть дать вам обратную связь, когда у меня будет больше опыта в этом и я узнаю, насколько хорошо это работает. :) - person Jules; 22.03.2013