Skip to content

No SQLite in production

zekro edited this page Jun 26, 2020 · 1 revision

Why not to use SQLite in a production environment?

No convenient ways for table modifications

As you can read here (or here, or here), it's not verry easy and convenient to alter a tables columns in SQlite. In some patches, like 0.18.0, it's required to alter the table structure in order to update to the new version. For MySQL, there are specific patch files you can import to update your database structure. For SQLite, you might need to re-create a new database and then manually import the records of the old database one by one. I always try to provide options to update your MySQL database structure so you don't need to do this manually, but I will never guarantee this for SQLite databases.

Performance

SQLite might appear faster for the first look because the access is directly to the file system and without any overhead through network and API communications. But SQLite has a very simplistic access model which does not handle concurrency verry well, so your database performance will suffer when the database grows and accesses occure more and more in parallel. Here you can read more about this. It might be bypassed when you enable Redis between the SQLite database and shinpurus database access, but yeah, when you are already using Redis you can also easily set up a MySQL database.