
又刪了12個(gè)人
,節(jié)約了94M的空間!【不要讓拉黑你的人占用你的空間,您也試試吧,復(fù)制我的消息,找到微信里的設(shè)置,通用,群發(fā)助手,全選,復(fù)制粘貼消息發(fā)送就行,誰(shuí)的名字變色了,刪掉就行!】
已啦。
有朋友今天找我,說(shuō)最近老是收到這條微信消息,被煩到不要不要的境地。
但是那么多人在發(fā),不知道是不是真的刪除幾個(gè)拉黑自己的人就能節(jié)省很大空間出來(lái)?只是想到自己收到類似信息時(shí)的反感心情,又不敢輕易嘗試,所以搞得自己很糾結(jié)。
正好我曾經(jīng)做過(guò)類似的IM即時(shí)通訊工具,為了有理有據(jù),那么我就從微信客戶端的數(shù)據(jù)存儲(chǔ)角度來(lái)分析這個(gè)問(wèn)題。
首先鑒于微信存儲(chǔ)的數(shù)據(jù)特征,采用SQLite數(shù)據(jù)庫(kù)結(jié)合本地文件來(lái)存儲(chǔ)本地?cái)?shù)據(jù),數(shù)據(jù)庫(kù)為local.db,本地文件存儲(chǔ)在document目錄下的localfile文件夾中。
下面我們就來(lái)進(jìn)行詳細(xì)的數(shù)據(jù)庫(kù)表結(jié)構(gòu)分析。
1 msg表詳細(xì)信息
表名:msg 備注:消息數(shù)據(jù)存儲(chǔ)表
| 主鍵 | 字段名 | 數(shù)據(jù)類型 | 長(zhǎng)度 | 可空 | 備注 |
|---|---|---|---|---|---|
| 是 | ID | int | 32 | 否 | 消息唯一id |
| 否 | m_chatId | String | 64 | 否 | 聊天id |
| 否 | m_strOppositeSideName | String | 64 | 否 | 發(fā)消息者名稱 |
| 否 | m_strMessageBody | String | 256 | 是 | 消息內(nèi)容 |
| 否 | m_isFromSelf | Bool | 2 | 否 | 是否是自己發(fā)的小 |
| 否 | m_messageStatus | Int | 32 | 否 | 消息狀態(tài) |
| 否 | m_strTime | String | 32 | 否 | 消息時(shí)間戳 |
| 否 | m_oppositeChaterId | String | 64 | 否 | 發(fā)送方id |
| 否 | m_contentType | Int | 32 | 否 | 內(nèi)容類型 |
| 否 | mediaPath | String | 256 | 是 | 附件路徑 |
| 否 | loginUserId | Int | 32 | 否 | 當(dāng)前用戶id,對(duì)應(yīng)loginUser表的id |
注:每收發(fā)一條消息,均向該表中添加一條數(shù)據(jù),如果收發(fā)的是語(yǔ)音、圖片、小視頻,則同時(shí)往localfile文件夾下存儲(chǔ)一個(gè)附件文件,消息的mediaPath項(xiàng)紀(jì)錄附件完整的路徑。
2 contact表詳細(xì)信息
表名: contact 備注:聯(lián)系人信息存儲(chǔ)表
| 主鍵 | 字段名 | 數(shù)據(jù)類型 | 長(zhǎng)度 | 可空 | 備注 |
|---|---|---|---|---|---|
| 是 | id | string | 64 | 否 | 主鍵,微信號(hào) |
| 否 | Name | String | 64 | 否 | 名稱 |
| 否 | City | Stirng | 32 | 否 | 地區(qū) |
| 否 | HeadPic | String | 256 | 否 | 頭像鏈接 |
| 否 | Sex | Bool | 2 | 否 | 性別 |
| 否 | Signature | String | 256 | 是 | 個(gè)性簽名 |
| 否 | From | String | 64 | 否 | 來(lái)源 |
| 否 | Comments | String | 64 | 是 | 備注名 |
| 否 | PhoneNum1 | String | 11 | 是 | 備注,手機(jī)號(hào)碼1 |
| 否 | PhoneNum2 | String | 11 | 是 | 備注,手機(jī)號(hào)碼2 |
| 否 | PhoneNum3 | String | 11 | 是 | 備注,手機(jī)號(hào)碼3 |
| 否 | PhoneNum4 | String | 11 | 是 | 備注,手機(jī)號(hào)碼4 |
| 否 | PhoneNum5 | String | 11 | 是 | 備注,手機(jī)號(hào)碼5 |
| 否 | TagId | Int | 64 | 是 | 標(biāo)簽id,對(duì)應(yīng)tag表的主鍵,默認(rèn)無(wú)標(biāo)簽 |
| 否 | DescString | String | 256 | 是 | 描述 |
| 否 | DescPhoto | String | 64 | 是 | 描述圖片路徑 |
| 否 | IsStar | Bool | 2 | 是 | 是否星標(biāo)好友,默認(rèn)不是 |
| 否 | CanSeeMe | Bool | 2 | 是 | 可以看我朋友圈,默認(rèn)可看 |
| 否 | SeeHis | Bool | 2 | 是 | 看他朋友圈,默認(rèn)可看 |
| 否 | Black | Bool | 2 | 是 | 加入黑名單,默認(rèn)不加 |
| 否 | loginUserId | Int | 32 | 否 | 當(dāng)前用戶id,對(duì)應(yīng)loginUser表的id |
3 chat表詳細(xì)信息
表名:chat 備注:聊天信息表
| 主鍵 | 字段名 | 數(shù)據(jù)類型 | 長(zhǎng)度 | 可空 | 備注 |
|---|---|---|---|---|---|
| 是 | id | int | 32 | 否 | 主鍵,會(huì)話id,群聊時(shí)為生成id,單聊則為對(duì)方id |
| 否 | isTop | Bool | 2 | 是 | 是否置頂,默認(rèn)不置頂 |
| 否 | Mute | Bool | 2 | 是 | 消息免打擾,默認(rèn)不開(kāi)啟 |
| 否 | Background | String | 64 | 是 | 聊天背景,默認(rèn)不使用 |
| 否 | isGroup | Bool | 2 | 否 | 是否群聊 |
| 否 | GroupName | String | 32 | 是 | 群聊名稱,默認(rèn)前三個(gè)人名,群聊有效 |
| 否 | Code | String | 32 | 是 | 群二維碼,群聊有效 |
| 否 | Notice | String | 256 | 是 | 群公告,群聊有效 |
| 否 | NikeName | String | 32 | 是 | 我在本群的昵稱,默認(rèn)用微信昵稱 |
| 否 | ShowNickName | Bool | 2 | 是 | 顯示他人在群里的昵稱 |
| 否 | loginUserId | Int | 32 | 否 | 當(dāng)前用戶id,對(duì)應(yīng)loginUser表的id |
4 group_member表詳細(xì)信息
表名:group_member 備注:群組成員表。
| 主鍵 | 字段名 | 數(shù)據(jù)類型 | 長(zhǎng)度 | 可空 | 備注 |
|---|---|---|---|---|---|
| 是 | ContactId | String | 64 | 否 | 聯(lián)合主鍵,contact表的主鍵 |
| 是 | ChatId | int | 32 | 否 | 聯(lián)合主鍵,chat表主鍵 |
| 否 | GroupNickName | String | 32 | 是 | 用戶在群聊中的昵稱 |
5 tag 表詳細(xì)信息
表名:tag 備注:標(biāo)簽表
| 主鍵 | 字段名 | 數(shù)據(jù)類型 | 長(zhǎng)度 | 可空 | 備注 |
|---|---|---|---|---|---|
| 是 | id | int | 10 | 否 | 主鍵 |
| 否 | Name | String | 32 | 否 | Tag名稱 |
| 否 | loginUserId | Int | 32 | 否 | 當(dāng)前用戶id,對(duì)應(yīng)loginUser表的id |
6 loginUser表詳細(xì)信息
表名: loginUser備注:登錄用戶信息表
| 主鍵 | 字段名 | 數(shù)據(jù)類型 | 長(zhǎng)度 | 可空 | 備注 |
|---|---|---|---|---|---|
| 是 | Account | String | 32 | 否 | 賬戶名,主鍵 |
| 否 | id | string | 64 | 否 | 微信號(hào) |
| 否 | Name | String | 64 | 否 | 名稱 |
| 否 | City | Stirng | 32 | 否 | 地區(qū) |
| 否 | HeadPic | String | 256 | 否 | 頭像鏈接 |
| 否 | Sex | Bool | 2 | 否 | 性別 |
| 否 | Signature | String | 256 | 是 | 個(gè)性簽名 |
| 否 | From | String | 64 | 否 | 來(lái)源 |
| 否 | Comments | String | 64 | 是 | 備注名 |
表結(jié)構(gòu)分析到此結(jié)束。
怎么理解這個(gè)信息呢,針對(duì)最后一張表loginUser表,我們可以理解為這就是一張excel的表格結(jié)構(gòu)定義,這個(gè)表格包含了Account、id、Name、City、HeadPic、Sex、Signature、From、Comments這么多列。每次有不通的用戶登錄后,該表格中就多插入一條數(shù)據(jù)。(主鍵表示該列的數(shù)據(jù)唯一)
也就是說(shuō)沒(méi)多一個(gè)聯(lián)系人,則contact表多一條數(shù)據(jù),都一條消息,則msg表多一條數(shù)據(jù)(語(yǔ)音、圖片、小視頻文件同時(shí)存入localfile文件夾中),多一個(gè)群組,則聊天表格多一條數(shù)據(jù)。
從上面分析可以看出,好友基本都是文本信息,占用空間微乎其微,而且好友數(shù)據(jù)相對(duì)固定(微信最多可加好友300人?)而真正數(shù)據(jù)膨脹的則是msg既聊天消息(微信對(duì)聊天條數(shù)并沒(méi)有限制,而且聊天中的圖片、表情、語(yǔ)音、視頻一般都是兆或者幾十兆的數(shù)據(jù)單位)。
所以,好友數(shù)和空間內(nèi)存沒(méi)有關(guān)系!
占用存儲(chǔ)空間的不是好友,而是和好友的聊天消息!
(本文完)
ps:清理內(nèi)存的方法,設(shè)置--通用--清理儲(chǔ)存空間--查看微信儲(chǔ)存空間--選擇刪除
再ps:markdown插入表格的方法是在是坑~~~~