What are the technical limits of Firebird?
Here they are:
Maximum size of one database file:
- 16TB with Firebird 1.x
- 32TB with Firebird 2.x
- 64TB with Firebird 3.x
Maximum number of tables: 32k Tables
Maximum size of one table: 32TB (~30GB for Firebird 1.x)
Maximum number of rows per table: 16G (4G with Firebird 1.x)
Filesystem limits apply for all those values, so please read FAQ #59 for details.
Maximum row size: 64k
Maximum number of columns per table: Depends on the datatypes you use. (Example: 16,384 INTEGER (4 byte) values per row.) Blobs only store BLOB_ID and the data is stored separately.
Maximum number of indexes per table: around 850 indexes (root index page limit)
Maximum number of indexes per database: 4G indexes
Number of indexes depends on the page size and datatypes used.
Datatypes:
Char and Varchar: 32767 bytes
Smallint: 16 bits
Integer: 32 bits
BigInt: 64 bits
Float: 32 bits, 3.4x10^-38 to 3.4x10^38, 7 digit precision
Double: 64 bits, 1.7x10^-308 to 1.7x10^308, 15 digit precision
Timestamp: 64 bits, 1 Jan 100 to 28 Feb 32768.
Date: 32 bits, 1 Jan 100. to 29 Feb 32768.
Time: 32 bits, 00:00 to 23:59.9999
Blob: 32GB
Boolean: 8 bits
Numeric and Decimal are internally stored as smallint, integer or bigint depending on the declared size. They can handle up to 18 digits.
Boolean is available since Firebird 3.0. It can store: TRUE, FALSE and UNKNOWN/NULL. UNKNOWN has the same function as NULL and is allowed in nullable columns.