• [^] # Re: Questions

    Posté par (site web personnel) . En réponse à la dépêche Sortie officielle de GTK+ 3.0 !. Évalué à 6.

    C'est simple : SQLite est un SGBD sous forme de bibliothèque embarquée ; elle écrit directement dans son fichier, et ne connaît pas les autres instances qui pourraient écrire dessus.
    A contrario, un SGBD non embarqué (MySQL, PostgreSQL, Oracle, ...), donc en mode serveur, communique avec le client par des sockets (connexion réseau par exemple). Les demandes d'écritures peuvent être faites en parallèle, c'est au SGBD de gérer l'accès à ses fichiers suivant les verrous et les transactions. Mais au final, le serveur garde ses fichiers verrouillés en permanence, et y écrit ses données en séquence pour des raisons de performance (faire le zigzag avec les têtes de disque-dur réduit les perfs).

    Quand un processus plante, le système d'exploitation libère sa mémoire, tous ses descripteurs de fichiers, tous ses verrous, etc. Je crois qu'il n'y a que les IPC qui ne sont pas libérées. En conséquence, que ce soit ton instance SQLite ou ton serveur MySQL qui plante, les verrous sur ses fichiers seront relâchés. Dans certains cas, sous certains systèmes d'exploitation, les processus plantés peuvent résider en mémoire et garder leurs verrous : c'est le système d'exploitation qui ne fait pas correctement son boulot.