1.
z tego, co przeczytałem, haszuje zapytanie i przechowuje je w DB, zapisując tekst w FS. Więc następny problem jest bardziej oczekiwany niż przeciążenie pamięci współdzielonej:
hash tekstu jest o wiele mniejszy niż tekst, więc myślę, że nie powinieneś martwić się zużyciem pamięci rozszerzenia porównując długie zapytania. Zwłaszcza wiedząc, że rozszerzenie korzysta z analizatora zapytań (który będzie działał dla KAŻDEGO zapytanie WSZYSTKO ):
Ustawienie pg_stat_statements.max
10 razy większy powinien zajmować 10 razy więcej pamięci współdzielonej, jak sądzę. Wzrosty powinny być liniowe . Nie jest to napisane w dokumentacji , ale logicznie powinno tak być.
Nie ma odpowiedzi, czy jest to bezpieczne, czy nie, aby ustawić ustawienie na odrębną wartość, ponieważ nie ma danych o innych wartościach konfiguracyjnych i posiadanym HW. Ale ponieważ wzrost powinien być liniowy, rozważ tę odpowiedź:„jeśli ustawisz ją na 5 KB, a czas wykonywania zapytań nie urósł prawie nic, ustawienie go na 50 KB przedłuży go prawie nic razy dziesięć”. BTW, moje pytanie - kto wykopie 50000 powolnych stwierdzeń? :)
2.
To rozszerzenie wykonuje już agregację wstępną dla instrukcji „z pominięciem wartości”. Możesz wybrać go bezpośrednio w DB, więc przeniesienie danych do innej bazy danych i wybranie jej tam da ci tylko korzyść z wyładowania oryginalnej bazy danych i załadowania innej. Innymi słowy, oszczędzasz 50 MB na zapytanie o oryginał, ale wydajesz tyle samo na inne. Czy ma sens? Dla mnie tak. To właśnie robię sam. Ale zapisuję również plany wykonania dla instrukcji (które nie jest częścią rozszerzenia pg_stat_statements). Wierzę, że to zależy od tego, co masz i co masz. Zdecydowanie nie ma takiej potrzeby tylko ze względu na ilość zapytań. Znowu, chyba że masz tak duży plik, że rozszerzenie może