|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
Добрый день. Ситуация следующая. Есть высоконагруженная БД (очень много пользователей, правда объем файла базы всего 60 гигов). Основная логика работы крутится вокруг одной таблицы. Это приходится принимать как данность. Схематично таблица выглядит так: - ID - код записи, формируемый генератором - ORD_ID - код организации - PERFORMER_ID - код исполнителя - DONE_DATE - дата исполнения - DONE_TIME - время исполнения - ну и далее поля данных Т.е. это своего рода список задач для исполнителя на каждый день. Формируется список задач заранее сразу на несколько дней вперед. Задачи могут добавляться даже в день исполнения. Исполнитель сам может добавлять себе задания. Эта таблица есть практически во всех запросах, которые выполняются. Поставлена задача - Сделать нумерацию задач локально для каждого исполнителя. - Каждый день для каждого исполнителя нумерация задач должна начинаться с единицы. - При добавлении новой задачи она получает очередной порядковый номер для этого исполнителя в этот день (ну т.е. max(num) + 1) Может кто подкинуть идею, как это правильнее организовать, чтобы минимизировать тормоза и исключить возможные ошибки в нумерации? Предложение "сказать что это неправильно и не делать" не подходит. Задача поставлена и ее нужно решать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 13:43 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
делай на клиенте, при отображении. хранить такую хрень нет необходимости. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 13:47 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
Мимопроходящий, авторделай на клиенте, при отображении. хранить такую хрень нет необходимости. не вариант, придется хранить в базе, т.к. нумерация должна возрастать в порядке добавления записей в базу. Записи могут удаляться, на этом месте должны образовываться "дырки". Записи могут вставляться в серединку временной цепочки заданий, тогда больший номер должен попасть в середину "дня". Ну и до кучи - к БД подключается несколько разных клиентов. С БД работает слишком много разных приложений, чтобы можно было везде сделать одинаковый алгоритм нумерации. Так что интересует меня именно нумерация записей в самой БД и хранение записей в самой БД, о чем я изначально и спросил. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 13:58 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
imkot, непонятно, в чем проблема, даже если и хранить эти номера на сервере. ИД задачи же локальный для конкретного пользователя, так что действительно max(n) +1 вполне рабочее решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 13:58 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
imkotПоставлена задача - Сделать нумерацию задач локально для каждого исполнителя. - Каждый день для каждого исполнителя нумерация задач должна начинаться с единицы. - При добавлении новой задачи она получает очередной порядковый номер для этого исполнителя в этот день (ну т.е. max(num) + 1)В лоб - заведи таблицу с (user_name, day, tasknum) и инкрементируй tasknum для конкретного (user_name, day). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:05 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
kdv, а что мне делать когда два клиента "одновременно" добавляют записи в одно расписание? max(N)+1 сделает ведь один и тот же номер для двух разных записей. Код: sql 1. 2. 3. 4. 5. 6.
В первой транзакции Код: sql 1. 2.
Во второй транзакции Код: sql 1. 2.
Коммичу обе транзакции. Получаю в таблице Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:07 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
таблица календарь на пару день-юзер роботом назначать начальное значение на месяц вперед, а далее банальный мах+1 с блокировкой на запись. Не вижу проблемы, типовая задача, которую надо сесть и запрограммировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:13 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
26.10.2017 14:07, imkot пишет: > В первой транзакции > insert into A(N) никаких инсёртов! только апдейты с no_record_version. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:15 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
Мимопроходящийтолько апдейты с no_record_version.и логика на клиенте с несколькими попытками обработки блокировок. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:17 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
hvlad, Да. Я думаю в эту сторону. Создать "свой генератор". Работу с такой таблицей мне придется делать в Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:17 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
imkot, см выше - либо rc+no_rec_ver, либо snapshot. Кроме того, я бы использовал Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:21 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
Вернее параметр NO_REC_VERSION. Ошибся в предыдущем ответе Владу. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:23 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
imkotа что мне делать когда два клиента "одновременно" добавляют записи в одно расписание? Для начала - ничего. Собери статистику как часто это происходит и происходит ли вообще. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:24 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
hvladimkot, см выше - либо rc+no_rec_ver, либо snapshot. Кроме того, я бы использовал Код: sql 1. 2. 3.
Значит все же так. Думаю что я получил ответ на свой вопрос. Спасибо всем за советы. PS: Такой подход у меня уже используется, но на менее востребованной таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:30 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
в таком виде не решена задача вставки номера "между существующими" Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:32 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovimkotа что мне делать когда два клиента "одновременно" добавляют записи в одно расписание? Для начала - ничего. Собери статистику как часто это происходит и происходит ли вообще. К сожалению происходит. И чаще чем хотелось бы :( Ладно, можно закрыть тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:33 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
МП> в таком виде не решена задача вставки номера "между существующими" В смысле? Между номерами 3 и 4 вставить "три с чучуткой"? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:38 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
26.10.2017 14:38, Гаджимурадов Рустам пишет: > Между номерами 3 и 4 вставить "три с чучуткой"? ага. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:40 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
Мимопроходящийв таком виде не решена задача вставки номера "между существующими" Я наверное неверно выразился. Есть задачи 09:00 - №1 10:00 - №2 11:00 - №3 Если мы добавляем задачу на 09:30, то она будет №4. Номер не должны двигаться. А если удаляем задачу на 10:00, то будет "дырка" в нумерации. Т.е. нужно решение со своим генератором. Изначально в задаче про генератор умолчал намеренно, чтобы услышать возможные решения. Вдруг есть что-то очень простое и эффективнное. Но раз меня все начали тыкать носом в обновление с блокировкой, значит ничего лучшего нет. PS. Есть много чего, что надо бы сделать в БД и инфраструктуре в целом, но к сожалению приходится заниматься вот такими вот задачами :( ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:41 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
26.10.2017 14:41, imkot пишет: > Есть задачи > 09:00 - №1 > 10:00 - №2 > 11:00 - №3 > > Если мы добавляем задачу на 09:30, то она будет №4. Номер не должны двигаться. > А если удаляем задачу на 10:00, то будет "дырка" в нумерации. и нафига козе баян? смысл в такой "нумерации", если после 2 идёт 4, а после неё 3 Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:42 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
imkotА если удаляем задачу на 10:00, то будет "дырка" в нумерации. ну например задачу можно не удалять, а отменять ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:44 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
imkot> А если удаляем задачу на 10:00, то будет "дырка" в нумерации. Что потом вы с этой дыркой делать собираетесь (гусары, молчать!) ? Присвоить её номер другой записи (событию) ? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:49 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
imkotа что мне делать когда два клиента "одновременно" добавляют записи в одно расписание? ну что за фигня, честное слово. Два клиента, два исполнителя, и прочее, НЕ МОГУТ добавлять задания в расписания одному и тому же человеку. Таблица ID_человека и номер_задания - номер задания можно делать сколь угодно последовательным для одного ID_человека, никаких проблем. imkotТ.е. нужно решение со своим генератором. да нафиг. N людей, а генератор один? N генераторов? Либо вы задачу неправильно описали, либо вы вместо простого решения начинаете что-то сложное выдумывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:55 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
kdv> ну что за фигня, честное слово. Два клиента, два исполнителя, и прочее, kdv> НЕ МОГУТ добавлять задания в расписания одному и тому же человеку. Ты это с прикладной т.з. такое утверждаешь или с технической? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 15:04 |
|
Нумерация записей в таблице каждый день начиная с 1-цы
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустамimkot> А если удаляем задачу на 10:00, то будет "дырка" в нумерации. Что потом вы с этой дыркой делать собираетесь (гусары, молчать!) ? Присвоить её номер другой записи (событию) ? Нет, так и останется дыра на этом месте. Тут уж я не властен что-то менять. За что купил, за то и продаю. Это не самое интересное требование. Бывает все намного веселее. Бюджетная сфера она такая... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 15:10 |
|
|
start [/forum/topic.php?fid=40&fpage=39&tid=1561362]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 136ms |
0 / 0 |