Перейти до вмісту

Пісочниця

Тут працює справжній PostgreSQL, зібраний у WebAssembly (PGlite), і DuckDB для аналітичних запитів. Обидва виконуються у вашому браузері, на сервер нічого не надсилається. База з’являється в пам’яті при першому натисканні «Виконати»: це близько 7 МБ даних PostgreSQL і ще кілька мегабайтів коду рушія (браузер кешує їх). Створені вами індекси й таблиці живуть, доки сторінка відкрита, а кнопка «Скинути базу» повертає чистий датасет.

СпробуйCtrl+Enter — виконати

Приклади запитів підставляються в поле, а виконує їх кнопка «Виконати»:

Після першого запиту решта виконується миттєво. Перемикач над полем запиту вибирає рушій; кожен тримає свою копію даних. Діалекти відрізняються, тому приклад для DuckDB позначено окремо. Для DuckDB EXPLAIN ANALYZE теж працює, але формат плану інший, ніж у PostgreSQL.

Пісочниця працює на малому розмірі датасету, small: 16 таблиць і близько 193 тисяч рядків. Таблиці, їхні звʼязки й три розміри датасету описано на сторінці Датасет. Числа в модулях інколи виміряно на більшому розмірі, тож у пісочниці вони будуть меншими.

У таблицях є лише первинні ключі, вторинних індексів немає навмисно: їх додаєте ви, і в планах видно різницю. Час у датасеті в UTC.

  • Показується до 200 рядків результату, решту відсічено.
  • Запити виконуються в основному потоці сторінки. Дуже важкий запит на якийсь час заморозить вкладку.
  • PGlite працює з одним з’єднанням, тож дві одночасні транзакції (сесії A і B) у ньому не відтворити. Аномалії ізоляції з двома сесіями відтворює лабораторна L5 на справжньому PostgreSQL.
  • Дані малого розміру (small): на трьох тисячах товарів планувальник часто обирає послідовне сканування навіть тоді, коли індекс є. На medium різницю видно краще, для цього є лабораторні на docker compose.