mirror of
https://github.com/lancedb/lancedb.git
synced 2026-10-13 07:12:27 +00:00
Ten merges and renames, all in one direction: fewer pages, each covering a whole subject. Table absorbs schema evolution and versioning. Vector search absorbs multi-vector. Explain absorbs explain analyze. Reranking was seven pages -- an overview and six rerankers of a few dozen lines each -- and is now one. The vector index page absorbs quantization, which was only ever a parameter of it. Indexing moves to Manage, where the other catalog objects are. The operational half stays in Operate as one Indexing page, absorbing GPU indexing -- which was filed in sophon despite importing lancedb's snippets and being mostly open-source content with one Enterprise-badged section. Performance was a single page aggregating tips for four unrelated operations, which is hard to keep current. Each section now sits with the operation it is about: ingestion tips on Insert, index tips on Indexing, compaction tips on Compaction, query tips on Search. Data Types leaves Concepts. The type reference belongs in the SQL reference, which already described the same types from the query side; Table now carries a short summary that points there. The multimodal material it had absorbed is its own page again, since storing blobs is a task rather than a type definition. Query becomes Semantic Search, Branches becomes Branch, and the Enterprise Security page becomes Compliance. Redirects cover every moved URL, and 30 files were repointed at the merged anchors.
104 lines
3.6 KiB
Plaintext
104 lines
3.6 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.
|
|
|
|
This page covers bounds that are the same for everyone. Deployment-specific
|
|
quotas -- 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.
|
|
|
|
## Jobs {#jobs}
|
|
|
|
| | |
|
|
| --- | --- |
|
|
| `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 [Query and job](/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 |
|
|
|
|
Stable row ids **cannot be enabled after a table exists**. A table created
|
|
without them cannot become a
|
|
[materialized view](/management/materialized-view) source without being
|
|
recreated -- the one schema decision here that is genuinely irreversible.
|
|
|
|
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, server-chosen name |
|
|
| `REFRESH MATERIALIZED VIEW ... CASCADE` | parsed, not yet implemented |
|
|
|
|
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/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 methods in the TypeScript SDK | none; use a Flight SQL client |
|
|
| Function methods in the TypeScript SDK | none; use Python or SQL |
|
|
| Vector search in SQL | no SQL form; use a query builder |
|
|
| 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 [SDKs and SQL](/basics/apis) for why the first two 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.
|