Size: a a a

pgsql – PostgreSQL

2021 February 06

D

Dmitriy in pgsql – PostgreSQL
А, понял
источник

b

blkmrkt in pgsql – PostgreSQL
Ребят, я забыл отключить archive_mode, и сервер перестал удалять WAL. Рестарт сейчас сделать не могу - безопасно ли удалять старые WAL вручную?
источник

b

blkmrkt in pgsql – PostgreSQL
blkmrkt
Ребят, я забыл отключить archive_mode, и сервер перестал удалять WAL. Рестарт сейчас сделать не могу - безопасно ли удалять старые WAL вручную?
К слову, archive_command пустая и сервер об этом спамит в логе. Я не придал значания сперва, но тут обнаружил что места осталось мало.
источник

GS

Grigory Smolkin in pgsql – PostgreSQL
blkmrkt
Ребят, я забыл отключить archive_mode, и сервер перестал удалять WAL. Рестарт сейчас сделать не могу - безопасно ли удалять старые WAL вручную?
проще переопределить archive_command на 'exit 0'
источник

W

Warstone in pgsql – PostgreSQL
a m
Вот изобретаю я, например, электронную почту.
Делаю таблицу messages (user_id, date).
Делаю индекс по (user_id, date DESC) и каждый раз показываю пользоватлю SELECT ... WHERE user_id = ... ORDER BY date DESC LIMIT 50.
Сообщений у каждого пользователя может быть 100, а может быть 100 000.
Все хорошо, покудова я эти сообщения с какой-нибудь маленькой второстепенной ерундой не начинаю джоинить. И хана. Планировщик вместо index scan и nested loop делает bitmap index scan → hash join → sort. В итоге пользователь со 100 000 сообщений отваливается по таймауту.
Попробуйте через CTE (хотя тут говорили что они уже встраиваются) выбрать 50 записей и уже с этими записями джойнить.
источник

b

blkmrkt in pgsql – PostgreSQL
Grigory Smolkin
проще переопределить archive_command на 'exit 0'
спс, уже сделал archive_command = 'true'. Мееедленно, но удаляет, сперва переименовав файлы в расширение .ready.
источник

am

a m in pgsql – PostgreSQL
Warstone
Попробуйте через CTE (хотя тут говорили что они уже встраиваются) выбрать 50 записей и уже с этими записями джойнить.
Как вариант, да.
источник

am

a m in pgsql – PostgreSQL
Но сломается гипотетическая логика «не показывать сообщения от отправителей из блеклиста» (с которым джоиним). Пользователь увидит не 50 сообщений, а меньше. Нестед луп дайте, черт побери!
источник

W

Warstone in pgsql – PostgreSQL
А отправка тоже у вас?
источник

ФГ

Федор Гулин... in pgsql – PostgreSQL
a m
Вот изобретаю я, например, электронную почту.
Делаю таблицу messages (user_id, date).
Делаю индекс по (user_id, date DESC) и каждый раз показываю пользоватлю SELECT ... WHERE user_id = ... ORDER BY date DESC LIMIT 50.
Сообщений у каждого пользователя может быть 100, а может быть 100 000.
Все хорошо, покудова я эти сообщения с какой-нибудь маленькой второстепенной ерундой не начинаю джоинить. И хана. Планировщик вместо index scan и nested loop делает bitmap index scan → hash join → sort. В итоге пользователь со 100 000 сообщений отваливается по таймауту.
А где план запроса ?
Я а дбобре не мог скопировать.
Постгрес я осваиваю потиху но из опыта мс-скл и оракула скажу что Осн. Проблемы это когда вместо хэш жойн запрос уходит в нестед лупс для большого сабсета данных.
И вот тут зависнуть может навечно и лечил я иногда хинтами или перегруппировкой запроса.
Так что вопрос
Какие Тулы есть для просмотра и сравнения планов в постгрес.
источник
2021 February 07

M

Miseo in pgsql – PostgreSQL
Подскажите:
На сервере заканчивается дисковое пространство.
Что делать?
- Брать еще один сервер и переносить туда часть данных?
- Докупить еще один ссд и как то подключить его уже к существующей базе?
- Какой то третий вариант )
источник

A

Alexander in pgsql – PostgreSQL
Miseo
Подскажите:
На сервере заканчивается дисковое пространство.
Что делать?
- Брать еще один сервер и переносить туда часть данных?
- Докупить еще один ссд и как то подключить его уже к существующей базе?
- Какой то третий вариант )
Нанять админа. Потому что, судя по постановке вопроса, сервак без raid-массива.
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Miseo
Подскажите:
На сервере заканчивается дисковое пространство.
Что делать?
- Брать еще один сервер и переносить туда часть данных?
- Докупить еще один ссд и как то подключить его уже к существующей базе?
- Какой то третий вариант )
удалить старые данные, внедрить политику управления временем жизни данных в базе
источник

M

Miseo in pgsql – PostgreSQL
Понял, спасибо. Значит пока почитаю про рейд массив. А завтра на свежую голову подниму вопрос про админа.
источник

am

a m in pgsql – PostgreSQL
Victor Yegorov
удалить старые данные, внедрить политику управления временем жизни данных в базе
Вы забыли про пункт «набрать VACUUM FULL и убедиться, что он все равно не проходит из-за недостатка свободного места».
источник

am

a m in pgsql – PostgreSQL
Miseo
Подскажите:
На сервере заканчивается дисковое пространство.
Что делать?
- Брать еще один сервер и переносить туда часть данных?
- Докупить еще один ссд и как то подключить его уже к существующей базе?
- Какой то третий вариант )
Самый ленивый вариант — подключить купленный в магазине диск, смонтировать, создать там tablespace и перекинуть на него какие-нибудь таблицы.
источник

am

a m in pgsql – PostgreSQL
Вариант очень плохой, на ночь простоять да день продержаться.
источник

M

Miseo in pgsql – PostgreSQL
Alexander
Нанять админа. Потому что, судя по постановке вопроса, сервак без raid-массива.
Сервер этот. Тут рейд 1. Вот и думаю, а что если мне нужно просто докупить еще один винт, а они мне «незаметно» просто расширят память? У меня Хецнер. По идее они могут так сделать, или для таких машин там надо выключать сервер и докручитьва физический винт?
источник

VY

Victor Yegorov in pgsql – PostgreSQL
a m
Вы забыли про пункт «набрать VACUUM FULL и убедиться, что он все равно не проходит из-за недостатка свободного места».
зачем так-то? хотя бы pgstattuple_approx из одноимённого расширения заюзать для таблиц
источник

am

a m in pgsql – PostgreSQL
Victor Yegorov
зачем так-то? хотя бы pgstattuple_approx из одноимённого расширения заюзать для таблиц
VACUUM FULL — чтобы место в файловой системе освободить, конечно.
источник