Пісочниця
Тут працює справжній PostgreSQL, зібраний у WebAssembly (PGlite), і DuckDB для аналітичних запитів. Обидва виконуються у вашому браузері, на сервер нічого не надсилається. База з’являється в пам’яті при першому натисканні «Виконати»: це близько 7 МБ даних PostgreSQL і ще кілька мегабайтів коду рушія (браузер кешує їх). Створені вами індекси й таблиці живуть, доки сторінка відкрита, а кнопка «Скинути базу» повертає чистий датасет.
Приклади запитів підставляються в поле, а виконує їх кнопка «Виконати»:
Після першого запиту решта виконується миттєво. Перемикач над полем запиту вибирає
рушій; кожен тримає свою копію даних. Діалекти відрізняються, тому приклад для DuckDB
позначено окремо. Для DuckDB EXPLAIN ANALYZE теж працює, але формат плану інший, ніж у PostgreSQL.
Датасет «Крамниця»
Section titled “Датасет «Крамниця»”Пісочниця працює на малому розмірі датасету, small: 16 таблиць і близько 193 тисяч рядків.
Таблиці, їхні звʼязки й три розміри датасету описано на сторінці Датасет.
Числа в модулях інколи виміряно на більшому розмірі, тож у пісочниці вони будуть меншими.
У таблицях є лише первинні ключі, вторинних індексів немає навмисно: їх додаєте ви, і в планах видно різницю. Час у датасеті в UTC.
Обмеження
Section titled “Обмеження”- Показується до 200 рядків результату, решту відсічено.
- Запити виконуються в основному потоці сторінки. Дуже важкий запит на якийсь час заморозить вкладку.
- PGlite працює з одним з’єднанням, тож дві одночасні транзакції (сесії A і B) у ньому не відтворити. Аномалії ізоляції з двома сесіями відтворює лабораторна L5 на справжньому PostgreSQL.
- Дані малого розміру (
small): на трьох тисячах товарів планувальник часто обирає послідовне сканування навіть тоді, коли індекс є. Наmediumрізницю видно краще, для цього є лабораторні наdocker compose.