Являются ли параллельные вставки SQL в одну таблицу транзакционно безопасными? - PullRequest
1 голос
/ 05 февраля 2009

У меня есть простая таблица в MySql, смысл которой - хранить логи. Таблица имеет автоинкрементную последовательность, а все остальные столбцы имеют нулевую ссылочную целостность с другими таблицами. В столбцах нет уникальных ключей или индексов. Столбец с автоинкрементом является первичным ключом.

Будут ли параллельные вставки когда-либо мешать друг другу? Я определяю помехи как потерю данных.

Я использую autocommit = true для этой вставки.

Ответы [ 3 ]

3 голосов
/ 05 февраля 2009

Вы никогда не потеряете данные только потому, что делаете одновременные вставки. Если вы используете транзакции, вы можете «потерять» некоторые идентификаторы, но не фактические данные. (Представьте, что вы запускаете транзакцию, вставляете несколько строк, а затем выполняете откат. InnoDB выделит идентификаторы auto_increment, но строк с этими идентификаторами нет, поскольку вы выполняли откат).

Поскольку вам не нужны индексы, вы должны взглянуть на механизм таблиц ARCHIVE. Это невероятно быстро - и ваши таблицы становятся намного меньше, что, в свою очередь, делает сканирование таблицы, когда вы читаете таблицу позже НАМНОГО быстрее.

2 голосов
/ 05 февраля 2009

Из руководства MySQL для движка хранения MyISAM :

"MyISAM supports concurrent inserts..."
2 голосов
/ 05 февраля 2009

Да. Для InnoDB, больше информации здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...