Size: a a a

pgsql – PostgreSQL

2021 March 07

M

Maxim in pgsql – PostgreSQL
Yaroslav Schekin
> Я говорил что было бы удобней если библиотека клиента постгрес определяла свою timezone автоматический.

А Вы знаете, что "библиотек клиента постгрес" гораздо больше одной?
Т.е. чуть ли не для каждого ЯП есть своя реализация протокола postgres ("с нуля").
И что там авторы (зачастую не имеющие никакого отношения к проекту postgres!) написали — откуда нам знать?

> Вы говорите что это магия, но не пояснили почему.

Да, некоторые клиенты используют libpq, и только на них можно как-то повлиять (переменной окружения, как Вы и нашли).
Но толку развивать эту тему, если (почти) все остальные клиентские API эти переменные, естественно, игнорируют?

Т.е., собственно, поэтому. Заставить изменить time zone библиотеку, которая ничего знать не знает ни о каких переменных окружения (а может, и вообще не поддерживает параметры соединения), можно только магией, никак иначе (если в её исходники не лезть). ;)

> Например почему нельзя использовать данный подход ?

Используйте. Вот Вы на каком языке пишете / каким клиентским API пользуетесь?
libpgxx
источник

ik

ilya krasnoperov in pgsql – PostgreSQL
Народ подскажите что за функция такая, найти никак не могу- sungero_system_getversion()
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Maxim
Мне казалось что большенство реализаций основано на libpq
Я не считал, каких сейчас больше, если честно (да и зачем бы?). ;)

А, и вот ещё что (забыл), про "скрытые проблемы".
1. PostgreSQL — кроссплатформенная штука, т.е. клиент может выполняться на Micro$oft... guess what? ;) А там IANA timezone names не используются, и получается вот такая "радость": https://stackoverflow.com/questions/17348807/how-to-translate-between-windows-and-iana-time-zones
2. Если бы так работало, то нужно было бы аккуратно обращаться с явным указанием её клиентской программой (чтобы не "перебить", когда не надо).
источник

M

Maxim in pgsql – PostgreSQL
Yaroslav Schekin
Я не считал, каких сейчас больше, если честно (да и зачем бы?). ;)

А, и вот ещё что (забыл), про "скрытые проблемы".
1. PostgreSQL — кроссплатформенная штука, т.е. клиент может выполняться на Micro$oft... guess what? ;) А там IANA timezone names не используются, и получается вот такая "радость": https://stackoverflow.com/questions/17348807/how-to-translate-between-windows-and-iana-time-zones
2. Если бы так работало, то нужно было бы аккуратно обращаться с явным указанием её клиентской программой (чтобы не "перебить", когда не надо).
Да, я тоже про это подумал, но раз другие базы реализовали в своих клиентах, думал есть некий общий подход как это решить …
источник

VY

Victor Yegorov in pgsql – PostgreSQL
ilya krasnoperov
Народ подскажите что за функция такая, найти никак не могу- sungero_system_getversion()
она не относится к Postgres-у
источник

ik

ilya krasnoperov in pgsql – PostgreSQL
Victor Yegorov
она не относится к Postgres-у
странно но запрос через pgadmin прилетает такой
источник

ik

ilya krasnoperov in pgsql – PostgreSQL
Victor Yegorov
она не относится к Postgres-у
[Переслано от ilya krasnoperov]
SELECT * FROM sungero_system_getversion()
источник

VY

Victor Yegorov in pgsql – PostgreSQL
ilya krasnoperov
странно но запрос через pgadmin прилетает такой
значит это что-то специфическое для вашей базы
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
Victor Yegorov
в версии для 9.6 есть полностью противоположный оригиналу перевод.
сравните второй абзац, последнюю строчку ( на Следует отметить… )
- https://www.postgresql.org/docs/9.6/runtime-config-resource.html#GUC-TEMP-FILE-LIMIT (оригинал)
- https://postgrespro.ru/docs/postgrespro/9.6/runtime-config-resource#idp32812
- https://postgrespro.ru/docs/postgrespro/13/runtime-config-resource#id-1.6.5.7.3.2.1.1.3
Помнится, там была кнопка «сравнить». Когда в двух колонках перевод и оригинал.
источник

ik

ilya krasnoperov in pgsql – PostgreSQL
Victor Yegorov
значит это что-то специфическое для вашей базы
ладно спс буду разбиратсо
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Maxim
Да, я тоже про это подумал, но раз другие базы реализовали в своих клиентах, думал есть некий общий подход как это решить …
Ну вот это, видимо, и "подход". :(
Т.е. было бы [очень] много кода (за актуальностью которого, к тому же, кто-то должен постоянно следить!)... а ради чего?

По крайней мере, в MS SQL всё вот так (т.е. даже у их же продукта та же проблема!):  https://stackoverflow.com/questions/63340460/need-help-using-the-official-iana-timezone-database-in-sql
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Роман Жарков
Помнится, там была кнопка «сравнить». Когда в двух колонках перевод и оригинал.
неудобно — разбегаются версии на разных языках.

но вот ( это для 9.6 ):
- It should be noted that disk space used for explicit temporary tables, as opposed to temporary files used behind-the-scenes in query execution, does not count against this limit.
- Следует отметить, что при этом учитывается только место, занимаемое явно создаваемыми временными таблицами; на временные файлы, которые создаются неявно при выполнении запроса, это ограничение не распространяется.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Maxim
libpgxx
Значит, именно Вам повезло — она хотя бы переменную окружения поддерживает (должна, по крайней мере). ;)
источник

b

batyrmastyr in pgsql – PostgreSQL
Victor Yegorov
в версии для 9.6 есть полностью противоположный оригиналу перевод.
сравните второй абзац, последнюю строчку ( на Следует отметить… )
- https://www.postgresql.org/docs/9.6/runtime-config-resource.html#GUC-TEMP-FILE-LIMIT (оригинал)
- https://postgrespro.ru/docs/postgrespro/9.6/runtime-config-resource#idp32812
- https://postgrespro.ru/docs/postgrespro/13/runtime-config-resource#id-1.6.5.7.3.2.1.1.3
Да, явно перепутали.
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Victor Yegorov
в версии для 9.6 есть полностью противоположный оригиналу перевод.
сравните второй абзац, последнюю строчку ( на Следует отметить… )
- https://www.postgresql.org/docs/9.6/runtime-config-resource.html#GUC-TEMP-FILE-LIMIT (оригинал)
- https://postgrespro.ru/docs/postgrespro/9.6/runtime-config-resource#idp32812
- https://postgrespro.ru/docs/postgrespro/13/runtime-config-resource#id-1.6.5.7.3.2.1.1.3
Справедливости ради и истины для: перевод именно постгресовой доки: https://postgrespro.ru/docs/postgresql/9.6/runtime-config-resource#runtime-config-resource-disk
А у вас - ссылки на ПгПро-шные. Что не отменяет качества перевода.
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Михаил Шурутов
Справедливости ради и истины для: перевод именно постгресовой доки: https://postgrespro.ru/docs/postgresql/9.6/runtime-config-resource#runtime-config-resource-disk
А у вас - ссылки на ПгПро-шные. Что не отменяет качества перевода.
спасибо, не обратил внимания на варианты перевода
источник

b

batyrmastyr in pgsql – PostgreSQL
В данном случае один фиг - в оригинале нетипичное двойное отрицание, а в переводе сказали понятнее, но одно смысловое «не» потеряли.
источник

b

batyrmastyr in pgsql – PostgreSQL
Весьма вероятно, что этот кусок они тупо скопировали из «любительского», который на 9.х заглох.
источник

P

Petr in pgsql – PostgreSQL
Коллеги, добрый день! Заметил, что на больших таблицах после TRUNCATE/DROP оных не полностью высвобождается место файловой системе. Полагаю, что такое происходит и на более малых таблицах, просто эффект не столь очевиден.

Пример:  имеем одну базу в кластере в несколько таблиц общим объемом ~850GB. После TRUNCATE по искомым, data_directory занимает (согласно du -sh) порядка ~154GB. Тем временем, pg_database_size() по базе показывает практически нулевой размер. Никаких сбоев и внештатных ситуаций не было.

Для интереса делал VACUUM FULL по базе — результат нулевой.
Также мне известно, что я не одинок в данной проблеме (касательно того что остаются файлы которые в действительности не нужны для работы). Один товарищ даже предлагал запрос (https://www.postgresql.org/message-id/4ae62ff0-f33e-2a26-79ff-dcaa39ee92ff%40erven.at, https://pastebin.com/5h2w7Tt8) который показывает что это за файлы, — правда причина у него была другая, несмотря на аналогичный результат.

Кто-то сможет это прокомментировать на предмет того почему так происходит?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Petr
Коллеги, добрый день! Заметил, что на больших таблицах после TRUNCATE/DROP оных не полностью высвобождается место файловой системе. Полагаю, что такое происходит и на более малых таблицах, просто эффект не столь очевиден.

Пример:  имеем одну базу в кластере в несколько таблиц общим объемом ~850GB. После TRUNCATE по искомым, data_directory занимает (согласно du -sh) порядка ~154GB. Тем временем, pg_database_size() по базе показывает практически нулевой размер. Никаких сбоев и внештатных ситуаций не было.

Для интереса делал VACUUM FULL по базе — результат нулевой.
Также мне известно, что я не одинок в данной проблеме (касательно того что остаются файлы которые в действительности не нужны для работы). Один товарищ даже предлагал запрос (https://www.postgresql.org/message-id/4ae62ff0-f33e-2a26-79ff-dcaa39ee92ff%40erven.at, https://pastebin.com/5h2w7Tt8) который показывает что это за файлы, — правда причина у него была другая, несмотря на аналогичный результат.

Кто-то сможет это прокомментировать на предмет того почему так происходит?
Сделайте "CHECKPOINT;", потом посмотрите ещё раз ("чтоб не думать").
И проверьте, нет ли [очень] "старых" транзакций, на всякий случай.
источник