
Ilia
06.03.2018
07:15:20

Аггей
06.03.2018
07:15:45
У нас на exadata

Alexey
06.03.2018
07:16:46

Google

Egor
06.03.2018
07:17:20

Alexey
06.03.2018
07:17:51
это будет нарушением лицензии. что они в этом случае делают — понятия не имею
а кто знает эту историю, почему они запрещают?
https://danluu.com/anon-benchmark/

Denis
06.03.2018
07:25:11
Asm который?
Да, asm (я не настоящий сварщик в оракле). Можете поделиться опытом по производительности?

Аггей
06.03.2018
07:35:01
Не могу )) На exadata всегда был asm - производительность хорошая. Тащит говноскрипты за счет диска и ядер. Но так как не использовал файловую систему на этих же дисках - то сравнить не могу. В других местах (тест и dev) у меня oracle на xfs или ext4. XFS хоть я ее и не люблю - ведет себя лучше, но честно говоря на тестовых схд уж очень медленная - < 300 iops

Nikolay
06.03.2018
07:35:06

Evgenij
06.03.2018
10:05:13
Привет. По какой причине не запускается контейнер Докера с pgsql образом, пишет что данные с разных версий, но это не так на хосте и в контейнере используется 9.6,
pgsql_1 | FATAL: database files are incompatible with server
pgsql_1 | DETAIL: The data directory was initialized by PostgreSQL version 9.5, which is not compatible with this version 9.6.8.

Dmitry
06.03.2018
10:06:12

Evgenij
06.03.2018
10:06:54
но на хосте я использую 9.6 без проблем
volumes:
- /var/lib/postgresql/9.6/main:/var/lib/postgresql/data

Dmitry
06.03.2018
10:07:19
и дальше используйте, но pgdata - от старой версии
с новой версией бинаря работать не будет

Google

Dmitry
06.03.2018
10:07:33
нужно обновить
вообще зачем вам PostgreSQL?

Evgenij
06.03.2018
10:07:55
это как

Dmitry
06.03.2018
10:08:56
для того чтобы база эффективно работала необходимо чтобы версия данных (PGDATA) была совместима с бинарем который это обслуживает.

Evgenij
06.03.2018
10:10:27

Roman
06.03.2018
12:18:37
Есть ли термин у такого подхода к версионированию данных , когда у каждого старого кортежа есть ссылка на n+1 кортеж?

Mikhail
06.03.2018
12:19:20
Список ?

Roman
06.03.2018
12:20:01
Вроде такие вещи SCD называю, только я не нашёл подходящий тип

Сергей
06.03.2018
12:20:35
Блокчейн)))

Roman
06.03.2018
12:20:48
Еее , спасибо )

Сергей
06.03.2018
12:21:12
Хранишь хэш предыдущей исторической записи, проверяешь

Roman
06.03.2018
12:22:54
Не, требуется по запросу выгружать все версии кортежа. Можно было бы у каждого старого кортежа сделать ссылку на текущий, но почему-то решил что рекурсивный запрос будет лучше, нежели при каждом insert обновлять ссылки у предудыщих.

crux
06.03.2018
12:27:46
при инсёрте 1 раз обновить, а при рекурсии каждый раз бегать

Ildar
06.03.2018
12:30:44

Roman
06.03.2018
12:31:14
Чтобы выгрузить все версии

Сергей
06.03.2018
12:31:55
Тогда сразу схему с версионированием делай
Актуальная версия - последняя

Google

Ildar
06.03.2018
12:32:58
или как вариант хранить даты только для устаревших версий, а для актуальной - не хранить. Типа как xmax в постгресе
тогда выбирать актуальные версии проще

Roman
06.03.2018
12:33:48

Ildar
06.03.2018
12:42:16
да нет, обычные 1, 2, 3

Roman
06.03.2018
12:43:33

Ildar
06.03.2018
12:45:08
типа такого
dt | id | данные
----------+----+-----------
1.03.2018 | 1 | версия 1
2.03.2018 | 1 | версия 2
null | 1 | весрия 3


Ivan
06.03.2018
14:37:01
Ребята привет
Postgres 9.5
есть табличка 11 милионов записей за 4 года
решили сделать partition, по дате создания по месяцу
в итоге 48 подтабличек
в них индекс по дате создания
из главной таблички индекс дропнул(с ним еще медленнее чем было)
смотришь explain
PARTITION
"Aggregate (cost=121844.24..121844.25 rows=1 width=8)"
" -> Append (cost=0.00..114701.92 rows=2856929 width=0)"
" -> Seq Scan on instance (cost=0.00..0.00 rows=1 width=0)"
" Filter: ((created_time >= '2015-11-01 12:00:00.156'::timestamp without time zone) AND (created_time < '2016-01-01 00:00:00'::timestamp without time zone))"
" -> Seq Scan on instance_y2015m11 (cost=0.00..5905.96 rows=147464 width=0)"
" Filter: ((created_time >= '2015-11-01 12:00:00.156'::timestamp without time zone) AND (created_time < '2016-01-01 00:00:00'::timestamp without time zone))"
" -> Seq Scan on instance_y2015m12 (cost=0.00..108795.96 rows=2709464 width=0)"
" Filter: ((created_time >= '2015-11-01 12:00:00.156'::timestamp without time zone) AND (created_time < '2016-01-01 00:00:00'::timestamp without time zone))"
ONLY INDEX(BIG TABLE)
"Aggregate (cost=164174.14..164174.15 rows=1 width=8)"
" -> Index Only Scan using inst_created on instance (cost=0.44..157156.63 rows=2807004 width=0)"
" Index Cond: ((created_time >= '2015-11-01 12:00:00.156'::timestamp without time zone) AND (created_time <= '2016-01-01 12:00:00.156'::timestamp without time zone))"
кто сталкивался?
не те логи скинул
PARTITION
"Append (cost=0.00..5914.41 rows=147466 width=442)"
" -> Seq Scan on instance (cost=0.00..0.00 rows=1 width=441)"
" Filter: ((created_time >= '2015-11-01 12:00:00.156'::timestamp without time zone) AND (created_time <= '2015-12-01 00:00:00'::timestamp without time zone))"
" -> Seq Scan on instance_y2015m11 (cost=0.00..5905.96 rows=147464 width=442)"
" Filter: ((created_time >= '2015-11-01 12:00:00.156'::timestamp without time zone) AND (created_time <= '2015-12-01 00:00:00'::timestamp without time zone))"
" -> Index Scan using instance_y2015m12_created_time_idx on instance_y2015m12 (cost=0.43..8.45 rows=1 width=441)"
" Index Cond: ((created_time >= '2015-11-01 12:00:00.156'::timestamp without time zone) AND (created_time <= '2015-12-01 00:00:00'::timestamp without time zone))"
ONLY INDEX(BIG TABLE)
"Aggregate (cost=164174.14..164174.15 rows=1 width=8)"
"Index Scan using inst_created on instance (cost=0.44..10638.46 rows=189948 width=442)"
" Index Cond: ((created_time >= '2015-11-01 12:00:00.156'::timestamp without time zone) AND (created_time <= '2015-12-01 00:00:00'::timestamp without time zone))"
select * from instance where created_time >= '2015-11-01 12:00:00.156' AND created_time <= '2015-12-01 00:00:00.000'
данные за один месяц


Evgeniy
06.03.2018
14:52:17
чек констрейнты прописаны?
констрейнт эксклюжон включен?

Ivan
06.03.2018
15:20:50
да
результат отсеивается
explain смотрел

vladget
06.03.2018
17:15:24
Привет! Есть странная плавающая проблема на 9.6, SSD, iowait < 0.2: база как бы "подзалипает" на несколько секунд и начинает тупить.. примитивные запросы начинают попадать в slow.. подсткажите куда смотреть

Evgeniy
06.03.2018
17:35:24
локи, цпу, диск

Anton
06.03.2018
17:35:58
Репликация есть? Synchronous_standby не задан ли?

Google

Alex
06.03.2018
18:00:38

vladget
06.03.2018
18:01:57

Anton
06.03.2018
18:09:15
Чекпоинты - механизм Postgres
Но на ssd странно было бы в них упереться, Да и iowait мелкий
У вас бд на физической машине машине или в виртуалке?

vladget
06.03.2018
18:12:20

Anton
06.03.2018
18:14:02
Ну я бы для начала настроил мониторинг бд. Того же okmeter для траблшутинга хватит, можно mamonsu + zabbix, но там есть "тяжёлые" метрики которые сами по себе влияют на бд :-)

vladget
06.03.2018
18:14:37

Anton
06.03.2018
18:14:39

vladget
06.03.2018
18:15:00

Anton
06.03.2018
18:15:28
Он easy way для начинающих
Я юзаю mamonsu + пачку плагинов для всех нужд

vladget
06.03.2018
18:16:48

Anton
06.03.2018
18:17:40
Ну там нет опасных метрик, да и нового он вам ничего не даст.

vladget
06.03.2018
18:20:56
слейв справа

Google

Anton
06.03.2018
18:27:58
Я юзаю barman, там немного другой принцип работы
Wal receiver сам м забирает с сервера логи

vladget
06.03.2018
18:30:10

Anton
06.03.2018
18:31:46
я делаю PITR для разработчиков обычно, но это не связано с вашей проблемой
попробуйте отключить архивацию

vladget
06.03.2018
18:32:01
о это от 2nd quadrant
hot_standby_feedback = on - вот еще нашел

Alex
06.03.2018
18:50:32
Checkpoint_timeout и checkpoint_completion_target чему равен?

vladget
06.03.2018
18:51:38

Alex
06.03.2018
18:58:20
В файле postgresql.auto.conf есть чо?

vladget
06.03.2018
18:58:59

Артемий
06.03.2018
20:01:11
Добрый вечер.
Я решил сделать простую очередь задач в postgres и извлекаю новые задачи так:
UPDATE parse_queue SET done = true
WHERE id = (
SELECT id FROM parse_queue
WHERE defered<now() and tryed < 3 and done != true
ORDER BY priority DESC, RANDOM()
FOR UPDATE SKIP LOCKED
LIMIT 1
)
RETURNING
id, job_type, priority
И дальше в этой же транзакции делаю задачу и потом закрываю ее.
В интернетах пишут что так лок должен быть только на строчку и нормально должны работать паралельные консьюмеры. Но сейчас задачи запрашивает много потоков, а отдаются они все равно синхронно, и пока одна не отработает, другому потоку задача не достанется.
В чем может быть проблема?

Evgeniy
06.03.2018
20:09:42
а почему ты вообще и извлекаешь и апдейтишь что готово одним запросом
ты ж еще не обработал
или это у тебя промисы такие хитрые