
Айтуар
06.09.2016
14:02:51
fsync тут не виноват ))
проблема в настройке рейда

Sergey
06.09.2016
14:03:38
или есть проблемные диски в нем

blkmrkt
06.09.2016
14:04:01
а fsync это же ф-я ос, которая удостоверяется в том, что данные действительно записаны, не? И если в raid контроллере батарейка и данные попали в кеш, то fsync сразу сделает return

Google

Darafei
06.09.2016
14:06:01
@blkmrkt fsync отвечает за то, чтобы данные попали в диск, да
только диском считается контоллер диска с батарейкой в твоём случае
и туда ничего без него не попадёт

blkmrkt
06.09.2016
14:06:39
проблема в настройке рейда
raid контроллер от хостера у меня, странно что из ОС он никак не виден, и нигде нельзя ни статус его посмотреть, ни настроить

Darafei
06.09.2016
14:06:45
и останется в оперативной памяти
@blkmrkt fsync=on, synchronuous_commit=off

blkmrkt
06.09.2016
14:07:57

Айтуар
06.09.2016
14:09:22
причём тут readonly?

blkmrkt
06.09.2016
14:10:05

Айтуар
06.09.2016
14:12:00
без fsync у тебя при крахе процесса postgres нет уверенности что БД сможет вернуться в нормальное состояние, а так конечно нагрузка на диск меньше при выключенном fsync. Но выключать можно лишь на БД которые не жалко потерять и можно отресторить из бекапа.

blkmrkt
06.09.2016
14:13:23

Айтуар
06.09.2016
14:15:02
Нет. Из документации - If this parameter is on, the PostgreSQL server will try to make sure that updates are physically written to disk, by issuing fsync() system calls or various equivalent methods (see wal_sync_method). This ensures that the database cluster can recover to a consistent state after an operating system or hardware crash.
последнее предложение

Google

Roman
06.09.2016
14:15:34

blkmrkt
06.09.2016
14:16:39

Anton
06.09.2016
14:17:56
ораклина на похожих нагрузках все в лет пережевывает ) тут вот лаг наката на стендбай получили =(

Айтуар
06.09.2016
14:18:55
а на мастере всё нормально?
просто я думаю такие же нагрузки на wal и мастере должны быть

Anton
06.09.2016
14:19:24
да, всю читающую нагрузку со слейвов на мастер перенесли, к удивлению он все вытянул
хотя он на ссд вроде ))))

blkmrkt
06.09.2016
14:19:58

Anton
06.09.2016
14:20:33
коллеги ) тут все сурьезно, вылетевшие винты меняют оперативно

Darafei
06.09.2016
14:22:10
@blkmrkt без fsync можно получить из базы фарш
имел дело с pcie во времена OCZ RevoDrive 3
логически он торчал как sata-контроллер с двумя воткнутыми в него дисками
когда начал сыпаться, они в dmesg из него просто выдернулись

Kamil
07.09.2016
07:24:32
чё там Ильнар?
по смс порталу

Alexandre
07.09.2016
08:22:43
нужно хранить массив данных UUID, и искать по набору соответствия этих гуидов, какую структуру данных лучше использовать jsonb или UUID[]
с jsonb все получается, когда индексирую поле, ч UUID[] не нашел информации как создать индекс на массив, и как сделать запрос на несколько UUID
Пример
CREATE TABLE json_test
(
id INTEGER PRIMARY KEY NOT NULL,
data JSONB
);
CREATE INDEX json_test_expr_idx ON json_test ("?");

Kirill
07.09.2016
08:25:01
https://postgrespro.ru/docs/postgresql/9.5/functions-array.html

Google

Alexandre
07.09.2016
08:25:20
thanks
с массивами более производительней?
ясно, использовать оператор @>, а как с индексацией - можно наложить индекс на массив?

Kirill
07.09.2016
08:28:27
все как всегда: create index using gin )

Alexandre
07.09.2016
08:31:00
Кирилл, а как написать запрос, найти вхождение элементов 2 3 и 5
так не получается:
select * from arr_test WHERE data @ > array[5,2];
получилось, спасибо
что-то с индексом
create index idx_arr on arr_test using GIN(data);
[42704] ERROR: data type uuid[] has no default operator class for access method "gin" Подсказка: You must specify an operator class for the index or define a default operator class for the data type.

Kirill
07.09.2016
08:53:13
btree попробуйте (т.е. просто уберите gin), он должен сработать при поиске на вхождение

Alexandre
07.09.2016
08:53:16
стоит привести к строке?

Kirill
07.09.2016
08:53:55
нет, uuid оставит и построить btree индекс

Arthur
07.09.2016
08:54:00
можете свой operator class создать:
CREATE OPERATOR CLASS _uuid_ops DEFAULT
FOR TYPE _uuid USING gin AS
OPERATOR 1 &&(anyarray, anyarray),
OPERATOR 2 @?anyarray, anyarray),
OPERATOR 3 <@(anyarray, anyarray),
OPERATOR 4 =(anyarray, anyarray),
FUNCTION 1 uuid_cmp(uuid, uuid),
FUNCTION 2 ginarrayextract(anyarray, internal, internal),
FUNCTION 3 ginqueryarrayextract(anyarray, internal, smallint,
internal, internal, internal, internal),
FUNCTION 4 ginarrayconsistent(internal, smallint, anyarray, integer,
internal, internal, internal, internal),
STORAGE uuid;

Kirill
07.09.2016
08:54:29
:)

Arthur
07.09.2016
08:55:30
там вместо смайлика "OPERATOR 2 @> (anyarray, anyarray)"

Roman
07.09.2016
09:17:18
Доброго дня! Сразу прошу прощения за, возможно, глупый вопрос. Но вот сходу порыввшить в сети не смог сформировать для себя уверенного представления, как нужно сделать, чтобы все было хорошо. Собственно вопрос просто, что указывать в качестве русской локали при инициализации кластера под windows? В наличии есть только 1251, C и POSIX. А хочется родной ru_RU.UTF-8. Администраторы со стороны заказчика говорят, что это нормально для windows, и никак дополнительно в ОС они локали сконфигурировать не могут, отправляя разбираться с СУБД.
Здесь http://stackoverflow.com/questions/6579621/lc-collate-and-lc-ctype-suport-for-utf-8-in-postgresql
предлагают в таких случаях выбирать C, однако, как я понимаю, в этом случае могут возникнуть проблемы подобные этой http://www.sql.ru/forum/784071/smena-lokali-v-postgresql

Alexandre
07.09.2016
09:54:52
спасибо

Vadim
07.09.2016
10:15:50
Доброго дня! Сразу прошу прощения за, возможно, глупый вопрос. Но вот сходу порыввшить в сети не смог сформировать для себя уверенного представления, как нужно сделать, чтобы все было хорошо. Собственно вопрос просто, что указывать в качестве русской локали при инициализации кластера под windows? В наличии есть только 1251, C и POSIX. А хочется родной ru_RU.UTF-8. Администраторы со стороны заказчика говорят, что это нормально для windows, и никак дополнительно в ОС они локали сконфигурировать не могут, отправляя разбираться с СУБД.
Здесь http://stackoverflow.com/questions/6579621/lc-collate-and-lc-ctype-suport-for-utf-8-in-postgresql
предлагают в таких случаях выбирать C, однако, как я понимаю, в этом случае могут возникнуть проблемы подобные этой http://www.sql.ru/forum/784071/smena-lokali-v-postgresql
а че ru_RU.UTF8 не получается указать?


Aleksey
07.09.2016
10:20:58
Доброго дня! Сразу прошу прощения за, возможно, глупый вопрос. Но вот сходу порыввшить в сети не смог сформировать для себя уверенного представления, как нужно сделать, чтобы все было хорошо. Собственно вопрос просто, что указывать в качестве русской локали при инициализации кластера под windows? В наличии есть только 1251, C и POSIX. А хочется родной ru_RU.UTF-8. Администраторы со стороны заказчика говорят, что это нормально для windows, и никак дополнительно в ОС они локали сконфигурировать не могут, отправляя разбираться с СУБД.
Здесь http://stackoverflow.com/questions/6579621/lc-collate-and-lc-ctype-suport-for-utf-8-in-postgresql
предлагают в таких случаях выбирать C, однако, как я понимаю, в этом случае могут возникнуть проблемы подобные этой http://www.sql.ru/forum/784071/smena-lokali-v-postgresql
Пробовали with template=template0 ?

Google

Stanislav
07.09.2016
10:46:15
Какой минимальный уровень привилегий необходим, чтобы опрашивать селектами pg_stat_* и читать параметры репликации?
LOGIN REPLICATION не дает читать
select client_addr, pg_xlog_location_diff(pg_current_xlog_location(), replay_location) from pg_stat_replication;
v9.4.9 если что

Bogdan
07.09.2016
11:20:58
всем привет у меня нубовский вопрос:
session (s)1:
update table set count = count + 1 where max > count returning id, count, max;
s2 (cuncurrent):
update table set count = count + 1 where max > count returning id, count, max;
если s1 завершится первой в s2 будет инкремент и возврат строк удовлетворяющих условию ?

Ildar
07.09.2016
11:28:27
update ставит локи на обновляемые строки, поэтому я думаю, что результат будет такой, как если бы они выполнялись последовательно

Bogdan
07.09.2016
11:30:15
Смущает пример в доке
"Команда DELETE не сделает ничего, даже несмотря на то, что строка с website.hits = 10 была в таблице и до, и после выполнения UPDATE. Это происходит потому, что строка со значением 9 до изменения пропускается, а когда команда UPDATE завершается и DELETE получает освободившуюся блокировку, строка с 10 теперь содержит 11, а это значение уже не соответствует условию."
https://postgrespro.ru/docs/postgrespro/9.5/transaction-iso
или это только относится к связке UPDATE - DELETE
Все, разобрался, проверил: открыл 2 сесии и проверил
> если s1 завершится первой в s2 будет инкремент и возврат строк удовлетворяющих условию ?
да отдаст удовлетворяющие условию строки

Айтуар
07.09.2016
11:43:37
поменяйте уровень изоляции и не мучайтесь

Fike
07.09.2016
12:05:06

Kirill
07.09.2016
12:16:29

Айтуар
07.09.2016
12:20:18
статистика

Roman
07.09.2016
12:24:50

Darafei
07.09.2016
12:30:19
Ура! https://git.openstreetmap.org/chef.git/commitdiff/e3cf43a

Fike
07.09.2016
12:30:38

Maxim
07.09.2016
12:30:41
теперь-то заживем
а что не так с мозиллой-то было?

Darafei
07.09.2016
12:31:12
у кугиса юзер-агент Mozilla/5.0 QGIS/2.17.0

Maxim
07.09.2016
12:31:24
ааа

Sergey
07.09.2016
12:31:31
IMHO под WIN при initdb надо отдельно указывать codepage и locale

Google

Sergey
07.09.2016
12:32:48
initdb --encoding=UTF-8 --locale=Russia_Russian
Кажется так

Roman
07.09.2016
12:33:44

Kirill
07.09.2016
12:42:53

Fike
07.09.2016
12:55:13
я очень плохо помню всю кухню с уровнями, но, насколько понимаю, на "позволительных" это превращается в банальный race condition, где постгрес сам по себе уже ничего не может сделать.

Kirill
07.09.2016
12:59:26
Это не совсем так, там выше очень правильная ссылка https://postgrespro.ru/docs/postgrespro/9.5/transaction-iso ;)


Stanislav
08.09.2016
13:13:33
Какие воркеры кроме SQL, bgwriter, checkpointer, autovacuum могут еще писать буфферы на диск?
Тут https://postgrespro.ru/docs/postgrespro/9.5/monitoring-stats.html#PG-STAT-BGWRITER-VIEW
в таблице "27-7. Представление pg_stat_bgwriter" говорится:
buffers_backend bigint Количество буферов, записанных самим серверным процессом
buffers_backend_fsync bigint Сколько раз серверному процессу пришлось выполнить fsync самостоятельно (обычно фоновый процесс записи сам обрабатывает эти вызовы, даже когда серверный процесс выполняет запись самостоятельно)
В этих текстах непонятно какой серверный воркер упомянут
У меня получается идиотская ситуация, что синхронно с началом работы чекпоинтера, появляется какой-то параллельный воркер который пишет буфферы на диск ровно то же время, которое пишет их чекпоинтер на диск, причем в начале он сильно больше кидает буфферов, а потом поток в несколкьо раз меньше чем у чекпоинтера, и я пытаюсь понять, почему так: http://pix.my/kGAfPn1a


Kirill
08.09.2016
14:21:55
Есть checkpoint, есть bgwriter который тащит из шаред буфера на диск. Упомянутый серверный процес это процесс обрабатывающий соединение с клиентом, он тоже может сбрасывать грязные страницы если в буфере нет свободных, но это не очень хорошо, вполне себе должен справлятся brwriter
все постгресовые процессы есть тут https://github.com/postgres/postgres/tree/master/src/backend/postmaster
https://www.youtube.com/watch?v=iODeKnTD1kA&list=PLaFqU3KCWw6JgufXBiW4dEB2-tDpmOXPH&index=1