mirror of
https://github.com/lancedb/lancedb.git
synced 2026-10-12 14:52:26 +00:00
One page states the characters and lengths each kind of name can have, following the rules lancedb #4490 centralizes, with examples. It says what enforces them today: the embedded library checks table characters but not length, a directory namespace accepts more, the SDKs check db:// names only from the first release that includes #4490 (none yet), and a deployment can accept a longer name at creation and fail on it later. Readers are told to keep to the rules regardless. Limits, table creation and namespaces link to it.
115 lines
4.5 KiB
Plaintext
115 lines
4.5 KiB
Plaintext
---
|
|
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. Keep to them anyway,
|
|
and to the characters in [Naming rules](/basics/naming), which says what each
|
|
connection and version checks.
|
|
|
|
## Jobs {#jobs}
|
|
|
|
<Badge color="red">Enterprise</Badge> 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 |
|
|
|
|
<Warning>
|
|
`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.
|
|
</Warning>
|
|
|
|
`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}
|
|
|
|
<Badge color="red">Enterprise</Badge>
|
|
|
|
| | |
|
|
| --- | --- |
|
|
| `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; `USING` names the algorithm |
|
|
| `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.
|