| From: | "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org> |
|---|---|
| To: | pgsql-ru-general(at)postgresql(dot)org |
| Subject: | Номер правки записи |
| Date: | 2015-06-08 11:49:39 |
| Message-ID: | 20150608114939.GV19139@vdsl.uvw.ru |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-ru-general |
Есть табличка
orders: id, col1, col2, ...
И есть код в виде n клиентов, находящийся в разных репозитариях
которые эту табличку модифицируют
каждый модифицирует что-то свое вроде
UPDATE
orders
SET
col1 = bla
WHERE
id = 123
Далее хочется подвести статистику сколько раз в среднем каждый order
за период своей жизни модифицируется.
Для этого вводим столбик:
ALTER TABLE orders ADD COLUMN "version" INTEGER NOT NULL DEFAULT 0;
И далее надо пройтись по всем запросам UPDATE и расставить в SET
, version = version + 1
Все вроде просто, но после того как статистика будет снята это все
хочется обратно убрать итп.
то есть код на несколько недель.
вопрос а как эту задачу решить средствами БД?
то есть решить так чтобы не увеличивать нагрузку?
добавление оператора в SET считаем что нагрузку не увеличивает.
а дополнительный запрос увеличивает.
триггеры тут вроде не подходят (потому что модифицируется та же
запись, на которой триггер, плюс нагрузка)
что еще можно придумать?
--
. ''`. Dmitry E. Oboukhov
: :’ : email: unera(at)debian(dot)org jabber://UNera(at)uvw(dot)ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
| From | Date | Subject | |
|---|---|---|---|
| Next Message | 2015-06-08 12:54:04 | Re: [pgsql-ru-general] Номер правки записи | |
| Previous Message | Oleg Bartunov | 2015-06-04 09:39:30 | Re: [pgsql-ru-general] Re: [pgsql-ru-general] Переезд на новый сервер без простоя, посоветуйте |