Допустим, у меня есть около 10 тысяч устройств, и я хочу отслеживать их передачу данных.
CREATE TABLE devices (
id SERIAL PRIMARY KEY,
transfer INT
);
Со времени последнего обновления я хранил (в памяти) карту идентификаторов устройств и их передачу данных. Я хочу периодически записывать эти приращения в свою базу данных каждую минуту или около того.
В данный момент я думаю о создании строки запроса (я использую Go, поэтому fmt.Sprintf
), чтобы она выглядела примерно так:
UPDATE devices SET
transfer = transfer + temp.transfer
FROM (VALUES
(1, 500),
(2, 128),
(3, 204)
) AS temp(id, transfer)
WHERE temp.id = devices.id;
Есть ли лучший способ?