Number and Size of Records

Number of Printed Pages Per Field

All fields in the database table that can hold user input are created as TEXT/BLOB with a maximum size of 64 kilobytes. At around 3000 characters per printed page this means that each field of a record can contain around 20 pages of text. That is probably more than enough for most if not all projects. If more is needed, consider splitting the field into two independent fields. If that is not feasible, the source could be modified to create fields as LONGTEXT fields. For details see the data type description pages the MySQL documentation.

Database Engine

The more modern InnoDB database engine used by MySQL by default has an additional limitation beyond the maximum size of each database field. When a database is created with many fields (e.g. 30+) and each field contains a significant amount of text, it can be observed that the database silently discards text at the end of fields into which new text has been entered. This seems to be related to the internal data structure in which the beginning of large fields are stored in the main record while larger content is saved in overflow structures outside of the main record. MyISAM, an older database engine, does not suffer from these limitations. As a consequence, the main and diff database tables use the older MyISAM engines.

Number of Records

The number of records in the database is limited by two factors:

        21 categories (out of 999 possible, 3 digits are used to identify the category)
 1.000.000 ids per category
       100 ids between each record, i.e. each category can hold 10.000 records

--> total number of records = 21 * 1.000.000 / 100 = 210.000 records