mirror of
https://github.com/lancedb/lancedb.git
synced 2026-10-13 07:12:27 +00:00
The two Function pages declare `launch: functions`, and every other page marks what it says about Functions, so the assembled site leaves them out until the launch. Before it, the pages that offered Functions for Python work point Enterprise readers at Geneva instead. The SQL Function example now uses Arrow type names, which the server requires, and states the 3.12 default for `python_version`.
113 lines
4.3 KiB
Plaintext
113 lines
4.3 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.
|
|
|
|
## 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, 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.
|