Je prépare une mise à jour pour une application basée sur Core Data pour les correctifs avec iOS 7. J'utilise Xcode 5 et iOS 7 SDK GM. Cependant, j'ai réalisé un comportement différent du magasin persistant (qui est un UIManagedDocument
): Avant les versions iOS 7, il n'y avait qu'un seul fichier persistentStore
dans le dossier des documents (parfois il y en avait un deuxième persistentStore-journal
).
Dans les versions iOS 7 (installation propre), il y a maintenant trois fichiers pour le magasin persistant:
persistentStore
persistentStore-wal
etpersistentStore-shm
Apple a-t-il changé le mode journal par défaut en WAL maintenant? Je me demande s'il y a un impact sur mon application (pensez aux utilisateurs comment mettre à jour depuis la dernière version)? Serait-il préférable de désactiver WAL - et si oui, comment puis-je le faire avec iOS 7/UIManagedDocument
?
Oui, Apple a changé le mode de journal par défaut en WAL pour iOS7. Vous pouvez spécifier le mode de journal en ajoutant NSSQLitePragmasOption aux options lors de l'appel à addPersistentStoreWithType: configuration: url: options: error. Par exemple, pour définir le mode par défaut précédent de DELETE:
NSDictionary *options = @{ NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"} };
D'après mon expérience, WAL donne de meilleures performances, mais consultez également cet article:
iOS CoreData - y a-t-il des inconvénients à activer la journalisation sqlite WAL/Write-Ahead