Par conception, les données de base ne délivrent pas une commande forte> SQL forte> SQL à sa (s) base de données SQLITE (s), comme Détaillé ici . Je crée une application de données de base qui stockera et supprimez ultérieurement, de grands fichiers binaires (2-10 Mo de taille) dans une DB SQLite. Au fil du temps, cela conduira à la fragmentation et à une base de données SQLite plus grande que nécessaire. J'aimerais publier périodiquement une commande de vide, par exemple, lors d'une opération de nettoyage, je cours. P>
3 Réponses :
La manière prise en charge de le faire, sur OS X 10.6 / iOS 3.0 et versions ultérieures, est de définir le NSSQLITEMANUALVACUMOPTION Dans les options Lorsque vous ajoutez le magasin au coordinateur de magasin persistant. P>
Oui, méfiez-vous, car cela peut conduire à un système de fichiers excessivement lit et écrit - le goulot d'étranglement de pratiquement tout système - sans parler de la fragmentation du système de fichiers de serveur sur les serveurs Windows. P> Vacuum code> est une instruction SQL reconnue dans SQLite. Il peut être utilisé comme une requête normale, ou il est donc indiqué . p>
La question est de savoir comment l'exécuter via des données de base, non pas si elle existe.
Voici comment vous pouvez EXEMPLE: P> VACUUM CODE> Votre
let container = NSPersistentContainer(name: "someName")
// Enable history tracking and remote notifications
guard let description = container.persistentStoreDescriptions.first else {
fatalError("###\(#function): Failed to retrieve a persistent store description.")
}
description.setOption(true as NSNumber, forKey: NSSQLiteManualVacuumOption)
//... The rest of your setup