Hello
There are various options on a table loader, it would be useful to provide more information on how yours is configured. It sounds like each opcode has a different commit size.
However, Data Services will not roll-back the entire dataset when an error occurs - only the current transaction, which is controlled by the commit size in a table loader/datastore (the include in transaction option was really for real-time jobs). For example, as you are loading 10000 rows, if your commit size was set to 1000; a database exception triggered by row 3500 would roll-back the 500 rows in the current commit batch, 3000 would already have been commited to the database.
If you require strong transaction control (with large datasets) you will have to implement your own transactions logic. This is fairly simple with a control column and script, or you could use auto-correct load, or the upsert option in a table loader.
Michael