|
Использование пулла значений
|
|||
---|---|---|---|
#18+
День добрый. есть табличка пул ID / KEY / DT_USE ключ используется один раз и отмечаем что он юзанный. все было отлично их использовали с одного рабочего места. теперь обращение к табличке с нескольких мест, бывает одновременно, и естественно получаем деадлок транзакция которая лезет в табличку живет до минуты, обычно меньше (так нужно по процессу) вопрос как грамотно перепроектировать логику работы (или может работу транзакций, но блокировать всю таблицу на минуту не хорошо) чтоб избавится от деадлоков ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2016, 12:27 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
сервер 2,5 будет переход на 3,0 если это имеет значение. пока писал, придумал что можно использовать отдельный генератор, который будет показывать на последнюю не использованную запись в таблице. правда в случае отмены транзакции, теряем один ключ. что не очень критично, но не хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2016, 12:32 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
Игорь16транзакция которая лезет в табличку живет до минуты, обычно меньше (так нужно по процессу) Значит придётся изменить процесс так, чтобы ключ получался отдельной транзакцией которая гораздо короче. Или проанализировать зачем вообще этот ключ нужен и избавиться от него. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2016, 12:35 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
Игорь16, Прочитай о пессимистических блокировках записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 08:56 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
Игорь16, что мешает получать ключ другой транзакцией (короткой), при том, что первая транзакция будет продолжать висеть до минуты по бизнес логике? В таблицу ключей можно добавить поле TIMESTAMP и получать ключ короткой транзакцией из ХП примерно следующего вида: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
Подтверждение использования: Код: plsql 1. 2. 3. 4.
(не забыть поймать и проверить affected rows) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 10:16 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 10:37 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
хрень Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 11:26 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
Мимопроходящий, аргументируй. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 12:15 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
rdb_dev, Ты сам то свой способ пробовал? Начнём с того что процедура getKey не скомпилируется в принципе. Следующий блок в купе с автономкой это просто лютый ... Ну и попытка использовать время в качестве критерия в многопользовательской среде тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 12:37 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
Симонов ДенисНачнём с того что процедура getKey не скомпилируется в принципе.Что именно тебя смущает в процедуре? Симонов ДенисСледующий блок в купе с автономкой это просто лютый ...Чем? Тем, что автономная транзакция подтверждается до подтверждения родительской? Это нормальное поведение для автономной транзакции. Симонов ДенисНу и попытка использовать время в качестве критерия в многопользовательской среде тоже.Не время, а пара Id+TmStmp. Штамп времени, в этом случае, используется для отлова "блокированных", но неиспользованных ключей, которые могут появиться при внештатно завершенных (в разрезе бизнес логики) транзакциях. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 13:00 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
не люблю школьников Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 13:09 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
rdb_devЧто именно тебя смущает в процедуре? попыткой использовать ROWS там где должен быть FIRST FOR SELECT + UPDATE + SUSPEND тоже не хорошо Код: sql 1.
проверять IS NOT NULL и сравнивать со значением одновременно абсолютно бессмысленно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 13:16 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
Симонов Дениспопыткой использовать ROWS там где должен быть FIRSTЦитата из Руководства по языку СУБД Firebird: Внимание! FIRST и SKIP используются только в Firebird, они не включены в стандарт SQL. Рекомендуется использовать ROWS везде, где это возможно. Симонов ДенисFOR SELECT + UPDATE + SUSPEND тоже не хорошоНе согласен. Оператор "SELECT" с "FOR UPDATE WITH LOCK", блокирующий необходимую запись до её фактического изменения, вполне "комильфо". Симонов Денис Код: sql 1.
проверять IS NOT NULL и сравнивать со значением одновременно абсолютно бессмысленно.Согласен, но ошибки нет. AND в FirebirdSQL является "ленивой" операцией? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 13:33 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
Мимопроходящийне люблю школьниковНуждаешься в моем сочувствии? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 13:40 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
Симонов Дениспопыткой использовать ROWS там где должен быть FIRST Я всю жизнь считал, что first и rows эквивалентны, только first - более ранний ФБ-шный вариант синтаксиса, а rows - стандарт. Разве не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 14:00 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
miwaonline, да что же вы такие невнимательные сегодня. Где должен быть ROWS? Правильно в самом конце оператора SELECT обычно сразу после ORDER BY. А где FIRST? Сразу же после ключевого слова SELECT. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 14:06 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
Автономные транзакции? Таймштампы? Больше ада! Ещё совсем недавно школьники решали проблему блокировки записи обычным уникальным индексом (для обеспечения видимости в любой транзакции) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 14:10 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
WildSeryЕщё совсем недавно школьники решали проблему блокировки записи обычным уникальным индексом (для обеспечения видимости в любой транзакции)И?... Какая постановка задачи, такая и реализация. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 14:13 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
rdb_devЦитата из Руководства по языку СУБД Firebird: Внимание! FIRST и SKIP используются только в Firebird, они не включены в стандарт SQL. Рекомендуется использовать ROWS везде, где это возможно. Читай ещё раз. Ошибка в синтаксисе. FIRST и ROWS абсолютно равноправны. И тот и другой не по стандарту. Это предложение более или менее справедливо для 2.5. Взято из LRU, когда авторы были уверены что это соответствует стандарту. На самом деле в стандарте оно появилось довольно поздно (ЕМНИП SQL:2008). По стандарту появилось только в 3.0 и в доке по 3.0 я эту фразу переписал. Кому интересно по стандарту так: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 14:14 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
rdb_devКакая постановка задачи, такая и реализация. Вот что-то сомневаюсь, что у тебя другая реализация бывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 14:16 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
Симонов ДенисЧитай ещё раз. Ошибка в синтаксисе. FIRST и ROWS абсолютно равноправны. И тот и другой не по стандарту. Это предложение более или менее справедливо для 2.5. Взято из LRU, когда авторы были уверены что это соответствует стандарту. На самом деле в стандарте оно появилось довольно поздно (ЕМНИП SQL:2008). По стандарту появилось только в 3.0 и в доке по 3.0 я эту фразу переписал.Ошибки в синтаксисе легко отлавливаемы, а смысл остается прежним. Не придирайся. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 14:22 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
Симонов Денисда что же вы такие невнимательные сегодня. :-[ Могу только сказать, что в код rdb_dev я не всматривался, больше интересовала реакция на него :) Симонов ДенисВзято из LRU, когда авторы были уверены что это соответствует стандарту. На самом деле в стандарте оно появилось довольно поздно (ЕМНИП SQL:2008). По стандарту появилось только в 3.0 и в доке по 3.0 я эту фразу переписал. Кому интересно по стандарту так Вот ведь блин... век живи - век учись :/ ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 14:23 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
WildSeryВот что-то сомневаюсь, что у тебя другая реализация бывает.У меня всякая реализация бывает... Чем эта плоха? Может, я что-то не учел? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 14:24 |
|
Использование пулла значений
|
|||
---|---|---|---|
#18+
miwaonline, ну вот так вот получилось. Теперь к Firebird 3.0 у нас три конструкции которые выполняют почти одно и то же. Причём каждая со своими преимуществами и недостатками. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2016, 14:33 |
|
|
start [/forum/topic.php?fid=40&msg=39258240&tid=1562121]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 18ms |
total: | 166ms |
0 / 0 |