@pgsql

Страница 683 из 1062
Roman
19.02.2018
11:18:30
cast(extract(epoch from current_timestamp) as integer) , это единственный способ конвертить timestamp в integer ?

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
cast(extract(epoch from current_timestamp) as integer) , это единственный способ конвертить timestamp в integer ?
psql -h 192.168.247.129 -p 5432 -d dd -Atc 'select current_timestamp::abstime::integer' && date +%s 1519040896 1519040896

Anton
19.02.2018
11:48:30
Увы, туда аггрегируются данные, делается т.н. UPSERT

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
спасибо

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
в таблице делается предаггрегация данных которые потом переезжают в другие таблицы/БД

Dmitry
19.02.2018
15:19:48
Если меня не устраивает куда инит мне бд ставит?

Sergey
19.02.2018
15:23:42
Если меня не устраивает куда инит мне бд ставит?
/usr/pgsql-10/bin/postgresql-10-setup эт дистрибутиво-зависимая хрень. Советуют использовать просто initdb - такая же команда как psql / pg_ctl

Или 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 запустить - ничего не скажет по поводу переменных окружения? Помню, есть такое...

Artem
19.02.2018
18:29:09
Дебаг в zabbix_server.conf уменьши
дело было не в дебаге заббикса, а в дебаге постгреса , тем не менее спасибо.

aleksandr
19.02.2018
18:30:06
Постгрес писал дебаг Сообщения в лог заббикса оО

Artem
19.02.2018
18:32:21
Постгрес писал дебаг Сообщения в лог заббикса оО
Он может писать в логи клиентского приложения в конфиге постгреса строка client_min_messages

Aleksey
19.02.2018
18:55:02
Здравствуйте ребята и девчата! ? Подскажите мне пожалуйста, как заставить psql откатывать транзакцию если встретил ошибку, например неизвестная команда (допустим: \wrong), или же \i missingfile. Получается так, что выполнение скрипта прекращается, а транзакция коммитится даже с флагом --single-transaction (-1). Может это баг? Версия psql 10.2, PostgreSQL 10.1.

Aleksey
19.02.2018
19:02:33
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
Получается так, что таблица все-таки создается, несмотря на то, что скрипт вызвал неверную команду и должен по-идее произойти rollback
Да, несколько неожиданно. ;) Логи при этом такие: statement: BEGIN statement: CREATE TABLE test001 (id serial); statement: COMMIT Т.е. как и документировано, psql просто делает так: It causes psql to issue a BEGIN command before the first such option and a COMMIT command after the last one, thereby wrapping all the commands into a single transaction. Из чего следует, что чисто "клиентские" ошибки ничего не прервут. Т.е. "не bug", а "читайте документацию внимательнее". ;)

Aleksey
19.02.2018
19:20:23
В любом случае, это больше относится к psql нежели к самому серверу. Мне кажется что в версии до 9.6 было именно такое поведение, но я не уверен, нужно проверить.

Aleksey
19.02.2018
19:30:30
Оборачивать в begin/commit нет смысла т.к. это делает команда -1

ON_ERROR_STOP=on тоже не помогает

Sergey
19.02.2018
19:34:48
ON_ERROR_STOP=on тоже не помогает
ну вот если добавить флаг -1, тогда создает таблицу даже если в файле есть BEGIN/COMMIT, и комитит транзакцию несмотря на ошибку

забыл добавить, версия 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;

Bohdan
19.02.2018
19:44:38
без проблем. есть таблица депозитов, есть таблица транзакций. в транзакции заносится информация о зачисляемой прибыли с депозита. Необходимо выбрать все депозиты (без исключения) вместе с доходом по каждому

по некоторым депозитам, конечно же, может не быть записей в таблице транзакций

но их тоже нужно выбрать

Artem
19.02.2018
19:46:31
Оборачивать в begin/commit нет смысла т.к. это делает команда -1
http://www.postgresql-archive.org/Rollback-on-include-error-in-psql-td5832192.html#a5832281

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; вернул только депозит, у которого есть записи в транзакции(

Aleksey
19.02.2018
20:01:37

Страница 683 из 1062