Diferencia en el tiempo requerido para insertar registros InnoDB / MyISAM

Estoy insertando registros en una tabla MySQL y trato de comprender las diferencias de tiempo que toma entre una tabla MyISAM y una tabla InnoDB.

Este es el código para crear la tabla:

CREATE TABLE SpectrumData (
    ID INT(11) NULL DEFAULT NULL,
    `Set` INT(11) NULL DEFAULT NULL,
    Wavelength DOUBLE NULL DEFAULT NULL,
    Intensity DOUBLE NULL DEFAULT NULL,
    Error INT(11) NULL DEFAULT NULL,
    `Status` INT(11) NULL DEFAULT NULL
)
COLLATE='utf8_general_ci'
ENGINE=xxx
ROW_FORMAT=DEFAULT

Inserto 10000 registros, mido el tiempo que lleva en segundos y repito esto 100 veces. Puse los resultados en dos gráficos de Excel:

Así que MyISAM aumenta e InnoDB es más o menos constante.

¿Alguien puede explicar las diferencias? ¿Algo relacionado con el número de registros en la tabla? ¿Y por qué estos valores atípicos con InnoDB?

Configuration utiliza computadora:

Windows XP SP3 Intel Core2 Duo 3.00 Ghz 2 GB de RAMMySQL 5.5 CE

UPDATE: debería haber mencionado que inserto los registros con un script VBA en una aplicación front-end de Access. Me conecto a la base de datos MySQL mediante un DSN de sistema ODBC.

El código VBA:

Dim RsSpectrumData As DAO.Recordset
Dim Db As Database
Dim i As Integer
Dim j As Integer
Dim TimerStart

Set Db = CurrentDb
Set RsSpectrumData = Db.OpenRecordset("SpectrumData")

For i = 1 To 100
    TimerStart = Timer
    For j = 1 To 10000
        With RsSpectrumData
            .AddNew
            !Set = 1
            !Wavelength = 100
            !Intensity = 25000
            !Error = 0
            !Status = 0
            .Update
        End With
    Next
    Print #1, Timer - TimerStart
Next

RsSpectrumData.Close

ACTUALIZAR DE NUEVO:

Agregué la funcionalidad de transacción DAO y ahora el tiempo promedio de inserción de InnoDB para 10,000 registros disminuyó de 215 segundos a un promedio de 1.3 segundos! (Gracias a @MarkR):

Dim RsSpectrumData As DAO.Recordset
Dim Db As Database
Dim Ws As DAO.Workspace
Dim i As Integer
Dim j As Integer
Dim TimerStart

Open "C:\TEMP\logtest.txt" For Append As #1

Set Db = CurrentDb
Set Ws = DBEngine.Workspaces(0)
Set RsSpectrumData = Db.OpenRecordset("SpectrumData")

For i = 1 To 20
    TimerStart = Timer
    Ws.BeginTrans
    For j = 1 To 10000
        With RsSpectrumData
            .AddNew
            !Set = 1
            !Wavelength = 100
            !Intensity = 25000
            !Error = 0
            !Status = 0
            .Update
        End With
    Next
    Ws.CommitTrans
    Print #1, Timer - TimerStart
Next
RsSpectrumData.Close

Close #1

Respuestas a la pregunta(2)

Su respuesta a la pregunta