效能優化 儲存優化

2021-10-05 15:21:18 字數 1570 閱讀 2575

android系統提供4中基本的資料儲存方式,分別是sharedpreference、檔案儲存、sqlite資料庫、contentprovider。

sharedpreference

sharedpreference是一種簡單便捷的儲存方式,常用來儲存一些簡單配置資訊。

儲存路徑:sharedpreference將資料儲存到乙個xml檔案中,該檔案位於/data/data/package name/shares_prefs.

建立模式:

activity.mode_private:預設模式,只能由建立該檔案的應用程式呼叫,即為私有的。

activity.mode_world_readable:允許所以其他應用程式讀取和建立檔案的許可權。

activity.mode_world_writeable:允許所以其他應用程式寫入、訪問和建立檔案的許可權。

但sharedpreference也有明顯缺點,就是只能儲存boolean、int、float、long和string五種簡單但資料型別。

檔案儲存

檔案儲存物件適合於讀寫大量的流式資料,如**檔案和其他網路傳輸的內容。

android系統將檔案儲存區域分為內部儲存和外部儲存(有的可移除有的固定)兩個部分,區別如下:

儘管應用預設被安裝到內部儲存空間中,但可以在androidmanifest.xml中指定android:installlocation屬性 來使應用安裝到外部儲存空間。

sqlite

sqlite是一款開源嵌入式資料庫引擎,同時也是一款輕型的資料庫。

contentprovider

可以實現在兩個程序直接對資料進行交換。

資料序列化通常在以下場景中使用:

serializable和parcelable

serializable效能較差,而parcelable的使用有限制,不能使用在要將資料儲存在磁碟上的情況,如永久性儲存物件等。parcelable本質是為了更好實現物件在ipc間傳遞,並不是乙個通用的序列化機制。

gson實現json的序列化和反序列化

flatbuffer:乙個開源的、跨平台的、高效的序列化工具庫,尤其適用於移動平台。

sqlitestatement

使用sqlitestatement類來將資料插入資料庫,在效能上有一定的提高,並且也解決來sql注入的問題。

使用事務

在沒有顯示使用事務的時候,每一次插入作業系統都自動建立來乙個事務,在插入後立即體檢。對於批量插入操作會導致頻繁建立事務,影響插入效率。我們可以顯示開啟事務,在執行完所有插入操作後再提交。

使用索引

索引維護乙個表中某一列或某幾列的順序,這樣即可以快速定位到一組值,而不用掃遍全表。

索引可以提高查詢速度,但也有兩個明顯缺點:

以下場景不建議使用索引:

非同步執行緒,寫資料庫統一管理

資料庫操作是乙個耗時的操作,有必要放到非同步執行緒,同時為了保證資料的同步和避免一些死鎖等待情況,可以考慮雙快取機制。把所有資料庫操作統一放到乙個執行緒佇列執行。

提高查詢效能

避免查詢沒必要的列,減少排序的複雜度。

本文參考書籍《android應用效能優化最佳實踐》

優化建議 儲存效能優化。

在 應用中,海量的資料讀寫對磁碟訪問造成巨大壓力,雖然可以通過cache解決一部分資料讀壓力,但是很多時候,磁碟仍然是系統最嚴重的瓶頸。而且磁碟中儲存的資料是 最重要的資產,磁碟的可用性和容錯性也至關重要。機械硬碟是目前最常用的一種硬碟,通過馬達驅動磁頭臂,帶動磁頭到指定的磁碟位置訪問資料,由於每次...

mysql儲存效能優化

1 使用索引 每張表最多可以做16個索引,支援多列索引和全文索引 建立索引 create index index name on users username 檢視索引 show index from users 是一把雙刃劍,建不建立索引,主要看錶的功能,找好乙個平衡點,2 使用explain分析...

儲存技術與效能優化

例如,檔案系統遷移裸裝置,增加磁碟數量,增加i o 通道頻寬,提高磁碟條帶化程度等。這種大動干戈,尤其是投入大量硬體和儲存之後,卻往往是收效甚微。事實上,作為乙個整體應用,很多系統大量i o操作是應用軟體不合理導致的。因此在出現大量i o操作時,應先分析是否能優化軟體。通常而言,乙個oltp 的主要...