Skip to content

Limits & quotas

View Markdown

This page covers two kinds of limits: resource quotas on the service, and SQL compatibility limits inherited from the PizzaSQL engine.

Beta note. database.pizza is under active development. The quota defaults below are the current values and may change as plans evolve; treat them as indicative rather than contractual.

Quotas apply per organization and cover four dimensions:

Dimension Current default What counts
Databases 3 Active databases in the organization
Storage 100 MB Allocated on-disk space for the organization
Queries 500,000 / week Queries across all surfaces
Connections 100 concurrent Open PostgreSQL connections

Queries and bytes-read are counted per organization per week; concurrent connections are measured at any instant. Usage is visible in the dashboard’s Quota view.

When you hit a quota:

  • Creating another database beyond the database limit is rejected.
  • Exceeding storage prevents further writes that would grow the data.
  • The query and connection quotas cap sustained load until the window or connections free up.

If you need more, the limits are configurable per organization — reach out through the dashboard rather than working around them.

  • REST list results default to 100 rows and cap at 1000 per request (limit parameter).
  • Import uploads are size-limited: SQL and CSV multipart uploads cap at 32 MB; SQLite imports cap at 128 MB.
  • One statement per /query request. Use /execute to batch several, or the PostgreSQL protocol for scripts and transactions.
  • No transactions over HTTP. BEGIN/COMMIT and friends return 501; use the PostgreSQL protocol instead.

PizzaSQL is SQLite-compatible, not PostgreSQL. The most common surprises when coming from Postgres:

  • SERIAL and sequences don’t exist — use INTEGER PRIMARY KEY. Values are assigned automatically when omitted.
  • VARCHAR(n) is accepted but not length-enforced — use TEXT.
  • No schemas, roles, ARRAY, JSONB, or ENUM types.
  • No CREATE DATABASE/DROP DATABASE from a client — databases are managed in the dashboard (and require the platform’s create_database scope, not a client key).
  • Type affinity is SQLite-style, so column types are hints more than strict constraints.

The complete, authoritative list is on the Compatibility page — read it before generating production SQL.

Imports of existing SQLite databases skip several constructs: views, triggers, pragmas, expression indexes, and FOREIGN KEY / CHECK constraints. See Import & export.

The PostgreSQL proxy currently declines SSL, so all wire-protocol connections use sslmode=disable. The HTTP surface is HTTPS-only. Plan around this for sensitive data — see the security notes in API keys & permissions.