I wouldn't bother turning off AutoCommit as it is a global setting and you'll have to call commit everywhere you run any SQL (often even select sql). Just start a transaction with begin_work before the prepare for the insert and commit it at the end of your loop.
If you do general searches for speedups you'll find loads of other possible speedups. Bulk loading is one someone else already mentioned, DBIs execute_array, disabling indexes on your table until after the insert etc
UPDATE: Also, what is the point of sorting those hashes - it won't affect what rows are inserted into the database as fas as I can see.