2

iOSの「グッドダイナミクス」でPhonegap(Cordova)を使用しています。15 列のテーブルがあり、条件に基づいて一度に 10000 から 200000 を超えるレコードを挿入する必要があります。

しかし、2000 を超えるレコードの挿入をテストすると、iPAD でアプリがクラッシュします。

以下のリンク スタックオーバーフローの回答のように、2つの異なる一括挿入を試しました(UNION ALLとCOMMAで区切られたINSERTSを使用)

また、両方のオプションを試しました:

1) 挿入ごとにトランザクションを開く。

2) for ループを使用した 1 つのトランザクションでの複数の挿入。

iOS シミュレータ インストゥルメントでテストしたところ、5000k を超えるレコードを挿入すると、どちらも 1GB を超えるメモリを消費しています (これが問題の原因であると思われます)。

IOS + SQLlite + PhoneGap + Good Dynamicsで問題なくテーブルに複数の列がある場合、複数のレコードを挿入するためのより良い解決策を提案できますか

私が使用したサンプルコード:

for(var j=0;j< bulkTransactions.length;j++){
    (function(item,count){
        db.transaction(function(tx){
            if(item){
                var insQuery= item;
                tx.executeSql(insQuery, [],
                    function(tx,results){ //Success
                        if(count == bulkTransactions.length-1) {
                            if(callBackMethod != null)callBackMethod();
                        }
                    },
                    function(tx,e){ 
                        //Handle Error
                    }
                );
            }
        });
    }) (bulkTransactions[j],j);
}

アプリケーションは、iOS シミュレーター (1GB のメモリ使用量を示している場合でも) または Chrome ブラウザーで正常に動作しています。以下の画像は、iOS シミュレーターでの 12000 レコードのメモリ使用量を示しています。

ここに画像の説明を入力

4

0 に答える 0