/ / Problema de “muitos arquivos abertos” usado por FMDatabase / SQLite3 - xcode, macos, sqlite3, fmdb

Problema “Muitos arquivos abertos” usado pelo FMDatabase / SQLite3 - xcode, macos, sqlite3, fmdb

Estou usando o wrapper FMDatabase para SQLite3 em meu aplicativo OSX. Eu faço muitas inserções no banco de dados:

FMResultSet *results;
results= [db executeQuery:@"select count(*) from `items` where key = ?",[keyPath lowercaseString],nil];

while([results next])
{
if([results unsignedLongLongIntForColumnIndex:0]>0){
updateOperation=TRUE;
}
}
[results close];

if(updateOperation){

[db executeUpdate:@"update `items` set OSXsize=?,OSXOsize=?, OSXDate=?, UUID=?,sourceFile=?,tombStone=0,SandBoxBookMark=?,songname=?,albumartist=? where key=?",
size,originalSize, convertedDate,UUID,sourcePath,bookmark,fileName,albumArtist,[keyPath lowercaseString] , nil];
}
else
{
[db executeUpdate:@"insert into `items`(key,filepath, OSXsize, OSXOsize, OSXdate,UUID,sourceFile,tombStone,SandBoxBookMark,songname,albumartist) values(?,?,?,?,?,?,?,0,?,?,?)",
[keyPath lowercaseString], dapPath, size,originalSize, convertedDate,UUID,sourcePath,bookmark,fileName,albumArtist, nil];
}

Abro o banco de dados uma vez, no entanto, vejo mais de 4725 identificadores de arquivo anexados à medida que o aplicativo avança no monitor de atividade:

/Users/userA/Library/Containers/com.map-pin.Dapper/Data/Library/Application Support/com.map-pin.Dapper/dapperright.sqlite
15
16
...
4724
4725

Respostas:

0 para resposta № 1

Isso está em um aplicativo multithread e você cria e abre um db instância toda vez que você atualiza / insere uma linha? Você tem [db close]; algum lugar?

Você testou FMDatabaseQueue?


-1 para resposta № 2

Para o usuário que executa seu banco de dados, execute o seguinte comando:

limit maxfiles 4096 16384

Em seguida, reinicie o banco de dados. Agora ele deve ser capaz de lidar com arquivos de 16k.

A maneira como você persiste isso nas reinicializações do OS X depende da versão do OS X. Você o encontrará pesquisando em seu mecanismo de busca favorito