@pgsql

Страница 144 из 1062
Evgeniy
04.11.2016
20:53:37
как в lsm деревьях

Марк ☢
04.11.2016
20:53:51
Ну окей. Если я прописал трешачок в середину блока то профсинкает ли линукс не измененные мной данные в странице -- какбы пофиг

А вот измененные могут попасть на диск а могут и нет

Только поверх мусора (вроде) или вобще только всегда в конец. Я не знаю точно.
А нет, пишет в середину файла. Я вспомнил. Может. Но это не меняет моего вопроса.

Google
Марк ☢
04.11.2016
20:55:50
Итого: зачем писать тупли асинхронных коммитов в вал ?

Evgeniy
04.11.2016
20:57:12
потому что постгрес не пишет новый блок на каждую тюплю и ему надо фиксировать изменения в блоке

Darafei
04.11.2016
20:57:37
можно не писать, CREATE UNLOGGED TABLE сделает тебе таблицу, для которой wal не пишется

Марк ☢
04.11.2016
20:57:59
Но тогда ведь коррапт бд будет при сбое питания. Верно ?

Darafei
04.11.2016
20:58:04
нет

Марк ☢
04.11.2016
20:58:14
Вот это поворот.

Darafei
04.11.2016
20:58:17
постгрес просто её затранкейтит

Evgeniy
04.11.2016
20:58:23
в анлоггед при сбое он просто транкейтит таблицу :)

никакого коррапта, просто пусто

ыхыхых

Марк ☢
04.11.2016
20:58:48
Транкейтит это что значит ? Прям все записи удаляет ?

Evgeniy
04.11.2016
20:58:49
пустота это тоже консистентность!

Марк ☢
04.11.2016
20:59:15
Всегда все ? Или обычно все ?

Google
Darafei
04.11.2016
20:59:33
все при любом сбое

Аггей
04.11.2016
20:59:40
Транкейт - по определению - все )

Вопрос - а как он определяет неконсистентность при сбое

Evgeniy
04.11.2016
21:01:24
в pg_control поидее видит что был аномальный выход и транкейтит все анлогд таблицы

Марк ☢
04.11.2016
21:02:00
Дак они никогда не фсинкаются. Поэтому всегда невалидные. Не ?

Аггей
04.11.2016
21:02:30
Но аномальный выход не означает, что в эту таблицу писали... и что она неконсистентна ведь

Evgeniy
04.11.2016
21:02:40
так а зачем рисковать

Аггей
04.11.2016
21:03:06
Я думал - там хитрый алгоритм какой-нибудь

Darafei
04.11.2016
21:03:16
очень простой

просто не роняйте базу, и оно будет жить

Марк ☢
04.11.2016
21:04:09
А что, при корректном выходе постгрес фсинкает анлоггед таблицы ?

Darafei
04.11.2016
21:04:53
а почему бы и нет? :)

Марк ☢
04.11.2016
21:05:02
Я просто спросил

Тогда завершение постгреса может затянуться.....

Evgeniy
04.11.2016
21:05:21
получается что должен фсинкнуть да

Марк ☢
04.11.2016
21:07:23
Я еще хочу помучить вопросами

Тут гдето проскакивала мысль что сначала пишем в журнал линейно большим шматом. И фсинкаем. Эт типа быстро. Параллельно пишем рандомным ио в таблицы. Но ведь потом надо всеравно будет таблицы фсинкать когда-нибудь. И там будет адский рандом ио. Почему при коммите не ждать пока именно в таблицах не произойдет фсинк? Зачем откладывать ?

Darafei
04.11.2016
21:09:47
Я еще хочу помучить вопросами
а у вас этот постгрес в айдеко, получается, на тех самых системах фильтрации контента стоит? :)

Марк ☢
04.11.2016
21:10:09
Хм. Да. Для статистики по трафику.

Наконец-то нашлись вменяемые люди у кого можно по работе постгреса спросить.

Google
Марк ☢
04.11.2016
21:11:28
Ну я спросил.

:)

Evgeniy
04.11.2016
21:11:54
ну вообще без жернала не понятно как рекавери еще делать

Марк ☢
04.11.2016
21:12:16
Никак. Но в жрнале я предлагаю хранить только метаданные

Evgeniy
04.11.2016
21:12:22
то что ты попросил записать 20 блоков одним фсинком, фс сделает не атомарно

Марк ☢
04.11.2016
21:12:28
А сами тупли туда не пихать.

Evgeniy
04.11.2016
21:12:41
и получается torn write

разорваная запись

поэтому придумали жернал

Марк ☢
04.11.2016
21:13:10
Соответственно писать тупли в таблицы. Фсинкать пофайлово каждую таблицу. И только потом фсинкать в журнале факт профсинкивания таблиц.

Evgeniy
04.11.2016
21:13:10
с данными

ну ты опять просишь аппенд онли файлы

Марк ☢
04.11.2016
21:13:39
Нет же.

Пример когда это не будет работать при записи туплей в середину энной страницы ?

Evgeniy
04.11.2016
21:14:18
окай, ты вставляешь 100 байт в таблицу. создаем новый 8кб блок или в старый пишем?

Марк ☢
04.11.2016
21:14:32
Ну пусть в старый.

Старый это типа профсинканный когдато ранее. Верно ?

Evgeniy
04.11.2016
21:14:51
ну значит ты записал один блок и в вал пометил что записал. гуд

теперь смотри

ты вставляешь 8 раз по 100 байт в разные блоки старые

Google
Evgeniy
04.11.2016
21:15:09
говоришь фсинк

Марк ☢
04.11.2016
21:15:16
Так.

Evgeniy
04.11.2016
21:15:18
4 блока записала фс. 4 нет

ты стартуешь

Марк ☢
04.11.2016
21:15:24
Ок.

Evgeniy
04.11.2016
21:15:28
4 блока сука невалидно

ролбека нет

Марк ☢
04.11.2016
21:15:38
С чего это.

Evgeniy
04.11.2016
21:15:46
ну 4 ты перезаписал, 4 не записал

Марк ☢
04.11.2016
21:15:51
Все 8 туплей невалидные.

Admin
ERROR: S client not available

Марк ☢
04.11.2016
21:15:56
Именно туплей

А не блоков.

Evgeniy
04.11.2016
21:16:18
представь что транзакция твоя потрогала 8 разных блоков

ты же решил что мы в старые пишем, а не новые блоки делаем

Марк ☢
04.11.2016
21:16:50
Эт смотря ка потрогала. Если она при этом не меняла валидных ранее данных ни байта. То все ок.

Evgeniy
04.11.2016
21:17:15
блядь, ну понятно что ок. но мы же про поменяла говорим

чувак

Марк ☢
04.11.2016
21:17:29
Погоди.

Допустим в таблице первые сто байт это чужие тупли которые ранее были профсинканы. Мы пишем вторы двести байт.

Google
Марк ☢
04.11.2016
21:18:26
Если эта страница непрофсинкалась или профсинкалась неполностью, то те первые сто байт ка были валидные так и остаются

Evgeniy
04.11.2016
21:19:52
да, так myisam работает

и новые тоже валидные

всё валидное

Марк ☢
04.11.2016
21:20:15
Што ?

Darafei
04.11.2016
21:20:15
мне кажется, вы тут за wal_level=minimal

wal_level=minimal не пишет, например, таплы в вал при copy

Evgeniy
04.11.2016
21:21:21
ну Марк говорит что старые валидные, а я говорю что хочу и новые записи валидными

Марк хочет чтобы как в myisam было

с копи там дохуя спешал кейс. давай не будем

Марк ☢
04.11.2016
21:22:18
Эээээ

О. Про вал левел пойду почитаю. Это видимо то что мне надо.

Evgeniy
04.11.2016
21:23:33
не переживай, про вал левел ты ничего не начитаешь

это черный ящик

Марк ☢
04.11.2016
21:24:11
The default value is minimal, which writes only the information needed to recover from a crash or immediate shutdown.

Ну тоесть тупли он туда не пишет ?

Evgeniy
04.11.2016
21:24:32
где ты это прочитал

что не пишет

Darafei
04.11.2016
21:24:40
Aside from avoiding the time for the archiver or WAL sender to process the WAL data, doing this will actually make certain commands faster, because they are designed not to write WAL at all if wal_level is minimal. (They can guarantee crash safety more cheaply by doing an fsync at the end than by writing WAL.) This applies to the following commands: CREATE TABLE AS SELECT CREATE INDEX (and variants such as ALTER TABLE ADD PRIMARY KEY) ALTER TABLE SET TABLESPACE CLUSTER COPY FROM, when the target table has been created or truncated earlier in the same transaction

Марк ☢
04.11.2016
21:24:41
Нигде. Я спросил.

Evgeniy
04.11.2016
21:25:00
пишет говорит то, что надо писать! а что пишет хуй скажу

кот, да, тут кейс как в анлогд просто

фсинкает весь файлик

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