I am focusing on an internet site with typical CRUD web usage pattern: much like blogs or forums where customers create/update contents along with other customers browse the content.
Appears like it's OK to create the database's isolation level to "Read Uncommitted" (dirty reads) within this situation. My knowledge of the overall disadvantage to "Read Uncommitted" is the fact that a readers may read uncommitted data which will later be rollbacked.
Inside a CRUD blog/forum usage pattern, will there be any rollback? And even when there's, can there be any significant problem with reading through uncommitted data?
At this time I am not using any replication, but later on if I wish to use replication (row-based, not statement-based) will a "Read Uncommitted" isolation level prevent me from doing this?
What is your opinion? Has anybody attempted using "Read Uncommitted" on their own RDBMS?
MySQL 5.1 is more stringent when utilizing read-uncommitted and binlogging (required for replication) - to get errors on some simple update/remove claims that you simply wouldn't enter the default isolation level REPEATABLE READ. I've come across simple PK updates for example:
Update foo set bar=1 where id=1234
Error with: mysql_real_query error 1598 message : Binary logging difficult. Message: Transaction level 'READ-UNCOMMITTED' in InnoDB isn't safe for binlog mode 'STATEMENT'
Which means you must be ready to cope with this by switching to repeatable reads when modifying data, or using separate connections for reads and creates, using their own isolation levels. The second could possibly get handy when/in case your project scales and replication is required, so that you can send choose to some read-only slave and creates around the master.
OTOH, using read-uncommitted for reads could be a real gain, if consistent reads aren't strictly needed, as Innodb has less locks to consider.
For the question regarding if rollbacks are possible, I believe you are the very best person to inform us about this, when you are the main one coding it :).
This isolation level means that you might read sporadic data. There's no gurantee that data you read comes from a regular look at the database.
Whethere it is really an problem or otherwise isn't a MySQL question, but a credit card applicatoin question, that involves an exam of the chance of using/coming back sporadic data.
With an Online banking application it might ne a no-go. On a game title it might be OK. It is dependent.
I have tried personally both "read uncommitted" and replication, and also have didn't have issues.