使用 SQLite 附加

发布于 2024-11-02 09:50:12 字数 267 浏览 1 评论 0原文

我们有两个 sqlite DB,我们需要将一个数据库“附加”到另一个数据库并执行一些连接。我们有一些问题/疑虑如下:

  1. 假设我们已将 DB1 与 DB2 附加在一起并执行一些 SELECT,其他线程是否可以使用不同的连接在 DB2 或 DB1 上并发 UPDATE/INSERT?
  2. 是否有单独的 C API 可以附加,或者我们需要使用“sqlite3_step”,
  3. ATTACH 的性能如何。

提前致谢

DEE

we have two sqlite DB's , we have a requirement to "attach" one to other and perform some joins. we have some questions/concerns as below:

  1. say we have attached DB1 with DB2 and performing some SELECT's , can some other thread concurrently UPDATE/INSERT on DB2 or DB1 with a different connection ?
  2. is there a separate C API to attach or we need to use "sqlite3_step"
  3. how is the performance with ATTACH.

Thanks in Advance

DEE

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情独悲 2024-11-09 09:50:12
  1. 另一个线程可以同时更改任一数据库,但这意味着在某个时刻可以为查询线程锁定数据库。请参阅此处有关与 SQLite 的并发的信息。

  2. ATTACH是一步操作,可以使用sqlite3_exec

  3. 性能是一件很难预测的事情,并且会随着架构、索引、使用和存储的数据(以及页面大小等其他一些因素)而发生很大变化。在某些情况下,ATTACH 可能比所有数据都在一个数据库中时慢。我个人的经验是,分离大型数据集的插入速度更快,并且对最终查询输出的影响最小/难以察觉。您的情况可能会有所不同。

  1. Another thread can concurrently alter either database, but this will mean that at some point the database can be locked for the querying thread. See here about concurrency with SQLite.

  2. ATTACH is a one step operation, you can us sqlite3_exec.

  3. Performance is a tough thing to predict and will vary greatly with schema, indexing, usage, and data stored (and some other factors too like page size). In some cases, ATTACH can be slower than if all data is in one database. My personnal experience was that separating large datasets was faster for inserts and affected final query output minimally/imperceptibly. Your mileage may vary.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文