Блокировки в PostgreSQL
Чтобы рассказать о тонких моментах pg_repack, мне понадобится немного углубиться в
тему блокировок в PostgreSQL. Конечно, лучше всего начать читать про них в официальной документации. Для этой статьи достаточно понимать, что
эксклюзивная блокировка (ACCESS EXCLUSIVE LOCK) препятствует выполнению всех операций, включая SELECT
, и она нужна для операции
ALTER TABLE
.
Ремонт БД на лету с помощью pg_repack
Окончились новогодние праздники, а это значит, что пора с новыми силами кинуться в бой с ИТ-сложностью, ИТ-хаосом и другими ИТ бедами.
Одной из бед всех версионных БД является разбухание таблиц. Все бы ничего, но если количество активно используемых данных перестает влезать в оперативную память, то время обработки запросов к БД чрезвычайно сильно возрастает (об этом я напишу в ближайшем будущем). И чтобы «впихнуть» размеры таблицы в нужный размер, иногда приходится делать некоторые нетрадиционные трюки.
Последствия выступления на Railsclub'Ulsk
В эту субботу 15 декабря я выступал в Ульяновске с докладом «Нетрадиционное использование Ruby и PostgreSQL». Несмотря на несколько провокационное название, доклад был посвящен вполне обыденным вещам: о том, как использовать Ruby и PostgreSQL не в web-проекте с Rails. Я рассказал о Ruby внутри Vim, hstore и PostgreSQL массивах внутри Rails (кстати, hstore и ARRAY неоднократно упоминались на конференции, так что я был неоригинален), а самая забавная часть моего доклада была посвящена несуществующей документоориентированной БД rmongo.rb. Видеозапись второго дня еще доступна на сайте Railsclub, и я надеюсь, что и первый день скоро появится в общем доступе.
Исходные коды, которые связаны с докладом, я выложил на Gist, сам доклад я выложил на Slideshare.
Index Only Scan в Postgresql 9.2
Вообще, сам не узнаю себя, уже ровно месяц прошел с выпуска Postgresql 9.2, даже вышло обновление 9.2.1, исправляющее некоторые баги, а я все еще ничего не написал об этом.
Поэтому сегодня рассказ будет о Index Only Scan — самом заметном, по моему мнению, изменении в 9.2. Кстати, именно это изменение стоит первым в Release Notes, а значит я не одинок.
Кипр и хвосты
22 сентября я уезжаю на Кипр на 3 недели всей семьей. Если кто-то хочется встретиться со мною лично, либо есть какое-то деловое или не очень предложение, обращайтесь на мой email.
Сегодня уезжает последний наш гость на конференции RailsClub — Диркьян Бушинк. Мы с Иваном Самсоновым успели взять у него интервью, которое выйдет в ближайшем подкасте RubyNoName. Я очень благодарен всем, кто помогал проводить нам конференцию, а также тем, кто пришел. Я прочитал множество теплых отзывов в твиттере, больше вам спасибо за это.
Конференции
Сегодня я хочу рассказать о пользе конференций в жизненной практике любого специалиста. Если вы просто работаете в своей профессии и не хотите стать и быть Специалистом (именно так, с большой буквы), то дальше можете не читать.
Командный игрок
Технологии, конечно, технологиями, но иногда хочется рассказать чего-то «про жизнь». А именно про то, как работают хорошие команды. Собственно, этот рассказ тоже о технологиях, только о человеческих.
К несчастью, технологии работы с людьми формализуются достаточно плохо, и такой ясности, как при работе с компьютерами, конечно же нет. Поэтому сказать точно, что такое «хорошая команда», практически невозможно. Параметров оценки этого слишком много, да и каждый параметр даже не понятно, чем измерять. Поэтому я просто поделюсь своими соображениями на этот счет, не претендую никоим образом на объективность и правоту.
Barman и WAL-E
В postgresql есть замечательная возможность делать непрерывные бэкапы, то есть бэкапы, по которым можно восстановиться на любой момент времени.
Если вы делаете обычные бэкапы и запускаете в час ночи pg_dump, а в час дня ваш сервер БД умер, то вы потеряете данные за 12 часов и доверие ваших пользователей. Для многих web-сервисов такой сценарий неприемлем, и, чтобы минимизировать потери данных, стоит использовать непрерывный бэкап.
Проблема с сортировкой русских слов в Postgres на OSX
Я давно мечтаю об Ubuntu, которая работает так же хорошо, как OSX. К несчастью, большинство пользовательских программ в Ubuntu хуже, чем в OSX, а что касается серверной части - OSX очень сильно отстает от Ubuntu (Debian).
К примеру, по-умолчанию, в Postgresql в OSX сломана сортировка русских слов. Решение я нашел здесь.
Посещение Ульяновска
Прошла уже почти неделя, как я вернулся из Ульяновска, но все никак не добегали пальцы до клавиатуры, чтобы поделиться впечатлениями.
Во-первых, я хочу выразить большую благодарность Кириллу Мокевнину, который встретил нас на вокзале на машине, помог поселиться, показал город, показал мне свой офис, а также организовал небольшую Ульяновскую ruby-тусовку. Кирилл организовал достаточно большой офис ruby-разработки, где много света, красиво, аккуратно и стеклянные туалеты. Поначалу они пугают, но стекло матовое и в целом это скорее забавно, чем неуютно.