@pgsql

Страница 83 из 1062
Айтуар
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
и туда ничего без него не попадёт
стоп, это без fsync постгрес будет в readonly режиме что ли работать?

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

blkmrkt
06.09.2016
14:10:05
причём тут readonly?
наверное я неправильно понял @Komzpa

Айтуар
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
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
ораклина на похожих нагрузках все в лет пережевывает ) тут вот лаг наката на стендбай получили =(
ну и железо железу рознь тоже, у моего прошлого хостера ssd были с помойки, и раз в месяц один из них меняли на другой помойный диск, после чего raid восстанавливался неделю. зато дешево

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

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
Все, разобрался, проверил: открыл 2 сесии и проверил
вопросы консистентности данных однократным тестом не проверяются

Kirill
07.09.2016
12:16:29
вопросы консистентности данных однократным тестом не проверяются
от многократных тестов транзакции в постгресе как-то иначе начнут работать ?

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

Roman
07.09.2016
12:24:50
а че ru_RU.UTF8 не получается указать?
нет к сожалению, пишет, что не может такой локали найти

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

Fike
07.09.2016
12:30:38
от многократных тестов транзакции в постгресе как-то иначе начнут работать ?
Нет, просто успешное однократное поведение не гарантирует повторяемость этого поведения. Я перечитал это дело по диагонали и не знаю, какой IL применяется, просто этот тест не говорит ни о чем.

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
initdb --encoding=UTF-8 --locale=Russia_Russian
спасибо, попробуем

Kirill
07.09.2016
12:42:53
Нет, просто успешное однократное поведение не гарантирует повторяемость этого поведения. Я перечитал это дело по диагонали и не знаю, какой IL применяется, просто этот тест не говорит ни о чем.
ну, там без разницы какой уровень изоляции, вроде бы как, а вот как раз повторяемость и должен постгрес обеспечивать, понятно что в нем самом могут быть ошибки никто от этого не застрахован )

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

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