我是一個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. 是否可以使用Javascript來加密/解密SQLite數據庫?
- 3. 我可以測試SQLite數據庫中是否存在表?
- 4. 使用ADM-ZIP(Node.js)將SQLite存儲到內存數據庫中
- 5. 是否可以指示libmysqld(嵌入式MySql數據庫引擎)與內存數據庫一起使用?
- 6. 檢查SQLite數據庫是否存在
- 7. 使用內存sqlite數據庫時是否存在線程鎖QSqlQuery
- 8. 是否可以通過sqlalchemy查詢數據庫?
- 9. 是否有可能使用SQLite數據庫而不使用sqlite函數?
- 10. 確定SQLite 3數據庫是否爲只讀 - 不使用sqlite3_db_readonly()
- 11. 使用sqlite,sqlalchemy,python在數據庫中重複插入
- 12. 是否可以在Android SQLite數據庫上禁用WAL?
- 13. ASP.Net可以讀取SQLite數據庫,但不能插入win 7
- 14. 是否可以在只讀模式下連接到內存中的sqlite數據庫?
- 15. NHibernate:修改XML/XDoc映射以使用SQLite內存數據庫
- 16. Spark在寫入時是否可以使用SQL數據庫?
- 17. 是否可以通過內存從Excel中導入數據?
- 18. Sqlalchemy;將主鍵設置爲預先存在的數據庫表(不使用sqlite)
- 19. 將sqlite數據庫從文件複製到:內存使用C#
- 20. 使用SQLAlchemy檢查數據是否存在於MYSQL數據庫中
- 21. Python將循環插入SQLite數據庫中的變量使用SQLAlchemy
- 22. 是否可以將整體答案存儲在數據庫中?
- 23. 構建SQLite數據庫以分離可讀/寫數據
- 24. 使用SQLAlchemy寫入MySQL數據庫,使用SQLAlchemy,to_sql
- 25. 是否可以使用Extjs4將數據寫入JSON?
- 26. 是否可以創建加密Sqlite數據庫?
- 27. 使用Hibernate的二級緩存是否可以減少內存使用量或只是數據庫訪問?
- 28. 我用SQLite manager創建一個數據庫,調用test.sqlite。我可以將.sqlite數據庫導入xcode嗎?
- 29. 可以將sqlite加載10M數據到內存中
- 30. 是否可以使用plinq ForAll將批量插入到數據庫中?
你說你是一個非程序員,但對我來說這聽起來很像編程繁重的工作。但不是改變SQLite以在內存中工作,而是簡單地將索引添加到現有的SQLite數據庫中。這可能會得到您的要求內的性能,而不會觸及應用程序代碼。搜索「SQLite數據庫編輯器」。 – wberry 2011-12-19 16:02:47