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 レコードのメモリ使用量を示しています。