--- title: "Limits" sidebarTitle: "Limits" description: "The bounds you can actually hit, in one place." icon: ruler keywords: ["limits", "maximum", "quota", "constraints", "bounds"] --- Limits worth designing around, collected so you do not have to find them by hitting them. Each one is enforced -- where a value is refused rather than clamped, that is stated, because the two fail very differently. Some of these bounds apply only on a deployment, as their sections say. Quotas that a deployment sets -- storage, throughput, concurrency -- come from your deployment. ## Names {#names} | Object | Maximum | | | --- | --- | --- | | Database | 64 characters | | | Namespace | 64 characters | | | Table | 128 characters | | | Branch | 64 characters | | A name must not be empty, and must not contain `$` or `:` -- both are reserved as path delimiters, so a name holding one could not be addressed unambiguously. Length is counted in characters, not bytes. These lengths are a deployment's limits; the embedded library does not limit name length. ## Jobs {#jobs} Enterprise These bounds belong to a deployment's job service. Jobs on a local database run in-process and keep no event history. | | | | --- | --- | | `job.events()` default | 1,000 rows | | `job.events()` maximum | 10,000 rows | | `SHOW ERRORS ... LIMIT` | between 1 and 100,000 | | Failed jobs scanned by one `SHOW ERRORS` | 32 | `job.events()` **truncates silently**. A job that emits an event per fragment will lose its tail unless you pass `limit` explicitly. This is the limit on this page most likely to mislead you, because nothing in the result says it was cut. `SHOW ERRORS` without `FOR JOB` scans the most recent failed jobs and stops at 32 of them. Narrow with `FOR JOB` when you need a specific one rather than a survey. See [Jobs](/basics/jobs). ## Schema and types {#schema} | | | | --- | --- | | `map` with `keys_sorted = true` | rejected | | `IVF_RQ` vector dimensions | must be divisible by 8 | | FTS `max_token_length` | 40 by default; longer tokens are dropped | Through the SDK, a table gets **stable row ids** only at creation, from the `new_table_enable_stable_row_ids` storage option on a local path or an object store; no SDK call adds them later, so decide early. A local [materialized view](/feature-engineering/materialized-views#stable-row-ids) does not need them. On a deployment, whether a view's source needs them and how a table gets them depend on the deployment; see [Against a deployment](/feature-engineering/materialized-views#availability). See [Data types](/sql/data-types). ## SQL {#sql} Enterprise | | | | --- | --- | | `TABLESAMPLE` percentage | 0 to 100, **refused** outside -- not clamped | | `TABLESAMPLE (n ROWS)` | whole numbers only | | `TABLESAMPLE BUCKET` | not supported | | `TABLESAMPLE` on a WAL-backed table | not supported | | `CREATE INDEX` | one column, server-chosen name | | `REFRESH MATERIALIZED VIEW ... CASCADE` | depends on the deployment's version; see [REFRESH](/sql/dml/refresh#refresh-materialized-view) | A sampling percentage over 100 is an error rather than a full scan, because a query asking for 150 percent has a mistake in it and reading it as 100 would hide the mistake. See [Sampling](/sql/dql/sampling). ## What is unavailable where {#availability} Not quotas, but the same class of surprise -- things that exist in one place and not another. | | | | --- | --- | | SQL on a local database | unavailable; `execute_query` raises | | SQL on a deployment | needs its Flight SQL endpoint enabled and reachable | | SQL methods in the TypeScript SDK | none; use a Flight SQL client | | Function methods in the TypeScript SDK {/* if functions launched */} | none; use Python or SQL | | Vector search in SQL | [depends on the deployment](/basics/sql#no-vector-sql); the query builder always has it | | Geospatial `st_*` functions | behind a build feature LanceDB does not ship | | `tableExists` / `namespaceExists` in TypeScript | not present | | Server-side jobs on a local database | run in-process; `events()` raises | See [SQL](/basics/sql) for why the first three hold. ## Nothing here is a quota {#not-quotas} None of the above is a billing or capacity limit. Rows per table, table count, storage, and request rate are bounded by your deployment rather than by the format -- ask your deployment, not this page.