2011-12-18 85 views
2

我是一個Python應用程序的用戶,它的表索引很差,並且想知道是否可以通過在應用程序啓動時將SQLite數據庫轉換爲內存數據庫來提高性能。我的想法是,它可以最大限度地減少全表掃描的問題,特別是因爲SQLite可能會創建自動索引,因爲文檔說這是默認啓用的。如何使用SQLAlchemy ORM(這是應用程序使用的)來完成這項工作?是否可以使用SQLAlchemy將SQLite數據庫讀入內存?

+0

你說你是一個非程序員,但對我來說這聽起來很像編程繁重的工作。但不是改變SQLite以在內存中工作,而是簡單地將索引添加到現有的SQLite數據庫中。這可能會得到您的要求內的性能,而不會觸及應用程序代碼。搜索「SQLite數據庫編輯器」。 – wberry 2011-12-19 16:02:47

回答

0

每當你在Python中設置一個變量,你正在實例化一個對象。這意味着你正在爲它分配內存。

當您查詢sqlite時,您只是將信息從磁盤讀取到內存中。

sqlalchemy只是一個抽象。您可以通過查詢數據庫並將返回的數據設置爲變量來以相同的方式將數據從磁盤讀取到內存中。

+1

我認爲OP希望通過在內存中緩存數據庫來避免磁盤訪問成本。 – 2011-12-18 03:15:00

+0

正確,我想盡量減少磁盤訪問。 – user1104069 2011-12-18 03:23:10

+0

那麼這將涉及到查詢所有數據的數據庫,建立與內存中支持的數據庫會話,創建表和插入查詢的數據。 sqlalchemy教程包含完成此操作所需的全部信息。 – 2011-12-18 03:23:24

1

在程序開始時,將數據庫文件移動到虛擬硬盤上,指向SQLAlchemy並執行處理,然後將SQLite文件移回非易失性存儲。

這不是一個好的解決方案,但它可以幫助您確定將數據庫緩存在內存中是否值得。

相關問題