我想知道在Android上處理數據庫時sqllite的工作原理。我知道它使用.db擴展名將所有內容寫入文件。但是它如何讀取或寫入一個特定的表?它是獲取整個文件還是僅獲取相關部分以及它如何執行這些操作?有人可以建議我一些鏈接?我試過谷歌,但我發現的鏈接只是解釋如何編寫查詢。sql lite如何在android中使用數據庫中的文件
回答
Android上的SQLite操作與任何其他平臺上的SQLite操作沒有任何區別。
非常簡短的回答你的問題:SQLite文件被分成固定大小的頁面。每個數據庫對象(表,索引等)佔用一定數量的頁面。如果對象需要增長(如將新行插入到表中),則可以從空閒頁列表中分配更多新頁面,或者通過增大數據庫文件的大小來分配更多新頁面。如果刪除行或刪除對象,則回收的可用空間將進入空閒頁面列表。在任何操作過程中,SQLite引擎都會嘗試不抓取整個文件,但它會維護頁面緩存以提高性能。
一般而言,您可以找到關於SQLite website的更詳細的解釋,尤其是關於SQLite database file format。
爲此,您必須閱讀數據庫的基礎知識。 所有的db框架在工作方面都差不多,所以你必須研究數據庫的基礎知識(任何)。 這裏是一些相關的信息u可以像
What does a database actually do to find out what matches a select statement?
坦率地說,這是蠻力的問題。簡單地說,它讀取數據庫中的每個候選記錄並將表達式與字段匹配。所以,如果你有「select * from table where name ='fred'」,它會逐字地遍歷每條記錄,抓住「name」字段,並將其與'fred'進行比較。
現在,如果「table.name」字段被索引,那麼數據庫將(可能,但不一定)首先使用索引來定位候選記錄以應用實際的過濾器。
這減少了應用表達式的候選記錄的數量,否則它只會做我們稱之爲「表掃描」,即讀取每一行。
但是,從根本上說,它定位的候選記錄與它如何應用實際的過濾表達式是分開的,顯然,有一些聰明的優化可以完成。
How does a database interpret a join differently to a query with several "where key1 = key2" statements?
那麼,一個聯接是用來製作一個新的「僞表」,應用過濾器。所以,你有過濾標準和連接標準。連接標準用於構建這個「僞表」,然後過濾器應用於此。現在,在解釋連接時,它又是與過濾器相同的問題 - 強力比較和索引讀取來構建「僞表」的子集。
How does the database store all its memory?
良好的數據庫的關鍵之一是它如何管理其I/O緩衝區。但它基本上將RAM塊匹配到磁盤塊。使用現代虛擬內存管理器,簡單的數據庫幾乎可以依靠虛擬機作爲內存緩衝區管理器。高端數據庫自己完成所有這些工作。
How are indexes stored?
B +樹通常,你應該看看它。這是一種直截了當的技術,已經存在多年。與大多數任何平衡樹共享它的好處:對節點的一致訪問,以及所有葉節點的鏈接,因此您可以按鍵順序輕鬆地從節點到節點進行遍歷。因此,對於索引,可以將這些行視爲數據庫中特定字段的「排序」,並且數據庫可以利用該信息使其受益於優化。這與使用散列表的索引截然不同,它只能讓您快速獲取特定記錄。在B-Tree中,您不僅可以快速獲取特定記錄,還可以快速獲取排序列表中的某個點。
在數據庫中存儲和索引行的實際機制非常直截了當並且很好理解。遊戲正在管理緩衝區,並將SQL轉換爲高效的查詢路徑以利用這些基本存儲習慣用法。
然後,在存儲方式上,存在整個多用戶鎖定,日誌記錄和事務複雜性。
- 1. 使用android sql lite數據庫
- 2. 如何將xml文件插入到sql lite數據庫中
- 3. 插入數據到數據庫Sql lite在android中
- 4. 如何在android中更新sql lite數據庫中的聯繫人?
- 5. 如何使用Developer 2000在Oracle8 Lite中創建數據庫?
- 6. 在Java中使用Sql Lite數據庫顯示評級欄
- 7. 在另一個Android應用程序中使用sql lite數據庫
- 8. 如何從Android中的SQ Lite數據庫中刪除項目?
- 9. 如何在sql lite數據庫中插入字符串值?
- 10. 如何在android中使用數據庫?
- 11. 如何使用C#在SQL數據庫中存儲XML文件?
- 12. 如何在sql數據庫中使用flash.swf文件?
- 13. 如何在android數據庫中使用jquery導入多個sql文件
- 14. 如何在Android中使用數據庫?
- 15. 適用於Android的SQL Lite數據庫持久存儲器
- 16. 如何將Android中的LatLng變量存儲在SQL Lite數據庫中以備後用?
- 17. 如何在Android Studio中使用jdbc連接MS SQL數據庫
- 18. 在我的sql lite數據庫中保存5000個對象
- 19. Xcode 8中sql lite數據庫的位置在哪裏?
- 20. 在Phonegap中訪問預先填充的SQL Lite數據庫
- 21. 如何在android中跨應用程序限制sql lite數據訪問?
- 22. 從SQL Lite數據庫檢索數據到EditText中
- 23. Android設備上的SQL Lite數據庫與SQL Server數據庫之間的同步數據庫
- 24. 如何在android中使用新數據庫文件替換現有的sqlite數據庫文件
- 25. SQL數據庫中的Android
- 26. 如何從XML中插入數據到sql lite中的ipad
- 27. 操作SQL Lite中的數據db
- 28. Google Gears SQL Lite數據庫和C#
- 29. Android的SQL-Lite數據庫支持關鍵約束
- 30. 如何在Python中使用數據庫創建CSV文件?