2011-12-09 3 views
2

J'ai créé une base de données SQLite en tant que base de données temporaire (en spécifiant un nom de fichier vide dans sqlite3_open()). J'ai également spécifié une limite sur la quantité de mémoire qui peut être utilisée par la base de données à environ 200 Ko en utilisant 'sqlite3_soft_heap_limit64(). Comme je continue d'insérer des lignes de base de données, je vois que la mémoire utilisée par la base de données (obtenue par sqlite3_memory_used()) monte jusqu'à 200 Ko, puis reste constante, même avec des insertions continues de lignes.Espace de stockage de données pour les bases de données temporaires dans SQLite 3

Où est l'espace supplémentaire pour les insertions après avoir atteint la limite allouée? Est-ce un fichier temporaire créé sur le disque? Je veux connaître l'emplacement pour pouvoir contrôler/configurer les problèmes d'espace pouvant résulter d'une telle allocation.

Répondre

4

J'ai creusé dans le code SQLite pour voir comment cela est fait. Sur les plates-formes Unix, SQLite va essayer de créer un fichier temporaire dans les deux:

  1. l'emplacement pointé par la variable globale SQLite: sqlite3_temp_directory
  2. le répertoire désigné par l'un des de TEMP "les variables d'environnement, ' TMP ', ou' TMPDIR ', dans cet ordre.
Questions connexes