Hibernate @DynamicUpdate - PullRequest
       2

Hibernate @DynamicUpdate

0 голосов
/ 13 июня 2018

В нашей системе есть таблица «A», которая имеет около 120 столбцов (я знаю, что таблица не нормализована, и нормализация таблицы существует в качестве элемента невыполненной работы в нашей дорожной карте).

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

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

Но я читал, что hibernate кэши вставляют, обновите sql для таблицы со всеми столбцами, если динамическое обновление отсутствует.

Итак, будет ли использование @DynamicUpdate здесь на самом деле выгодно или затраты на генерацию динамического sql во время выполнения приведут к снижению производительности?

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

1 Ответ

0 голосов
/ 15 июня 2018

Я обязательно порекомендую вам @DynamicUpdate.И позвольте мне объяснить, почему:

a) Производительность БД: уменьшая количество столбцов для обновления, вы сокращаете накладные расходы сервера БД для проверки ссылочной целостности и ограничений для каждого столбца (первичный ключ, внешний ключ,Уникальный ключ (не нулевой и т. Д.), А также для обновления соответствующих индексов, включающих обновленный столбец.

b) Вы тратите время только на пересоздание кэшированного плана запросов каждый раз, но для многопоточной среды помните, что он не заставитРазница в том, что кэшированные планы запросов действительны только до заданного срока действия сеанса и, следовательно, полезны только для последовательных обновлений в одном сеансе БД.

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