UltraLite limitations

To compare UltraLite limitations with SQL Anywhere limitations, see SQL Anywhere size and number limitations.

Statistic Maximum for UltraLite
Number of connections per database Up to 14 for single threaded applications.
Number of concurrent open connections

Up to 32 for all OS.

Total number of concurrent connections per application

Up to 64 for all OS.

SQL communication areas (SQLCA) Up to 63.
File-based persistent store (database size) 2 GB file or OS limit on file size.
Rows per table Up to 16 million.1
Row Size

The length of each packed row must not exceed the page size. See Row packing and table definitions.

Character strings are stored without padding when they are shorter than the column size. This restriction excludes columns declared as long binary and long varchar as these are stored separately

Rows per database Limited by persistent store.
Table size Limited only by database size.
Tables per database Limited only by database size.
Columns per table Row size is limited by page size, so the practical limit on the number of columns per table is derived from this size. Typically, this practical limit is much less than 4000.
Indexes per table Limited only by database size.
Tables referenced per transaction No limit.
Stored procedure length Not applicable.
Stored procedures per database Not applicable.
Triggers per database Not applicable.
Nesting Not applicable.
Number of publications Up to 63.
Database page size 16 KB.
Cursors per connection The number of maximum allowable cursors on a given connection to an UltraLite database is 64 (all platforms).
Long binary/long varchar size Limited only by database size.
UltraLiteJ Compatibility UltraLite databases are not interchangeable with UltraLiteJ databases.

1Sometimes changes to the row (deletes and updates) and other state information are maintained with the row data. This information allows those changes to be synchronized. So, the actual row limit can be smaller than 16 million, depending on the number of transactions on a table between synchronization, or whether the table is synchronized at all. See UltraLite transaction processing.