
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

Sergey
19.02.2018
19:16:56
думаю нужен BEGIN в начале скрипта (UPD: не поможет)

Yaroslav
19.02.2018
19:17:33

Google

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
да

Aleksey
19.02.2018
19:50:51

Google

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