Почему в следующем коде используется 1,2 ГБ памяти? Я ожидал, что использование памяти будет относительно плоским, независимо от числа, переданного в generate_series, но оно неуклонно растет. Пожалуйста, скажи мне, что я делаю что-то неправильно!Libpq использует большой объем памяти для простого примера
if (!PQsendQuery(conn, "select generate_series(1, 10000000)"))
exit(1);
int i, value;
while (res = PQgetResult(conn)) {
for (i = 0; i < PQntuples(res); i++) {
value = atoi(PQgetvalue(res, i, 0));
}
PQclear(res);
}
printf("%d\n", value);
PQfinish(conn);
Я поместил полный исходный код этого примера на pastebin.
Похоже, это было исправлено в 9.2: http://www.postgresql.org/docs/9.2/static/libpq-single-row-mode.html –
Кажется, что это «psql», который [питается памятью ] (http://www.postgresql.org/message-id/[email protected]), пока он не вернет весь результат при выигрании. попробуйте использовать '\ set FETCH_COUNT 1000', например. – Houari
'for (i = 0; i
wildplasser