Is there any performance gain due to not setting a default for a new column in Mysql? So, I need to add a new column of type tinyint to a database table with millions of records. Possible values for the column are 1 or 0. The default value I would want is 1. But, would setting a default value affect the database performance while the alter table query is running? Or is it better not to set any default value and then backfill by writing a script that backfills the column in batches?
When adding a TINYINT column:


If specified as NULL:  1-bit NULL set; 1 byte is allocated or not allocated (depending on Engine and ROW_FORMAT)
NOT NULL: no bit for nullness; 1 byte allocated and filled in with the specified DEFAULT (or the default DEFAULT, which is 0 for TINYINT).


If the TINYINT is to be only a true/false flag, then it does not help to make it NULL.

ALTER TABLE takes time and may impact other processes.  Is the ALTER TABLE what you are worried about?

Bottom line:  The ALTER needs to fill in the byte, so you may as well let it do all the work for you.