【问题标题】:Tips for optimizing an sqlite database with over a gig of data in it? [closed]优化包含大量数据的 sqlite 数据库的提示? [关闭]
【发布时间】:2010-09-18 11:57:06
【问题描述】:

我正在使用一个大于平均水平的 sqlite 数据库(用于 Windows 和 linux),并希望最大限度地提高我从中获得的性能。该数据库将与 sqlite gui 一起安装在商品硬件上。我交付给的用户精通 sql,但不太可能进行自己的优化(创建索引、设置 pragma 等),因此我渴望获得尽可能多的开箱即用性能(以确保最大限度地使用数据)。

一个问题 Windows 似乎比 Linux 更能限制查询的执行,另一个问题是我不太熟悉 sqlite 的索引方法(与 postgres 等其他数据库相比)。

【问题讨论】:

    标签: windows linux optimization sqlite configuration


    【解决方案1】:

    你读过SQLite Optimization FAQ(几年了,但似乎仍然有用)?

    我认为 1gb 并不是特别大,即使对于 SQLite 也是如此。它当然可以稳定地处理更大的数据库。

    【讨论】:

    • 我没有使用过 SQLite,但这似乎是一个很好的入门文档。
    【解决方案2】:

    您应该每天晚上查看“计划任务”和“优化表”的脚本,甚至可以重新创建索引。定期这样做可以为您节省大量时间和体力劳动。

    【讨论】:

      【解决方案3】:

      更新 - 我们在导入时对数据进行更智能的排序、积极的索引(在此过程中将 db 文件的大小增加了一倍以上)、调整 Windows 中的设置以使 XP 表现得更好,这方面取得了最大的成功像服务器而不是桌面,更改连接顺序(您不能仅仅依赖优化器)并通过创建性能测试套件(只是用于运行查询和进行测量的工具)来衡量您的进度。

      体验很有趣,最终用户很高兴并且能够使用数据。

      【讨论】:

        【解决方案4】:

        如果您要导入大量数据,我发现最有效的方法是

        1. 最好按主索引顺序排列插入的数据
        2. 使用准备好的语句 (doh)
        3. 删除所有索引
        4. 批量插入包含事务的数据(比如一次命中 10,000 条记录)
        5. 重新添加索引

        还记得 sqlite 还不支持 where 子句中的 or 运算符。 您可以通过将 where 子句贬低以使用 ands 来进行调整。

        【讨论】:

        • 老兄,您有第 4 点的参考或快速示例(通过交易批量插入数据)吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-26
        • 1970-01-01
        • 2018-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多