Roman
19.02.2018
11:18:30
cast(extract(epoch from current_timestamp) as integer) , это единственный способ конвертить timestamp в integer ?
Alex
19.02.2018
11:20:52
Anton
19.02.2018
11:46:40
День добрый. Вопрос для успокоения собственной совести ?
Имеем таблицу созданную как
CREATE UNLOGGED ... в которую пишет множество процессов и в ней очень много INSERT\UPDATE.
С небольшой периодичностью таблице делается TRUNCATE TABLE.
Для таблицы хочется отключить autovacuum и autoanalyze, т.к. колчичество изменяемых строк огромно, и соответственно тригерится ANALYZE\VACUUM
Насколько я понимаю, мы безопасно можем создать её с WITH ( autovacuum_enabled = false, toast.autovacuum_enabled = false ) и не беспокоиться о dead tuples т.к. TRUNCATE эффективно освобождает дисковое пространство, не требуя VACUUM.
Так ли это?
Darafei
19.02.2018
11:47:58
если бы вы не делали update, то автовакуум бы туда и сам не пришёл никогда
Google
Dmitry
19.02.2018
11:48:22
Anton
19.02.2018
11:48:30
Увы, туда аггрегируются данные, делается т.н. UPSERT
Roman
19.02.2018
11:49:24
Dmitriy
19.02.2018
13:50:02
Коллеги, может еще у кого появятся мысли по моему вопросу?
Ребяты, привет. Отвлеку немнгго.
Есть задача, никак нетмогу к ней решение красивое придумать.
Есть деталь, она лежит на складе.
Складов много, у каждого есть один или несколько префиксов - русская буква или несколько букв. У каждой детали должен быть номер детальки из префикса и номера детали на этом складе, относительно префикса. Как такую штукенцию сделать?
Номера последовательные
Пример: М-132, К-30
Как это все генерить и хранить?
Я пока вот склоняюсь к одной таблицы, у каждой детальки будет свой id, и при добавлении генерить ей порядковый номерок относительно префикса бквенного
Вот как генерить нетмогу понять. Может сиквенс отдельный
И как хранить такую конструкцию, чтобы индексировать ее номально: префикс и номер в отдельных полях или можно в одном хранить строчном?
Dmitry
19.02.2018
14:05:08
Вопрос при /usr/pgsql-10/bin/postgresql-10-setup initdb -D /usr/pgsql-10/data/
пишет что ключа -D нет. в доках пусто, ос Centos 7
nietzschebrod
19.02.2018
14:14:50
Google
Dmitry
19.02.2018
14:15:50
уже весь его просмотрел нет там такого ключа дейстивтельно. но вот вопрос в доках есть и тогда как инициальзировать бд в другую папку относительно default настроек
targitaj
19.02.2018
14:16:08
ребята, как в SELECT для условия WHERE указать несколько значений?
OR?
Sergey
19.02.2018
14:19:44
SELECT * from table_name WHERE age IN (10,11,17,18);
select * from table_name where age > 21 OR city = 'Tallinn';
targitaj
19.02.2018
14:20:49
спасибо
Andrew
19.02.2018
14:31:44
Anton
19.02.2018
14:40:37
Andrew
19.02.2018
14:42:28
Ну это только гадать можно. Сами же говорите что много апдейтов идет в таблицу.
Почему вакуум отключить хотите?
Anton
19.02.2018
14:43:12
он там бесполезен
но из-за сотен тысяч INSERT\UPDATE срабатывает при любых настройках
TRUNCATE минимум раз в час
Andrew
19.02.2018
14:44:15
тогда ок
Anton
19.02.2018
14:44:18
в таблице делается предаггрегация данных которые потом переезжают в другие таблицы/БД
Айтуар
19.02.2018
15:03:28
Dmitry
19.02.2018
15:19:48
Если меня не устраивает куда инит мне бд ставит?
Sergey
19.02.2018
15:23:42
Или pg_dump (например)
Искать там же где и прочие бинарники Postgresql. Минус в том что придйтся самостоятельно настраиваить startup сервера при загрузке системы
Google
Dmitry
19.02.2018
15:44:40
Спс
Anton [Mgn, az09@osm]
19.02.2018
16:57:58
Спс
А я копировал сервис и там прописывал куда база ляжет. Если интересно могу подробности глянуть. Цент+пг9.6
Dmitry
19.02.2018
16:59:31
С 9.6 все ок. С 10 по другому((
Хотя по докам так же
Anton [Mgn, az09@osm]
19.02.2018
17:02:04
С центом - по-другому)
Тоже помню мучался что D не срабатывало
Но я не настоящий сварщик. Мог не туда свернуть
Mike Chuguniy
19.02.2018
18:14:39
этот самый сетап с ключиком --help запустить - ничего не скажет по поводу переменных окружения? Помню, есть такое...
aleksandr
19.02.2018
18:23:09
Artem
19.02.2018
18:29:09
aleksandr
19.02.2018
18:30:06
Постгрес писал дебаг Сообщения в лог заббикса оО
Artem
19.02.2018
18:32:21
Aleksey
19.02.2018
18:55:02
Здравствуйте ребята и девчата! ? Подскажите мне пожалуйста, как заставить psql откатывать транзакцию если встретил ошибку, например неизвестная команда (допустим: \wrong), или же \i missingfile. Получается так, что выполнение скрипта прекращается, а транзакция коммитится даже с флагом --single-transaction (-1). Может это баг? Версия psql 10.2, PostgreSQL 10.1.
Yaroslav
19.02.2018
19:01:11
Aleksey
19.02.2018
19:02:33
Ilia
19.02.2018
19:06:28
Aleksey
19.02.2018
19:08:50
# psql -1f test.sql
CREATE TABLE
psql:test.sql:4: invalid command \wrong
# psql -1f test.sql
psql:test.sql:2: ERROR: relation "test001" already exists
psql:test.sql:4: invalid command \wrong
Получается так, что таблица все-таки создается, несмотря на то, что скрипт вызвал неверную команду и должен по-идее произойти rollback
Admin
Sergey
19.02.2018
19:16:56
думаю нужен BEGIN в начале скрипта (UPD: не поможет)
Google
Yaroslav
19.02.2018
19:17:33
Aleksey
19.02.2018
19:20:23
В любом случае, это больше относится к psql нежели к самому серверу. Мне кажется что в версии до 9.6 было именно такое поведение, но я не уверен, нужно проверить.
Sergey
19.02.2018
19:29:04
Aleksey
19.02.2018
19:30:30
Оборачивать в begin/commit нет смысла т.к. это делает команда -1
ON_ERROR_STOP=on тоже не помогает
Sergey
19.02.2018
19:34:48
забыл добавить, версия psql 9.5.11. Может что-то сломали/исправили в свежих
Bohdan
19.02.2018
19:40:34
Приветствую) Подскажите, пожалуйста, как написать условие что бы выбрало все депозиты у которых транзакции есть и они были типа "profit", и у которых нету)
SELECT
deposit.id,
deposit.created_at,
deposit.user_id,
deposit.marketing_plan_id,
deposit.invest_summ,
deposit.is_ended,
CASE WHEN COUNT(transaction) > 0
THEN SUM(transaction.summ)
ELSE 0 END AS profit
FROM deposits AS deposit
LEFT JOIN transactions transaction ON deposit.id = transaction.deposit_id
WHERE (transaction.type = 'profit')
GROUP BY deposit.id
ORDER BY deposit.id
LIMIT 10;
Yaroslav
19.02.2018
19:40:38
Ну так в 10.1/10.2 то же поведение, если я правильно вижу.
Aleksey
19.02.2018
19:43:58
.deposit_id можно заменить на id например
Bohdan
19.02.2018
19:44:38
без проблем.
есть таблица депозитов, есть таблица транзакций.
в транзакции заносится информация о зачисляемой прибыли с депозита.
Необходимо выбрать все депозиты (без исключения) вместе с доходом по каждому
по некоторым депозитам, конечно же, может не быть записей в таблице транзакций
но их тоже нужно выбрать
Artem
19.02.2018
19:46:31
Vitalii
19.02.2018
19:46:51
Всем привет, на таблице в которой не бывает больше 1000 строчек, индексы не нужны? Запросы обычно выбирают больше одной записи
Bohdan
19.02.2018
19:47:30
Aleksey
19.02.2018
19:50:17
Bohdan
19.02.2018
19:50:23
да
Google
Aleksey
19.02.2018
19:50:51
Bohdan
19.02.2018
19:52:05
SELECT
deposit.id,
deposit.created_at,
deposit.user_id,
deposit.marketing_plan_id,
deposit.invest_summ,
deposit.is_ended,
CASE WHEN COUNT(transaction) > 0
THEN SUM(transaction.summ)
ELSE 0 END AS profit
FROM deposits AS deposit
LEFT JOIN transactions transaction ON deposit.id = transaction.deposit_id
WHERE (transaction.type = 'profit' OR transaction.deposit_id IS NULL)
GROUP BY deposit.id;
вернул только депозит, у которого есть записи в транзакции(
Yaroslav
19.02.2018
19:56:55
Bohdan
19.02.2018
19:57:36
COALESCE вообще прелесть :)
Aleksey
19.02.2018
20:01:37