There are several hard limits that apply to UltraLite databases.
In some cases, the limits are beyond the maximum capabilities of mobile devices. Performance considerations and device capabilities impose other limitations.
|Item||UltraLite database limitations|
|Database and file size||
16 GB for 4, 8, or 16 KB page size. 8 GB for 2 KB page size. 1 GB for 1 KB page size. Less if there is an operating system limit on file size.
|Temporary file size||16 GB for 4, 8, or 16 KB page size. 8 GB for 2 KB page size. 1 GB for 1 KB page size. Less if there is an operating system limit on file size.|
|Cache size||Limited by the available memory on the device, up to 64 K pages.|
|Dynamic cache sizing||
UltraLite allows you to set an initial, minimum, and/or maximum cache size for a database. The size of the cache is optimized by UltraLite on an ongoing basis, up to the maximum size (if specified).
The CACHE_SIZE, CACHE_MIN_SIZE, CACHE_MAX_SIZE connection parameters can be used to set and adjust the cache size.
|Maximum number of concurrent open connections supported by a database||Up to 14.|
|Maximum number of concurrent open connections to all databases||Limited only by memory.|
|Maximum number of databases that can run concurrently||Limited only by memory.|
|Maximum number of applications that can connect to a database concurrently||Use the UltraLite engine to handle multiple concurrent applications connecting to the database. Otherwise, only one application can connect to a database at one time.|
|Returned SQL function values||In some cases, UltraLite limits expression results to 2000 bytes.|
|Rows per table||
Up to 16 million.
Sometimes 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.
The length of each packed row must not exceed the page size.
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 strings are stored separately.
|Rows per database||Limited by database size.|
|Table size||Limited by the database size.|
|Tables per database||Limited by the 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 by the database size.|
|Number of publications||Up to 63.|
|Database page size||Minimum 1 KB; up to 16 KB.|
|Cursors per connection||The maximum number of allowable cursors on a given connection to an UltraLite database is 64 (all platforms).|
|Strings||The row must fit on a page.|
|Binary data types||The row must fit on a page.|
|Long binary/long varchar size||Limited only by database size.|
|Blob size||Limited by file size.|
|Available Isolation levels||0 (read uncommitted) or 1 (read committed).|
|Cascading updates and deletes||Declarative referential integrity, where deletes and updates are cascaded, is a feature that is not supported in UltraLite databases, except during synchronization when deletes are cascaded for this purpose.|
|Event scheduling and handling||An UltraLite event model differs from SQL Anywhere.|