我是一個Python應用程序的用戶,它的表索引很差,並且想知道是否可以通過在應用程序啓動時將SQLite數據庫轉換爲內存數據庫來提高性能。我的想法是,它可以最大限度地減少全表掃描的問題,特別是因爲SQLite可能會創建自動索引,因爲文檔說這是默認啓用的。如何使用SQLAlchemy ORM(這是應用程序使用的)來完成這項工作?是否可以使用SQLAlchemy將SQLite數據庫讀入內存?
回答
每當你在Python中設置一個變量,你正在實例化一個對象。這意味着你正在爲它分配內存。
當您查詢sqlite時,您只是將信息從磁盤讀取到內存中。
sqlalchemy只是一個抽象。您可以通過查詢數據庫並將返回的數據設置爲變量來以相同的方式將數據從磁盤讀取到內存中。
我認爲OP希望通過在內存中緩存數據庫來避免磁盤訪問成本。 – 2011-12-18 03:15:00
正確,我想盡量減少磁盤訪問。 – user1104069 2011-12-18 03:23:10
那麼這將涉及到查詢所有數據的數據庫,建立與內存中支持的數據庫會話,創建表和插入查詢的數據。 sqlalchemy教程包含完成此操作所需的全部信息。 – 2011-12-18 03:23:24
在程序開始時,將數據庫文件移動到虛擬硬盤上,指向SQLAlchemy並執行處理,然後將SQLite文件移回非易失性存儲。
這不是一個好的解決方案,但它可以幫助您確定將數據庫緩存在內存中是否值得。
- 1. SQLite數據庫是否計入應用的內存限制?
- 2. 是否可以使用內存緩衝區(或PE資源)來備份只讀SQLite數據庫?
- 3. 是否可以使用Javascript來加密/解密SQLite數據庫?
- 4. 我可以測試SQLite數據庫中是否存在表?
- 5. 是否可以指示libmysqld(嵌入式MySql數據庫引擎)與內存數據庫一起使用?
- 6. 使用ADM-ZIP(Node.js)將SQLite存儲到內存數據庫中
- 7. 是否可以將SharePoint用戶存儲在MySql數據庫中?
- 8. 檢查SQLite數據庫是否存在
- 9. 是否可以通過sqlalchemy查詢數據庫?
- 10. 使用內存sqlite數據庫時是否存在線程鎖QSqlQuery
- 11. 是否有可能使用SQLite數據庫而不使用sqlite函數?
- 12. 確定SQLite 3數據庫是否爲只讀 - 不使用sqlite3_db_readonly()
- 13. 是否可以在Android SQLite數據庫上禁用WAL?
- 14. 使用sqlite,sqlalchemy,python在數據庫中重複插入
- 15. 是否可以在只讀模式下連接到內存中的sqlite數據庫?
- 16. ASP.Net可以讀取SQLite數據庫,但不能插入win 7
- 17. 無法連接到內存SQLite數據庫在Windows上使用Python 2.7.3與SQLAlchemy
- 18. 是否可以獲取hsqldb內存數據庫的大小?
- 19. 是否有可能使用SQLiteConnection庫檢查SQLite數據庫是否被鎖定
- 20. Spark在寫入時是否可以使用SQL數據庫?
- 21. NHibernate:修改XML/XDoc映射以使用SQLite內存數據庫
- 22. 是否可以通過內存從Excel中導入數據?
- 23. Sqlalchemy;將主鍵設置爲預先存在的數據庫表(不使用sqlite)
- 24. 使用SQLAlchemy檢查數據是否存在於MYSQL數據庫中
- 25. 將sqlite數據庫從文件複製到:內存使用C#
- 26. 是否使用Sqlite數據庫或Json格式進行數據庫插入
- 27. 是否可以將整體答案存儲在數據庫中?
- 28. Python將循環插入SQLite數據庫中的變量使用SQLAlchemy
- 29. 是否可以使用Extjs4將數據寫入JSON?
- 30. 是否可以使用JavaScript將數據寫入Google表單?
你說你是一個非程序員,但對我來說這聽起來很像編程繁重的工作。但不是改變SQLite以在內存中工作,而是簡單地將索引添加到現有的SQLite數據庫中。這可能會得到您的要求內的性能,而不會觸及應用程序代碼。搜索「SQLite數據庫編輯器」。 – wberry 2011-12-19 16:02:47