Join Firebird!

Join Firebird Foundation to support Firebird SQL development and receive multiple bonuses

Follow Us

Select your media preference

Newsletter

Subscribe to Firebird’s Newsletter to receive the latest news

Firebird Technical Specifications

Updated June 27, 2023.

Database Limits
 

Item Actual for Firebird 4.0
Maximum size of database 128 TB (232 x page size)
Maximum number of tables 32,768
Maximum size of one table ~18 TB
Maximum size of external table file Unlimited
Maximum number of rows per table < 240
Maximum row size 64 KB
Maximum database page size 32 KB
NOTE: Page size (PAGE_SIZE) can be 4096, 8192, 16384 or 32768.
Maximum number of columns per table Depends on data types used. (Example: 16,384 INTEGER (4-byte) values per row.)
NOTE: 8-byte ID is stored for each BLOB or ARRAY reference; size of BLOB or ARRAY data is not counted in row size.
Maximum number of indexes per table A few hundreds. Depends on the database page size and index types (single-segment or compound).
Maximum size (total width) of index key ~8 KB (1/4 of page size)
Maximum number of indexes per database Unlimited
Maximum transaction id 48-bit (~2.8 * 1014)
NOTE: When the maximum transaction id has been reached, the database must be marked read-only and a gbak backup and restore is required.


Data Type Specifics
 

Name Size Range/Precision Description
Varchar(n) 1 to 32765 bytes n chars Variable length char or text string. NB, multi-byte character sets reduce number of possible characters proportionately.
Char(n) 1 to 32767 bytes n chars Fixed length char or text string, padded with spaces. NB, multi-byte character sets reduce number of possible characters proportionately.
Boolean 8 bits -- Boolean
SmallInt 16 bits -215 to 215-1 Signed short (word)
Integer 32 bits -231 to 231-1 Signed long (longword)
BigInt 64 bits -263 to 263-1 Signed long long (quadword)
Int128 128 bits -2127 to 2127-1 Int128
Float (Real) 32 bits 3.4 x 10-38 to 3.4 x 1038 Accurate to 7 decimal digits
Double Precision 64 bits 1.7 x 10-308 to 1.7 x 10308 Accurate to 15 decimal digits
Timestamp  64 bits
(2 X 32 bits)
1 Jan 1 CE to 31 Dec 9999 CE Includes time and date as two 32-bit structures
Timestamp With Time Zone 96 bits 1 Jan 1 CE to 31 Dec 9999 CE with offset in minutes Includes time and data as two 32-bit structures, and offset or timezone id as 16-bit structure (and 16-bit padding)
Date 32 bits 1 Jan 1 CE to 31 Dec 9999 CE Date only. Time part is not stored.
Time 32 bits 0:00 to 23:59.9999 Number of fractions (100 microseconds) since midnight
Time With Time Zone 64 bits 0:00 to 23:59.9999 with offset in minutes Number of fractions (100 microseconds) since midnight, and offset or timezone id as 16-bit structure (and 16-bit padding)
BLOB Variable -- Stores data of variable indeterminate size, some functionality not available for blobs of 4GB and larger, maximum size depends on page size (less than 4GB for page size 4096, more than 128GB for page size 16384)
Numeric (precision, scale) Variable
(16, 32, 64 or 128 bits)
specifies exactly precision digits of precision (max 38) Example: Numeric(10,3) holds numbers accurately in the following format: ppppppp.sss
Decimal (precision, scale) Variable
(16, 32, 64 or 128 bits)
specifies at least precision digits of precision (max 38) Example: Decimal(10,3) holds numbers accurately in the following format: ppppppp.sss
Decfloat (precision) 64 bit or 128 bit precision 16: 1 x 10-398 to 9.9..9 x 10384
precision 34: 1 x 10-6176 to 9.9..9 x 106144
Decimal floating point number

Updated August 8, 2021.

Database Limits
 

  • Item: Maximum size of database
  • Actual for Firebird 4.0: 128 TB (232 x page size)
  • Item: Maximum number of tables
  • Actual for Firebird 4.0: 32,768
  • Item: Maximum size of one table
  • Actual for Firebird 4.0: ~18 TB
  • Item: Maximum size of external table file
  • Actual for Firebird 4.0: Unlimited
  • Item: Maximum number of rows per table
  • Actual for Firebird 4.0: < 240
  • Item: Maximum row size
  • Actual for Firebird 4.0: 64 KB
  • Item: Maximum database page size
  • Actual for Firebird 4.0: 32 KB
  • Item: NOTE: Page size (PAGE_SIZE) can be 4096, 8192, 16384 or 32768.
  • Actual for Firebird 4.0:
  • Item: Maximum number of columns per table
  • Actual for Firebird 4.0: Depends on data types used. (Example: 16,384 INTEGER (4-byte) values per row.)
  • Item: NOTE: 8-byte ID is stored for each BLOB or ARRAY reference; size of BLOB or ARRAY data is not counted in row size.
  • Actual for Firebird 4.0:
  • Item: Maximum number of indexes per table
  • Actual for Firebird 4.0: A few hundreds. Depends on the database page size and index types (single-segment or compound).
  • Item: Maximum size (total width) of index key
  • Actual for Firebird 4.0: ~8 KB (1/4 of page size)
  • Item: Maximum number of indexes per database
  • Actual for Firebird 4.0: Unlimited
  • Item: Maximum transaction id
  • Actual for Firebird 4.0: 48-bit (~2.8 * 1014)
  • Item: NOTE: When the maximum transaction id has been reached, the database must be marked read-only and a gbak backup and restore is required.
  • Actual for Firebird 4.0:


Data Type Specifics
 

  • Name: Varchar(n)
  • Size: 1 to 32765 bytes
  • Range/Precision: n chars
  • Description: Variable length char or text string. NB, multi-byte character sets reduce number of possible characters proportionately.
  • Name: Char(n)
  • Size: 1 to 32767 bytes
  • Range/Precision: n chars
  • Description: Fixed length char or text string, padded with spaces. NB, multi-byte character sets reduce number of possible characters proportionately.
  • Name: Boolean
  • Size: 8 bits
  • Range/Precision: --
  • Description: Boolean
  • Name: SmallInt
  • Size: 16 bits
  • Range/Precision: -215 to 215-1
  • Description: Signed short (word)
  • Name: Integer
  • Size: 32 bits
  • Range/Precision: -231 to 231-1
  • Description: Signed long (longword)
  • Name: BigInt
  • Size: 64 bits
  • Range/Precision: -263 to 263-1
  • Description: Signed long long (quadword)
  • Name: Int128
  • Size: 128 bits
  • Range/Precision: -2127 to 2127-1
  • Description: Int128
  • Name: Float
  • Size: 32 bits
  • Range/Precision: 3.4 x 10-38 to 3.4 x 1038
  • Description: Accurate to 7 decimal digits
  • Name: Double Precision
  • Size: 64 bits
  • Range/Precision: 1.7 x 10-308 to 1.7 x 10308
  • Description: Accurate to 15 decimal digits
  • Name: Timestamp
  • Size:  64 bits
    (2 X 32 bits)
  • Range/Precision: 1 Jan 1 CE to 31 Dec 9999 CE
  • Description: Includes time and date as two 32-bit structures
  • Name: Timestamp With Time Zone
  • Size:  96 bits
  • Range/Precision: 1 Jan 1 CE to 31 Dec 9999 CE with offset in minutes
  • Description: Includes time and date as two 32-bit structures, and offset or timezone id as 16-bit structure (and 16-bit padding)
  • Name: Date
  • Size: 32 bits
  • Range/Precision: 1 Jan 1 CE to 31 Dec 9999 CE
  • Description: Date only. Time part is not stored.
  • Name: Time
  • Size: 32 bits
  • Range/Precision: 0:00 to 23:59.9999
  • Description:  Number of fractions (100 microseconds) since midnight
  • Name: Time With Time Zone
  • Size: 64 bits
  • Range/Precision: 0:00 to 23:59.9999 with offset in minutes
  • Description:  Number of fractions (100 microseconds) since midnight, and offset or timezone id as 16-bit structure (and 16-bit padding)
  • Name: BLOB
  • Size: Variable
  • Range/Precision: --
  • Description: Stores data of variable indeterminate size, some functionality not available for blobs of 4GB and larger, maximum size depends on page size (less than 4GB for page size 4096, less than 512GB for page size 32768)
  • Name: Numeric (precision, scale)
  • Size: Variable
    (16, 32, 64 or 128 bits)
  • Range/Precision: specifies exactly precision digits of precision (max 38)
  • Description: Example: Numeric(10,3) holds numbers accurately in the following format: ppppppp.sss
  • Name: Decimal (precision, scale)
  • Size: Variable
    (16, 32, 64 or 128 bits)
  • Range/Precision: specifies at least precision digits of precision (max 38)
  • Description: Example: Decimal(10,3) holds numbers accurately in the following format: ppppppp.sss
  • Name: Decfloat (precision)
  • Size: 64 or 128 bits
  • Range/Precision: precision 16: 1 x 10-398 to 9.9..9 x 10384, precision 34: 1 x 10-6176 to  9.9..9 x 106144
  • Description: Decimal floating point number