I have a set of several million database files sitting on my filesystem. Each thread will open a previously unprocessed database file, do some queries, close the database, and move on to the next unprocessed database file.
Jason Lee ________________________________ From: sqlite-users <sqlite-users-boun...@mailinglists.sqlite.org> on behalf of Keith Medcalf <kmedc...@dessus.com> Sent: Monday, April 22, 2019 3:13:57 PM To: SQLite mailing list Subject: Re: [sqlite] Multiple Independent Database Instances This is somewhat unclear. You make two conflicting statements: "I have been testing with 16, 32, and 48 threads/databases at once ..." and "time it takes for all of the threads to just open all (millions) of the databases" So, are you: (a) opening one independently and uniquely named database per thread as would be apparent from the first conflicting statement above; or, (b) opening the same "millions" of databases per thread as indicated by the second conflicting statement above ? Per my testing the time taken to spin up a thread and open a database with a unique database name is constant and linear up to the thread limit of a process (about 800 threads). This is even true if you execute SQL against the connection within that thread and also count that execution time in the "Time Taken". --- The fact that there's a Highway to Hell but only a Stairway to Heaven says a lot about anticipated traffic volume. >-----Original Message----- >From: sqlite-users [mailto:sqlite-users- >boun...@mailinglists.sqlite.org] On Behalf Of Lee, Jason >Sent: Monday, 22 April, 2019 14:08 >To: SQLite mailing list >Subject: Re: [sqlite] Multiple Independent Database Instances > >Thanks for the quick responses! > > >I am on a machine with many many cores, 500GB RAM, and lots of NVMe >drives raided together, so the system should not be the issue. I have >been testing with 16, 32, and 48 threads/databases at once, and the >cumulative time it takes for all of the threads to just open all >(millions) of the databases goes from 1200 seconds to 2200 seconds to >3300 seconds. > > >As mentioned, this is likely to be something else, but I was hoping >that I was somehow using SQLite wrong. > > >Jason Lee > >________________________________ >From: sqlite-users <sqlite-users-boun...@mailinglists.sqlite.org> on >behalf of Jens Alfke <j...@mooseyard.com> >Sent: Monday, April 22, 2019 12:52:28 PM >To: SQLite mailing list >Subject: Re: [sqlite] Multiple Independent Database Instances > > > >> On Apr 22, 2019, at 11:39 AM, Lee, Jason <jason...@lanl.gov> wrote: >> >> Hi. Are there any gotchas when opening multiple independent >databases from within one process using the C API? > >Do you mean different database files, or multiple connections to the >same file? > >> I am opening one database per thread in my code, and noticed that >sqlite3_open_v2 and sqlite3_close slow down as the number of threads >increase, indicating there might be some resource contention >somewhere, even though the databases should be independent of each >other. > >How many databases/threads? With huge numbers I’d expect slowdowns, >since you’ll be bottlenecking on I/O. > >But otherwise there shouldn’t be any gotchas. I would troubleshoot >this by profiling the running code to see where the time is being >spent. Even without knowledge of the SQLite internals, looking at the >call stacks of the hot-spots can help identify what the problem is. > >—Jens >_______________________________________________ >sqlite-users mailing list >sqlite-users@mailinglists.sqlite.org >http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users >_______________________________________________ >sqlite-users mailing list >sqlite-users@mailinglists.sqlite.org >http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users