Коротко: Prisma 7.8.0 не робить гучного шоу, але підкручує речі, які болять у реальних командах: керування queryPlanCacheMaxSize, виправлення для PostgreSQL JSON-фільтрів, міграцій і introspection. Це саме той реліз, який легко проігнорувати, а потім здивуватися, чому на проді росте пам’ять або чому один edge case у PostgreSQL знову поводиться як вперта кішка.
Проблема / контекст
У Prisma більшість проблем не виглядають драматично на першому екрані. Зазвичай усе починається тихо:
- запити працюють, але навантаження росте;
- міграції на staging проходять не так, як на локалі;
- один JSON-фільтр повертає дивну помилку;
- introspection підтягує не зовсім те, що ви очікували назад у Prisma schema.
У Prisma 7.8.0 саме такі історії й зачепили. Реліз додав один новий важіль для продуктивності та закрив кілька багів у PostgreSQL-шляху, які могли бути дрібними на папері, але дуже неприємними в живому застосунку.
Що змінилося у Prisma 7.8.0
1. З’явився ручний контроль над query plan cache
У Prisma Client додали queryPlanCacheMaxSize. Це дає змогу керувати розміром кешу планів виконання запитів.
Що це означає на практиці:
- якщо одна й та сама query shape повторюється знову і знову, кеш може допомогти з продуктивністю;
- якщо запитів дуже багато і вони всі різні, занадто великий кеш може даремно їсти пам’ять;
- якщо хочете відключити кеш зовсім, можна передати
0.
Це не кнопка «зробити швидше автоматично». Це інструмент для команд, які вже дивляться на профіль навантаження, а не на інтуїцію з кавою.
2. PostgreSQL-фільтри по JSON стали менш крихкими
Prisma 7.8.0 виправляє кілька багів саме для PostgreSQL:
- equality-фільтр по JSON list columns більше не ловить panic і не генерує неправильний
::jsonbcast; - case-insensitive JSON filtering із
mode: insensitiveтепер працює коректно; @mapдля enum-значень більше не ламає параметризацію;- перевірка ліміту параметрів
P2029стала коректнішою.
Людською мовою: якщо ваш бекенд активно працює з JSON, фільтрами і enum-ами, це реліз із дуже конкретною цінністю.
3. Міграції та introspection стали спокійнішими
Ще кілька важливих фіксів:
prisma migrate diffбільше не підсовує застаріле повідомлення про--shadow-database-url;prisma migrate devна PostgreSQL коректніше переживаєCREATE INDEX CONCURRENTLY;- introspection більше не губить sequence defaults, коли PostgreSQL повертає schema-qualified
nextval(...).
Це саме ті баги, які не видно в демо, але дуже добре видно в поганому релізному вечорі.
Чому це важливо
Якщо у вас Prisma + PostgreSQL, цей реліз б’є в три місця одночасно:
-
Продуктивність
queryPlanCacheMaxSizeдає реальний контроль над тим, що Prisma тримає в пам’яті. -
Коректність запитів JSON-фільтри, enum-значення і параметри тепер поводяться передбачуваніше.
-
Безпечні міграції
CREATE INDEX CONCURRENTLY, shadow database і introspection — це ті штуки, які краще перевірити зараз, а не під час нічного hotfix.
Якщо коротко: Prisma 7.8.0 не просто «оновлює версію». Воно знімає частину дрібних, але болючих ризиків у PostgreSQL-проєктах.
Як до цього підійти без сюрпризів
1. Спочатку знайдіть, де Prisma взагалі впливає на прод
Перед оновленням подивіться:
- які сервіси реально використовують Prisma Client;
- чи є у вас PostgreSQL;
- чи є JSON-поля з фільтрами;
- чи є міграції з index creation;
- чи використовуєте
db pullабо інші introspection-процеси.
Якщо ви не знаєте, де саме Prisma найважливіша, оновлення легко провести «нібито успішно» і пропустити найризиковіші місця.
2. Оновіть Prisma окремою гілкою
Не змішуйте це з паралельним рефакторингом schema, новими моделями і косметикою в тестах. Окремий diff = окремий розум.
Мінімальний порядок:
npx prisma -v
npx prisma generate
npx prisma migrate dev
npx prisma db pull
Потім прогнати ваші unit, integration і smoke-тести на PostgreSQL-даних, а не тільки на моках.
3. Тюнінг cache робіть тільки після вимірювання
Якщо хочете спробувати queryPlanCacheMaxSize, почніть із поточної дефолтної поведінки і порівняйте з кількома контрольованими значеннями на staging.
Корисно дивитися на:
- p95 / p99 latency;
- RSS або іншу пам’ять процесу;
- кількість повторюваних запитів;
- чи реально у вас багато різних query shapes.
Якщо запити майже завжди однакові, кеш зазвичай корисний. Якщо запити постійно різні, кеш може не дати відчутного бонусу.
4. Проганяйте PostgreSQL-edge cases окремо
Зробіть окремий smoke-набір:
- JSON equality;
mode: insensitiveна JSON;- enum поля з
@map; - міграція з
CREATE INDEX CONCURRENTLY; db pullна схемі з sequence defaults.
Це не параноя. Це дешевше, ніж ловити одну неправильну умову в проді.
5. Якщо є доступ до живого навантаження — порівняйте до і після
Після апгрейду дивіться не тільки на «build green». Дивіться на:
- поведінку API під реальним трафіком;
- час відповіді на типові запити;
- кількість помилок по PostgreSQL;
- розмір процесу;
- стабільність міграцій у staging.
Що не варто робити
Антипатерн 1. Увімкнути новий cache-важіль навмання
Якщо поставити значення без метрики, можна або нічого не виграти, або просто посунути проблему з CPU в пам’ять.
Антипатерн 2. Проковтнути реліз як «це ж тільки фікси»
Саме фікси часто і рятують прод. Тут вони дуже практичні: JSON, enum-значення, concurrent index creation, introspection.
Антипатерн 3. Не перевірити міграції окремо
migrate dev і db pull — не декоративні команди. Якщо ви їх використовуєте, їх треба реально прогнати після апгрейду.
Антипатерн 4. Змішати апгрейд Prisma зі schema-революцією
Коли в одному PR і нова версія, і нові моделі, і нові індекси, і нові тести, потім уже ніхто не знає, що саме зламало реліз.
Висновок / план дій
Prisma 7.8.0 — хороший момент, щоб зробити дві речі:
- підняти версію без зайвого героїзму;
- чесно перевірити, чи ваш PostgreSQL-кейс не сидів на одному з виправлених edge cases.
Найрозумніший шлях такий:
- оновити в окремій гілці;
- прогнати Prisma commands і ваші тести;
- перевірити JSON-фільтри та міграції;
- лише потім вирішувати, чи тюнити
queryPlanCacheMaxSize.
Коротко: не крутити ручку, поки не зрозуміли, що саме вона керує.
Офіційне джерело: