No es raro. Es lo correcto.
Una transacción es un conjunto de operaciones DML que se ejecutan de una forma atómica. Se entiende por atómica que ese conjunto de operaciones se realicen y consoliden como si fuesen una sola, por lo que sólo se confirma cuando la última finaliza.
Lo que sucede al declarar las transacciones es que todas las operaciones quedan en un estado "no confirmado", pero son accesibles por el usuario cuando consulta. Ahora bien, para que las operaciones queden definitivamente asentadas y disponibles para todos los usuarios, debe si o si indicarse COMMIT, o su operación contraria ROLLBACK, que deshace todo. Si no lo haces, y cierras las conexión, se produce un ROLLBACK implícito y todas las modificaciones se cancelan.
Entonces la secuencia es:
¿Se entiende la idea?
Una cosa que tienes que tener muy en cuenta: Como la caida de una conexión en medio de una transacción genera un ROLLACK implícito, no puedes realizar en la programación de tus aplicaciones cierres de conexiones a MySQL en medio de una transacción.
Tenlo en cuenta para cuando programes.