⚾ Специалист по PostgreSQL выдал базу: Индексы – это костыли для PK.
Часть 1. Здравый смысл.
Ваще не шарю в базах данных. На всяких собесах всегда трясусь коленками и краснею щеками, когда спрашивают про уровни изоляции транзакции. В работе почему-то не краснею. Быстро что-то вспоминаю и как-то живу.
Иногда вот выходят такие доклады, после которых думаешь что прозрел и теперь не будешь трястись коленками. Не знаю, видели вы или нет, доклад от Андрея Сальникова "Индексы в PostgreSQL. Как понять, что создавать", но это, короче, именно такой ЛЕГЕНДАРНЫЙ доклад.
В течение двух часов все идет строго по практике. Я за один присест посмотреть не смог, поэтому глядел, как тик-ток – по одному салйду за раз и все конспектировал (не подумайте, что я конспектирую тик-ток).
Разбил конспект на логические части и буду понемногу превращать в удобоваримое и выкладывать:
🅰️ Какие штуки я для себя подчерпнул:
0️⃣ Как нужно относиться к индексам: Индексы – это костыли для PK. Необходимые, но костыли.
1️⃣ У обычных приложений профиль нагрузки: 90-95% – чтение, 5-10% – запись. Если ваш профиль нагрузки сильно смещается в сторону чтения, то это значит, что реляционная база вам не подходит, и вам нужно использовать колоночные базы или что-то еще.
2⃣️️️️️️ В постгрессе строки не меняются, а вставляются новые версии (MVCC и все дела). Старые версии со временем чистятся ваакуумом. Но вот с индексами так не происходит!, поэтому индексы в постгрессе могут раздуваться. Их нужно пересоздавать время от времени.
3️⃣ Индексы замедляют запись, но для реляционных баз данных это не так критично из-за пункта 1️⃣ – так как записей все же меньше в нормальном случае.
#postgresql #андрейсальников
Post #223
536
- 🔥 9
- 👍 3
- ❤ 1