11
votes

Comment aspirer une base de données de base SQLite DB?

Par conception, les données de base ne délivrent pas une commande SQL 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.

  • Comment puis-je émettre de manière programmée une commande de vide sur les magasins SQLite de base des données?
  • est-il possible de le faire via des données de base, ou devez-moi monter le DB SQLite et le connecter directement pour exécuter le vide SQL?

0 commentaires

3 Réponses :


14
votes

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.


0 commentaires

2
votes

Oui, Vacuum est une instruction SQL reconnue dans SQLite. Il peut être utilisé comme une requête normale, ou il est donc indiqué .

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.


1 commentaires

La question est de savoir comment l'exécuter via des données de base, non pas si elle existe.



1
votes

Voici comment vous pouvez VACUUM CODE> Votre COREDATA FORT> CONTENEUR

EXEMPLE: P>

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


0 commentaires