J'ai fait un pooler MySQL (je peux donc effectuer SQL dansAsync) - mais a rapidement décidé d’ajouter d’autres options de base de données (Sqlite). Malheureusement, Sqlite ne semble pas totalement "supporter" de multiples connexions rendant le pooler complètement inutile. J'ai continué à lire sur Sqlite et j'ai remarqué qu'il contenait en fait quelques options de thread, dont l'une était multithread.
Ma question est, comment pourrais-je compiler SQLite sous -DTHREADSAFE = 1? Ou est-ce simplement supposé être exécuté avec cela dans les arguments java? J'utilise Maven
De plus, je suis très ouvert aux différentes options de base de données. Par exemple, h2 prend-t-il en charge la fonction async?
Réponses:
2 pour la réponse № 1SQLIte fournit uniquement la sécurité des threads, pas de performances supplémentaires lors de l'utilisation de plusieurs threads. Vous ne pouvez pas avoir plusieurs threads accéder à la même base de données en même temps, voir http://www.sqlite.org/threadsafe.html:
Multi-thread. Dans ce mode, SQLite peut être utilisé en toute sécurité par plusieurs threads, à condition qu'aucune connexion à une base de données ne soit utilisée simultanément dans plusieurs threads.
Les performances seront encore pires car il faut utiliser des mutex pour protéger les structures de données, voir http://www.sqlite.org/faq.html#q6:
Cependant, le travail d’acquisition et de libération de ces mutex ralentira légèrement SQLite.