Size: a a a

pgsql – PostgreSQL

2020 June 10

s

sexst in pgsql – PostgreSQL
Михаил Шурутов
RAID 1 из ssd? А смысл? Ведь наработка на отказ у SSD, как показывает практика и мнение специально обученных людей, формируется из циклов (пере)записи. А таковые у дисков в RAID1 идентичные. И что толку из этого рейда, когда оба диска вылетят по достижении какого-то условного порога?
А вот на что надо обратить внимание, так это на фрагментацию диска и пресловутый TRIM и прочие "радости", когда контроллер диска пишет не в свободное место, а в более чистое. Ещё хлеще, чем MVCC у ПГ. Т.е. вроде как декларируется, что ТРИМ освобождает блоки, и в эти блоки пишется новая инфа, но на деле, освобождать освобождает, да только вот запись идет в более "чистые" блоки. Соответственно, пока есть блоки, в которых ещё ничего не было, скорость - ууухх! Когда эти блоки кончаются, скорость - ой, блин. что ж оно так тормозит?!
Вон у меня ноут лежит, 9 лет. На ём гента. Долгое время система собиралась на месте, т.е. циклов перезаписи было - прилично. Супруга жаловалась на лютые тормоза. Я слегонца подзабил на регулярное обновление, с немного предсказуемыми последствиями. Соответственно, дамп, пользовательских данных, зачистка диска (Securely wipe disk SSD в поиск), установка системы (сборка бинарных пакетов на десктопе, ибо десктоп - несколько пошустрее). И, о чудо! Машинка стала хорошо так отзывчивее. Вот как-то так.
1) Ставить в рейд-1 одинакового объема ssd диски никто в здравом уме не станет. Одна модель, разные объёмы, создаём на каждом раздел размером на 5% меньше объема ме́ньшего диска и смело собираем в рейд. Благодаря wear leveling и разному объёму дисков одновременно они из строя не выйдут.
2) С ноутом дико сложно чот. Если трим не вариант, то просто записываете на каждый раздел выхлоп /dev/zero в файл под завязку, потом стираете его. Все бытовые и почти все dc-grade ssd чистятся таким нехитрым образом
источник

AP

Anton Patsev in pgsql – PostgreSQL
Расшифровываю в текст доклад "Unlocking the Postgres Lock Manager" от Bruce Momjian. Если кто-то хочет почитать или поревьюить, то welcome в личку
источник

s

sexst in pgsql – PostgreSQL
Alexey Stavrov
Там буковка I что означает?
Когда речь заходит про распределённые системы serializable перестаёт обозначать то, что обычно имеется ввиду. В distributed случае serializable становится очень расплывчатым значением с разным поведением, поэтому нужно уточнять.
Вообще они божатся что у них прям честный serializable isolation.
https://www.cockroachlabs.com/blog/diy-jepsen-testing-cockroachdb/#from-si-to-ssi
источник

AS

Alexey Stavrov in pgsql – PostgreSQL
Какой из?
Я написал, что их много разных, когда distributed случай.
источник

s

sexst in pgsql – PostgreSQL
Alexey Stavrov
Какой из?
Я написал, что их много разных, когда distributed случай.
transactions must appear to be processed in some order from the perspective of one client
источник

s

sexst in pgsql – PostgreSQL
У них и тест есть - в транзакциях выбирается максимальное значение из столбца, инкрементируется и дописывается в этот же столбец сразу кучей потоков, потом проверяется отсутствие дубликатов. Их отсутствие после многих итераций, в принципе, говорит о честности сериализации.
источник

AS

Alexey Stavrov in pgsql – PostgreSQL
sexst
Tarantool офигенен для задач кеширования. Да, из коробки там ничего нет, нужно самому и логику на lua писать и "таблички" делать. Но быстродействие весьма и весьма, хранилка чуть понавороченнее нежели key-value, есть транзакции, плюс возможность вообще любую бизнес-логику  написать меня лично подкупили с потрохами.
А, да. Был у них и  относительно штатный способ для закоса под memcached.
А если сравнивать с redis, то какие преимущества tarantool (или redis)?
источник

AS

Alexey Stavrov in pgsql – PostgreSQL
sexst
У них и тест есть - в транзакциях выбирается максимальное значение из столбца, инкрементируется и дописывается в этот же столбец сразу кучей потоков, потом проверяется отсутствие дубликатов. Их отсутствие после многих итераций, в принципе, говорит о честности сериализации.
Это тест только на аномалию write skew, если я правильно понимаю.
источник

AS

Alexey Stavrov in pgsql – PostgreSQL
@hogstaberg
Нашёл статью и табличку.
http://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html

Выглядит так, что если STRONG PARTITION SERIALIZABLE или STRICT SERIALIZABLE, то это очень хорошо.
источник

4

4g in pgsql – PostgreSQL
Михаил Шурутов
RAID 1 из ssd? А смысл? Ведь наработка на отказ у SSD, как показывает практика и мнение специально обученных людей, формируется из циклов (пере)записи. А таковые у дисков в RAID1 идентичные. И что толку из этого рейда, когда оба диска вылетят по достижении какого-то условного порога?
А вот на что надо обратить внимание, так это на фрагментацию диска и пресловутый TRIM и прочие "радости", когда контроллер диска пишет не в свободное место, а в более чистое. Ещё хлеще, чем MVCC у ПГ. Т.е. вроде как декларируется, что ТРИМ освобождает блоки, и в эти блоки пишется новая инфа, но на деле, освобождать освобождает, да только вот запись идет в более "чистые" блоки. Соответственно, пока есть блоки, в которых ещё ничего не было, скорость - ууухх! Когда эти блоки кончаются, скорость - ой, блин. что ж оно так тормозит?!
Вон у меня ноут лежит, 9 лет. На ём гента. Долгое время система собиралась на месте, т.е. циклов перезаписи было - прилично. Супруга жаловалась на лютые тормоза. Я слегонца подзабил на регулярное обновление, с немного предсказуемыми последствиями. Соответственно, дамп, пользовательских данных, зачистка диска (Securely wipe disk SSD в поиск), установка системы (сборка бинарных пакетов на десктопе, ибо десктоп - несколько пошустрее). И, о чудо! Машинка стала хорошо так отзывчивее. Вот как-то так.
Ну так контроллер raid должен поддерживать ssd. Иначе будет просадка по записи со временем.
Большинство контроллеров (исходя из чтения официальных документов - во всяком случае 2-3 года назад было так) умеют в поддержку сразу либо лечится прошивкой, а вот им приблизительно лет 6-7 назад это было целым квестом найти контроллер с заявленной поддержкой
источник

AS

Alexey Stavrov in pgsql – PostgreSQL
Alexey Stavrov
@hogstaberg
Нашёл статью и табличку.
http://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html

Выглядит так, что если STRONG PARTITION SERIALIZABLE или STRICT SERIALIZABLE, то это очень хорошо.
Кстати, в этой статье есть что-то про cockroachdb.
Может там и ответ есть.
источник

AS

Alexey Stavrov in pgsql – PostgreSQL
Если я правильно понял, то там STRONG PARTITION SERIALIZABLE
источник

s

sexst in pgsql – PostgreSQL
Alexey Stavrov
А если сравнивать с redis, то какие преимущества tarantool (или redis)?
Redis имеет кучу моделей данных из коробки, но тормознее и возможности написать свою логику lua там откровенно кастрированные.

Тарантул из коробки разных моделей данных не предоставляет, по сути это сервер для приложений на lua с библиотекой для организации таблиц/индексов и работы с ними. Но lua там позволяет гораздо больше, работает в целом это сильно быстрее, понаписать можно в общем-то всё, на что хватит воображения. Тоже, кстати, работает в одном системном процессе (то есть умеет выедать только один CPU), но за счёт этого как раз выжимается впечатляющий перформанс (нет ненужных блокировок, синхронизаций состояния итд), можно сказать это его фича. Но в комплекте есть и либа для организации тредов внутри этого процесса, то есть concurrency реализуется легко. Ну и, как вишенка на торте, можно воткнуть коннекторы для разных СУБД. Можно, например, написать функцию, которая ищет запрошенное значение в своих таблицах, а в случае отсутствия лезет в базу и забирает нужное оттуда, отдаёт и само кеширует.

Мне прямо вообще зашло в свое время под всякие умные кэши или очереди.
источник

AS

Alexey Stavrov in pgsql – PostgreSQL
sexst
Redis имеет кучу моделей данных из коробки, но тормознее и возможности написать свою логику lua там откровенно кастрированные.

Тарантул из коробки разных моделей данных не предоставляет, по сути это сервер для приложений на lua с библиотекой для организации таблиц/индексов и работы с ними. Но lua там позволяет гораздо больше, работает в целом это сильно быстрее, понаписать можно в общем-то всё, на что хватит воображения. Тоже, кстати, работает в одном системном процессе (то есть умеет выедать только один CPU), но за счёт этого как раз выжимается впечатляющий перформанс (нет ненужных блокировок, синхронизаций состояния итд), можно сказать это его фича. Но в комплекте есть и либа для организации тредов внутри этого процесса, то есть concurrency реализуется легко. Ну и, как вишенка на торте, можно воткнуть коннекторы для разных СУБД. Можно, например, написать функцию, которая ищет запрошенное значение в своих таблицах, а в случае отсутствия лезет в базу и забирает нужное оттуда, отдаёт и само кеширует.

Мне прямо вообще зашло в свое время под всякие умные кэши или очереди.
Да, выглядит вкусно
источник

s

sexst in pgsql – PostgreSQL
Alexey Stavrov
@hogstaberg
Нашёл статью и табличку.
http://dbmsmusings.blogspot.com/2019/06/correctness-anomalies-under.html

Выглядит так, что если STRONG PARTITION SERIALIZABLE или STRICT SERIALIZABLE, то это очень хорошо.
Вот статья, где вообще разжевано до безумия
https://www.cockroachlabs.com/blog/consistency-model/
Я по диагонали пробежался, похоже на strong partition serializable. Они даже описывают возможные gotchas, которые пока что не дают strict serializable. И обещают разобраться с ними.
источник

s

sexst in pgsql – PostgreSQL
4g
Ну так контроллер raid должен поддерживать ssd. Иначе будет просадка по записи со временем.
Большинство контроллеров (исходя из чтения официальных документов - во всяком случае 2-3 года назад было так) умеют в поддержку сразу либо лечится прошивкой, а вот им приблизительно лет 6-7 назад это было целым квестом найти контроллер с заявленной поддержкой
А зачем в 2020 году ставить в linux сервер raid контроллер вообще? Вброшу мнение о том, что их эпоха давно ушла, смутный смысл ставить есть только ежели у вас windows на сервере.
источник

П

Павел П. in pgsql – PostgreSQL
Anton Patsev
Вот скажите, текст воспринимается лучше же чем видео? Пост помог разобраться в patroni?
Конечно текст лучше! Сильно помог
источник

4

4g in pgsql – PostgreSQL
sexst
А зачем в 2020 году ставить в linux сервер raid контроллер вообще? Вброшу мнение о том, что их эпоха давно ушла, смутный смысл ставить есть только ежели у вас windows на сервере.
Ну выход из строя диска с системным разделом например. В режиме r1 система запустится по крайней мере и просигнализирует через то-то же забикс например адммнам - у нас тут раздел дегрэйдед... техник придет вставит другой диск, админ проверит что контроллер подхватил ну или диск подхватит из hot spare.
Я просто не пойму как windows и необходимость raid связаны между собой, а linux и raid нет. (И да, я в курсе про программный raid).
Не защищаю то или иное решение, просто не понимаю
источник

АК

А К in pgsql – PostgreSQL
всем привет! У меня ошибка
"fatal error: The application server could not be contacted"
пробовал удалять папку pgAdmin, пробовал запускать от имени администратора. НИЧЕГО НЕ ПОМОГАЕТ. что делать? у меня windows 7
источник

АК

А К in pgsql – PostgreSQL
версия postgreSQL 11.8
источник