|
|
|
Синхронизация записи в БД
|
|||
|---|---|---|---|
|
#18+
Добрый день Хочу спросить совета. Нужно синхронизировать запись в БД. В то время пока я роботаю с изменяемыми таблицами, то никакой другой поток не должен их тоже изменять. Я вижу такие варианты 1)Singleton клас. И метод который пишет в БД сделать synchronized 2) Зделать через java.util.concurrent.Executors 3) Синхронизировать на уровне БД (sql isolation level) (не знаю можно ли поставить синхронизацию на несколько SQL запросов к разным таблицам) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 15:08 |
|
||
|
Синхронизация записи в БД
|
|||
|---|---|---|---|
|
#18+
denis111111, транзакции знаешь для чего служат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 15:19 |
|
||
|
Синхронизация записи в БД
|
|||
|---|---|---|---|
|
#18+
вадя, Тоб-то можно поставить уровень изоляции транзакции SERIALIZABLE, начать делать SQL запросы и все? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 15:26 |
|
||
|
Синхронизация записи в БД
|
|||
|---|---|---|---|
|
#18+
denis111111вадя, Тоб-то можно поставить уровень изоляции транзакции SERIALIZABLE, начать делать SQL запросы и все? Для начала нужно иметь понимание что менее строгие уровни изоляции вам почему-то не подходят. Есть куча разных способов решить проблему. Но с начала нужно определится с тем действительно ли есть смысл синхронизировать доступ на уровне БД, а не на уровне Java. Постановка проблемы у вас слишком размытая, поэтому не понятно нужна ли тут пессимистичная блокировка SELECT FOR UPDATE или достаточно обычной транзакционности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 15:30 |
|
||
|
Синхронизация записи в БД
|
|||
|---|---|---|---|
|
#18+
denis111111В то время пока я роботаю с изменяемыми таблицами, то никакой другой поток не должен их тоже изменять. ты же не один. Это идёт вразрез с назначением БД как Многопользовательской. И веб тоже т.к. блокировки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 15:37 |
|
||
|
Синхронизация записи в БД
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Ну вот например есть таблица где записи не должны дублироватся ( есть уникальной ключ для каждой записи) Приходит партия записей для импорта в БД. Я создаю временную таблицу. Пишу новие записи в нее. Через join узнаю каких запсисей нет в системе и пишу их БД. Также мне нужен список дублей что потом отфильтровать остальние сущности для записи в БД Мне кажется тут и нужна синхронизация Можно поставить на ключевое поле что оно уникальное, но тогда если записи будут дублироватся запрос просто не исполнится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 15:52 |
|
||
|
Синхронизация записи в БД
|
|||
|---|---|---|---|
|
#18+
denis111111Можно поставить на ключевое поле что оно уникальное, но тогда если записи будут дублироватся запрос просто не исполнится... В зависимости от базы данных можно использовать запросы которые 1) Будут игнорировать ошибку уникального констрейнта и просто пропускать запросы приводящие к ошибке 2) Проверять наличие ключа в таблице перед вставкой записи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 15:54 |
|
||
|
Синхронизация записи в БД
|
|||
|---|---|---|---|
|
#18+
и для начала надо указать базу, чтоб ответы были более полными ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 15:57 |
|
||
|
Синхронизация записи в БД
|
|||
|---|---|---|---|
|
#18+
вадяи для начала надо указать базу, чтоб ответы были более полными MySQL 5.6 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 16:06 |
|
||
|
Синхронизация записи в БД
|
|||
|---|---|---|---|
|
#18+
для "большей защищённости" от "параллельных обращени" можно испльзовать транзакции в хранимых процедурах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 16:09 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38937301&tid=2125533]: |
0ms |
get settings: |
4ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
65ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 343ms |

| 0 / 0 |
