Upload em massa otimizado (em bloco) de objetos no IndexedDB

Quero adicionar objetos a alguma tabela no IndexedDB em uma transação:

_that.bulkSet = function(data, key) {
    var transaction = _db.transaction([_tblName], "readwrite"),
        store = transaction.objectStore(_tblName),
        ii = 0;

    _bulkKWVals.push(data);
    _bulkKWKeys.push(key);

    if (_bulkKWVals.length == 3000) {
        insertNext();
    }

    function insertNext() {
        if (ii < _bulkKWVals.length) {
            store.add(_bulkKWVals[ii], _bulkKWKeys[ii]).onsuccess = insertNext;
            ++ii;
        } else {
            console.log(_bulkKWVals.length);
        }
    }
};

Parece que funciona bem, mas não é uma maneira muito otimizada de fazer isso, especialmente se o número de objetos for muito alto (~ 50.000-500.000). Como eu poderia otimizar isso? Idealmente, quero adicionar primeiro 3000, depois removê-lo da matriz e adicionar outros 3000, nomeadamente em pedaços. Alguma ideia?

questionAnswers(2)

yourAnswerToTheQuestion