|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
Смотрите господа и товарищи Есть таблица и есть желание получать из нее количество записей- назовем ето счетчиком собственно выглядит все просто - берем селект каунт и записываем значение в дто но каждый раз делать такие селекты я не хочу ,поэтому я кеширую этот счетчик и тут вопрос нужна ли тут тред сейф коллекция - concurrentHashMap,если значение все равно выгребается из бд,а как я понимаю на стороне бд с тред сейвом все норм .Счетчик инвалидируется при новой записи/удалении,но как я понял из документации метод put все равно будет не синхронизирован и два потока смогут теоретически записать в какой то момент одинаковые ключи поэтому вопрос философский тут больше - наверно все таки тред сейф колекция тут будет бесполезна без synhronized блоков стоит отметить что этот метод дергается контроллером - контроллер обычный ,не реактивный. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 18:09 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
asv79, зачем тебе коллекция-то? Несколько счетчиков чтоли? https://www.pixelstech.net/article/1585457836-Why-accessing-Java-HashMap-may-cause-infinite-loop-in-concurrent-environment ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 18:26 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
asv79, В чем проблема? Ну пишите/читайте значения кеша в synchronize блоке. А так зачем изобретать велосипед, когда в Spring есть аннотации для кеширования?! @Cacheable <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 18:36 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
Андрей Панфилов asv79, зачем тебе коллекция-то? Несколько счетчиков чтоли? https://www.pixelstech.net/article/1585457836-Why-accessing-Java-HashMap-may-cause-infinite-loop-in-concurrent-environment да,это грубо говоря группа - а счетчик - количество человек в ней.А групп там много и на каждую нужно отображать текущее количество человек в ней. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 18:47 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
mad_nazgul asv79, В чем проблема? Ну пишите/читайте значения кеша в synchronize блоке. А так зачем изобретать велосипед, когда в Spring есть аннотации для кеширования?! @Cacheable <:o) Я чо то не оддуплил как тут @Cacheble прикрутить ,но я пытался ,щас попробую еще раз) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 18:49 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
asv79, Нужно чтобы правильно работали транзакции в многопользовательской среде. - юзверь А добавил 3 товара но не закоммитил - юзверь Б удалил 10 товаров. Сколько счетчик? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 18:55 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, Нужно чтобы правильно работали транзакции в многопользовательской среде. - юзверь А добавил 3 товара но не закоммитил - юзверь Б удалил 10 товаров. Сколько счетчик? так как источником правды у нас является бд,то товаров будет -10 транзакции работают правильно и с этим все норм ,меня интересует лишь вопрос какую мапу использовать конкуретную - но в ней один хрен пут/гет не конкурентны либо обычную ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 18:59 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
asv79, Если ничего не трогать, то действительно, бери себе из бд В ЛЮБОМ ПОТОКЕ твой count и никаких ошибок. За этим следит СУБД. А вот раз ты придумал велосипед, то много чего надо продумать. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 18:59 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
asv79 PetroNotC Sharp asv79, Нужно чтобы правильно работали транзакции в многопользовательской среде. - юзверь А добавил 3 товара но не закоммитил - юзверь Б удалил 10 товаров. Сколько счетчик? так как источником правды у нас является бд,то товаров будет -10 транзакции работают правильно и с этим все норм ,меня интересует лишь вопрос какую мапу использовать конкуретную - но в ней один хрен пут/гет не конкурентны либо обычную Странный вопрос. Мапа это Key=value А count ОДНО ЧИСЛО. Причем мапа? У тебя всегда мысли бегут впереди рта. Ты еще все всем тут не объяснил и думаешь что все все поняли. Счас ddl начну просить)))) Чем запрос не устроил? Он ВСЕГДА актуальный? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:05 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, Если ничего не трогать, то действительно, бери себе из бд В ЛЮБОМ ПОТОКЕ твой count и никаких ошибок. За этим следит СУБД. А вот раз ты придумал велосипед, то много чего надо продумать. почему же велосипед? вполне себе нормальная практика- зачем мне ,если я точно знаю,что состояние не менялось - делать лишний запрос в бд- это дорого очень кеширование тут само собой напрашивается ,вопрос лишь в реализации ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:05 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79 пропущено... так как источником правды у нас является бд,то товаров будет -10 транзакции работают правильно и с этим все норм ,меня интересует лишь вопрос какую мапу использовать конкуретную - но в ней один хрен пут/гет не конкурентны либо обычную Странный вопрос. Мапа это Key=value А count ОДНО ЧИСЛО. Причем мапа? У тебя всегда мысли бегут впереди рта. Ты еще все всем тут не объяснил и думаешь что все все поняли. Счас ddl начну просить)))) Чем запрос не устроил? Он ВСЕГДА актуальный? петро ты опять не прочитал тему- счетки идут на группы в которых есть люди) групп много ,соотвественно ключом мапы является id группы,значением счетчик ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:06 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
asv79, >так как источником правды у нас является бд,то товаров будет -10 = угу. А в кеше ппотухшем не - 10 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:06 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
asv79 PetroNotC Sharp asv79, Если ничего не трогать, то действительно, бери себе из бд В ЛЮБОМ ПОТОКЕ твой count и никаких ошибок. За этим следит СУБД. А вот раз ты придумал велосипед, то много чего надо продумать. почему же велосипед? вполне себе нормальная практика- зачем мне ,если я точно знаю,что состояние не менялось - делать лишний запрос в бд- это дорого очень кеширование тут само собой напрашивается ,вопрос лишь в реализации ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:09 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
asv79 PetroNotC Sharp пропущено... Странный вопрос. Мапа это Key=value А count ОДНО ЧИСЛО. Причем мапа? У тебя всегда мысли бегут впереди рта. Ты еще все всем тут не объяснил и думаешь что все все поняли. Счас ddl начну просить)))) Чем запрос не устроил? Он ВСЕГДА актуальный? петро ты опять не прочитал тему- счетки идут на группы в которых есть люди) групп много ,соотвественно ключом мапы является id группы,значением счетчик ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:10 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, >так как источником правды у нас является бд,то товаров будет -10 = угу. А в кеше ппотухшем не - 10 так чтобы он не протухал его надо инвалидировать при инсерт/делете ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:10 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79 пропущено... почему же велосипед? вполне себе нормальная практика- зачем мне ,если я точно знаю,что состояние не менялось - делать лишний запрос в бд- это дорого очень кеширование тут само собой напрашивается ,вопрос лишь в реализации состояние меняется при каждой транзакции- если был апдейт/делит ,ты верно уловил направление - но эти инсерты делаются батчем в рамках одной транзакции - тоесть если накинули 1 к - то и счетчки вырастет на 1к и на методах инсерта /делета у меня этот кеш инвалидируется - так что тут все в порядке ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:15 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
asv79 PetroNotC Sharp asv79, >так как источником правды у нас является бд,то товаров будет -10 = угу. А в кеше ппотухшем не - 10 так чтобы он не протухал его надо инвалидировать при инсерт/делете Как? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:15 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
asv79, Ты явно забыл про пакетный insert и каскад)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:17 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79 пропущено... петро ты опять не прочитал тему- счетки идут на группы в которых есть люди) групп много ,соотвественно ключом мапы является id группы,значением счетчик не тормоза мне не нужны- с мапой все работает супер быстро ,тут вопрос лишь в конкуретности ,сейчас у меня там конкарент мапа- я думаю нужна ли она мне ,если верить докам некторые из ее методов не трейд сейф,хотя работает она так же быстро ,как и обычная мапа ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:17 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
asv79, > с мапой все работает супер быстро , = но протухает и нет конкурентного доступа)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:19 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
asv79, Возьми готовое. Кеш второго уровня хибера ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:21 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, > с мапой все работает супер быстро , = но протухает и нет конкурентного доступа)))) но запись неконкурента я не хочу тащить в код синхронайзед блоки ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:25 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
asv79, Я спросил как он не протухает на insert into from (select....) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:27 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, Возьми готовое. Кеш второго уровня хибера у нас хелелькаст на проекте ,но не хочу туда простой счетчик писать - я думаю что для этого подойдет именно хешмапа - самое дешевое и быстрое решение ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:29 |
|
Тема чтобы потрындеть
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, Я спросил как он не протухает на insert into from (select....) я ж тебе ответил на методах инсерта /делита кеш инвалидируется тоесть я заново делают селект каунт и пучу это в мапу - перезаписывая текущее значение но надо понимать что такие манипуляции у нас достаточно редки ,в основном идет запрос на получение и вот тут кеш и будет работать ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:32 |
|
|
start [/forum/topic.php?fid=59&msg=40079962&tid=2120411]: |
0ms |
get settings: |
17ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
34ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
402ms |
get tp. blocked users: |
0ms |
others: | 385ms |
total: | 850ms |
0 / 0 |