Уровень изоляции транзакций Массовое количество записей - PullRequest
0 голосов
/ 01 марта 2012

Я могу говорить чепуху, но:

Какой уровень изоляции является «лучшим» для множества потоков, работающих на множестве соединений, выполняющих множество обновлений и записей с использованием транзакций?Или уровни изоляции предназначены только для чтения?

- РЕДАКТИРОВАТЬ СУБД ... InnoDB mysql ... лучше всего ... ну что я хочу - это запускать параллельные транзакции записи / обновления, и, например, если у нас есть два обновленияв той же колонке я не хочу получать проблемы с параллелизмом ...

поэтому параллельные записи / обновления, которые все запускаются с блокировкой базы данных - EDIT После нескольких чтений пришли к такому выводу

http://dev.mysql.com/doc/refman/5.0/en/innodb-lock-modes.html

Таким образом, обновление принимает блокировку строки, а не общую блокировку, поэтому при обновлении не должно быть проблем.Но нужно предварительно проверить, какой поток приходит к блокирующим соединениям .. Поэтому не должно быть одновременных обновлений базы данных в той же строке ... так что

NO:

t1 - T1: update (id 1) 
t2 - T2: update (id 1)

Нужно позаботиться о том, чтобы два потока пришли не для обновления одной и той же строки ... но с точки зрения базы данных, поскольку это InnoDB и имеет самый низкий уровень изоляции READ_UNCOMMITED, не должно быть проблем, с которыми я выйду после обновления послепара мотыльков: D

1 Ответ

1 голос
/ 01 марта 2012

Как правило: чем выше уровень изоляции (чем выше значение, тем больше изоляция), тем больше блокировок и накладных расходов вы получаете. Поэтому, если вы хотите идти как можно быстрее и параллельно, вам не нужна изоляция вообще.

Конечно, это может разрушить вашу бизнес-логику, поэтому я думаю, что действительно нет альтернативы просмотру всех доступных уровней изоляции и проверке их на соответствие вашим требованиям.

...