我有一個龐大的數據庫,它的目的是爲了索引,我在其中插入大量的信息,分解成一千個塊。每次插入索引都會更新。問題在於,由於這些巨大的交易導致日記文件上升到超過300兆字節,所以插入信息所需的時間在大約100周左右後變得非常長。有沒有辦法推遲更新索引?
有沒有辦法推遲更新索引(可能使用FREEZE INDEX
命令或其他什麼),索引會在模式中保持定義狀態,並且在所有表填充後,可能會解凍並更新它。
我知道這可以通過DROP INDEX
和CREATE INDEX
完成,但我正在尋找一個更優雅的解決方案,或者可能是一個技巧。
不幸的是,我無法輕易更改DBMS,或者我會使用PostgreSQL進行調查。
儘管如果在事務中完成,sqllite將只在事務提交時更新索引。同時該索引仍可用於其他查詢,這似乎是一個最佳解決方案。 – Ilion
@llion「其他查詢」? SQLite並不知道能夠充分處理並行查詢;一旦你開始一個改變數據的事務,數據庫將被鎖定到其他查詢,直到該數據庫完成。 – amphetamachine