Creating a new connection for each request will probably be slow (SQLite needs to parse the schema when creating a connection). Having one global connection and running multiple threads against it will cause problems with transactions (no thread can be sure when a transaction begins and when it ends) and with concurrency. Using a dedicated connection for each thread will probably give the best results. How to handle thread local data is a question best handled in a forum dedicated to the programming language you are using.