【文創漫談】留言系統 | 標示全部為已讀 | 標示未讀為已讀 | 程式設計 | 創作者

更新於 發佈於 閱讀時間約 5 分鐘
raw-image



標示全部為已讀失效

最近發現留言系統中,"標示全部為已讀"的速度明顯變慢,甚至有時會失效。許多使用者都報告遇到了相同的問題。可喜的是現已修好,速度快多了。通常這是程式設計中一個常見的漏洞。系統沒有充分考慮到整體容量問題與效能,才導致了這樣的情況。以下是說明我以前碰到案例的示範與處理方法。當系統開始顯示緩慢或出現其他問題時,通常是因為程式設計中的一些問題所致。這可能是由於系統負載過重、程式碼效能問題或資料庫管理不當等原因所引起的。


一般留言系統資料表

通常設計一個留言系統的資料表(假設為messages)可以考慮以下欄位:

message_id:留言的唯一識別符,主鍵。

user_id:留言的使用者識別符,外鍵參考到使用者資料表中的使用者ID。

content:留言的內容,可以是文字或者其他格式。

timestamp:留言的時間戳記,記錄留言被創建的日期和時間。

is_read:標記留言是否已讀,可以是布林值(true/false)或者整數(0代表未讀,1代表已讀)。

tags:留言的標籤,可以是一個字串或者多個標籤的集合。


這是一個簡單的留言系統資料表設計,可以根據具體需求進一步擴充或調整欄位。例如,可以添加回覆留言的功能,以及相應的欄位來記錄回覆的關係。另外,還可以考慮添加欄位來記錄留言的讚數、回覆數等其他相關信息。以上是一般留言資料的結構。


再來考慮筆數多寡

假設每個人每天平均有100則留言,在平台系統中有假如有50萬個使用者,那麼每天就會產生50萬 * 100 =5千萬筆留言資料。而從在假如留言系統啟用至今大約120天,因此理論上總共應該有60億筆資料。(實際應較少,因有許多會員為非活躍會員)


標示全部為已讀

第一種方法是每次都從龐大的資料庫中撈取屬於特定使用者的資料,然後將每一筆未讀取的資料標記為已讀。這樣的做法需要處理該會員12萬筆資料中的每一筆,因此是一個龐大的操作。每次都將12萬筆資料全部重新寫入標記為1,這效率低下的。

如果要將上表中所有留言資料都標記為已讀取,可以使用下面的 SQL 語法:

UPDATE messages SET is_read = 1 where user_id = 'A';

這條 SQL 語句將會將 messages 資料表中該使用者為 A 之所有記錄的 is_read 欄位都設置為 1,表示已讀取。這樣就完成了將所有留言資料都標記為已讀取的操作。


標示未讀為已讀

另外一種方法則是先從資料庫中撈取屬於特定使用者的資料,然後僅對未讀取的資料進行修改,將其改為已讀。這樣的做法僅需要處理未讀取資料的部分,假設這次只有90筆資料需要修改,而不是每次都處理整個12萬筆資料。這兩種方法的效率差異極大,第二種方法明顯更為節省時間和資源。

假設資料表名稱為 messages,未讀取的資料以 is_read 欄位表示,0代表未讀取,1代表已讀取。下面是將該使用者為A的所有未讀取的留言改為已讀取的 SQL 語法:

UPDATE messages SET is_read = 1 WHERE user_id = 'A' AND is_read = 0;

這條 SQL 語句將會將使用者為 A 之所有 is_read 欄位為 0(未讀取)的記錄更新為 1(已讀取)。這樣就完成了將所有未讀取的留言改為已讀取的操作。


資料量膨脹

隨著留言系統中資料量的增加,留言的數量也會不斷增加。如果現在系統中有60億筆資料,而在未來4個月可能會增加到120億筆。如果系統沒有擴充容量,則效能將逐漸降低。在處理如此龐大的資料量時,系統可能會面臨查詢速度變慢、資料處理時間增加等問題。這可能會導致系統反應速度變慢,用戶體驗下降,甚至影響系統的穩定性。


檢查系統的架構和程式碼

要解決這些問題,需要仔細檢查系統的架構和程式碼,找出潛在的瓶頸和效能問題。可能需要進行程式碼優化、資料庫優化或增加硬體資源等措施,以改善系統的效能。此外,定期進行系統監控和性能測試也至關重要,可及時發現問題並加以解決,確保系統的順暢運作。


高峰時段避開使用

對於使用者來說,如果確實遇到系統緩慢或其他問題,可以嘗試採取更輕量的操作方式,或在高峰時段避開使用,以減輕系統負載。同時,也可以向系統管理員反饋問題,協助他們更快地找到解決方案。


系統可能需要進行擴充容量

為了應對這種情況,系統可能需要進行擴充容量,例如增加伺服器資源、優化資料庫結構等,以確保系統能夠處理更大量的資料而不影響效能。同時,也需要定期進行系統監控和性能測試,及時發現問題並進行調整,以確保系統的順暢運作。


程式優化

因此,選擇適當的寫法可以大大提高系統的效能和效率,特別是在面對龐大資料量時。例如上面的兩個語法只差了 "AND is_read = 0",也就是範圍從"所有"縮小到"未讀",前者是12萬筆,後者只有90筆,相差之大可想而知。兩者耗時,兩者相差1300倍。這是很驚人的差距。而魔鬼就藏在這小小的細節裡。


Alisa莉莉思哈斯的採購人生佼逸園冰兒心裡住著小男孩

深邃月光泰曼勝女的紓壓圈謝立婷小松鼠咚咚的思辨學堂

玄玄心森森可轉債老爹

留言
avatar-img
留言分享你的想法!
李建崑-avatar-img
2024/05/01
謝謝分享!真的很專業,收藏了。
普普文創-avatar-img
發文者
2024/05/01
李建崑.Paulos 謝謝!感恩收藏!
avatar-img
普普文創
476會員
3.4K內容數
普普文創、水彩速寫、迷你短篇、文創漫談、心靈雞湯、踏青步道、智慧音樂、美食天堂、超級房間。
普普文創的其他內容
2025/04/29
提示詞:與AI的對話起點 使用AI的提示詞(Prompt)就像與一位無比博學卻略顯拘謹的對話者交談。你越清楚如何表達需求,AI的回應就越貼近你的期待。然而,隨著使用時間的累積,我們逐漸學會如何精準地「指揮」AI,但也發現了一個問題:若未明確交代細節,AI的回答往往落入一種「最大公約數」的模式——也
Thumbnail
2025/04/29
提示詞:與AI的對話起點 使用AI的提示詞(Prompt)就像與一位無比博學卻略顯拘謹的對話者交談。你越清楚如何表達需求,AI的回應就越貼近你的期待。然而,隨著使用時間的累積,我們逐漸學會如何精準地「指揮」AI,但也發現了一個問題:若未明確交代細節,AI的回答往往落入一種「最大公約數」的模式——也
Thumbnail
2025/04/26
AI寫小說,這幾個字聽起來像是科幻故事裡才會出現的場景,然而如今已經變成我們生活中可以實驗、可以討論的現實。我曾經看過有人用AI改寫《紅樓夢》,用現代的方式重新鋪陳經典,也有人試圖讓AI模擬不同風格的文學家,甚至模擬金庸、村上春樹的筆觸。我自己也試過很多方法,有時候覺得寫得不錯,有時候卻又覺得那不過
Thumbnail
2025/04/26
AI寫小說,這幾個字聽起來像是科幻故事裡才會出現的場景,然而如今已經變成我們生活中可以實驗、可以討論的現實。我曾經看過有人用AI改寫《紅樓夢》,用現代的方式重新鋪陳經典,也有人試圖讓AI模擬不同風格的文學家,甚至模擬金庸、村上春樹的筆觸。我自己也試過很多方法,有時候覺得寫得不錯,有時候卻又覺得那不過
Thumbnail
2025/04/25
如何減少惡意留言,其實這個問題已經發生一段時間,作為一個程式設計師,碰到這種問題應該都很有經驗去處理。不過因為每個人使用的程式語言不同,而且現在都是模塊化的管理,所以這次針對這個問題,做討論。我把這個問題丟給 Gimini去處理,他基本上就可以幫我處理到80%以上,剩下的只要能夠丟到系統裡面,去做測
Thumbnail
2025/04/25
如何減少惡意留言,其實這個問題已經發生一段時間,作為一個程式設計師,碰到這種問題應該都很有經驗去處理。不過因為每個人使用的程式語言不同,而且現在都是模塊化的管理,所以這次針對這個問題,做討論。我把這個問題丟給 Gimini去處理,他基本上就可以幫我處理到80%以上,剩下的只要能夠丟到系統裡面,去做測
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
有時候回顧我部落格的文章,發現往往自己嘔心瀝血之作點閱數少的可憐... 反而隨意寫、在我眼中跟個版廢文沒兩樣的作品點閱率很高,一直感到很疑惑。我想知道怎樣的文章受讀者喜愛? 搜尋引擎又會推薦給讀者什麼樣子的文章?
Thumbnail
有時候回顧我部落格的文章,發現往往自己嘔心瀝血之作點閱數少的可憐... 反而隨意寫、在我眼中跟個版廢文沒兩樣的作品點閱率很高,一直感到很疑惑。我想知道怎樣的文章受讀者喜愛? 搜尋引擎又會推薦給讀者什麼樣子的文章?
Thumbnail
本篇文章是根據知名 SEO 軟體開發商 Ahrefs 在分析一百多萬個網址後,所整理出來的技術性 SEO 問題以及對應的解決方案。
Thumbnail
本篇文章是根據知名 SEO 軟體開發商 Ahrefs 在分析一百多萬個網址後,所整理出來的技術性 SEO 問題以及對應的解決方案。
Thumbnail
這幾天我一直沒有發布新文章,是因為我一直在研究電子報訂閱的事情。其實架設一個網站不難! 佈置好首頁的版面也不難! 對我來說反而是[電子報訂閱]難倒我了。 光是找一個外掛看人家推薦一堆電子報程式,我光選就消耗掉我2天時間了! 總算選好要使用的程式下在完畢,才是接下來困難的地方。 我好死不死選到了
Thumbnail
這幾天我一直沒有發布新文章,是因為我一直在研究電子報訂閱的事情。其實架設一個網站不難! 佈置好首頁的版面也不難! 對我來說反而是[電子報訂閱]難倒我了。 光是找一個外掛看人家推薦一堆電子報程式,我光選就消耗掉我2天時間了! 總算選好要使用的程式下在完畢,才是接下來困難的地方。 我好死不死選到了
Thumbnail
標示全部為已讀失效 最近發現留言系統中,"標示全部為已讀"的速度明顯變慢,甚至有時會失效。許多使用者都報告遇到了相同的問題。這實際上是程式設計中一個常見的漏洞。系統沒有充分考慮到整體容量問題與效能,才導致了這樣的情況。(實際原因待查,此處僅為一般解說),當系統開始顯示緩慢或出現其他問題時,通常
Thumbnail
標示全部為已讀失效 最近發現留言系統中,"標示全部為已讀"的速度明顯變慢,甚至有時會失效。許多使用者都報告遇到了相同的問題。這實際上是程式設計中一個常見的漏洞。系統沒有充分考慮到整體容量問題與效能,才導致了這樣的情況。(實際原因待查,此處僅為一般解說),當系統開始顯示緩慢或出現其他問題時,通常
Thumbnail
幾乎所有的網站都一定會用到圖片和 icon,甚至可能會需要載入大量的圖片,它們也是網站中佔比最多的資源,所以透過優化這些圖片資源,就可能帶來很大的效能提升。
Thumbnail
幾乎所有的網站都一定會用到圖片和 icon,甚至可能會需要載入大量的圖片,它們也是網站中佔比最多的資源,所以透過優化這些圖片資源,就可能帶來很大的效能提升。
Thumbnail
相信身為一個SEOer,最常聽到客戶掛在嘴邊說的,就是網站流量為什麼掉下來了?為什麼排名不見了?這些都是在做SEO時,經常耳熟能詳的問題之一,如果你還不瞭解網站出現的問題,那我推薦你可以看看這一篇文章了!
Thumbnail
相信身為一個SEOer,最常聽到客戶掛在嘴邊說的,就是網站流量為什麼掉下來了?為什麼排名不見了?這些都是在做SEO時,經常耳熟能詳的問題之一,如果你還不瞭解網站出現的問題,那我推薦你可以看看這一篇文章了!
Thumbnail
這已經不是我第一次見到Internal Server Error了,去年的10月也發生過一次。那個時候是尋求協助,但印象是尋求到不是負責這個事情的窗口,但是不對的窗口仍舊直接幫我處理掉問題。所以就到此為止。
Thumbnail
這已經不是我第一次見到Internal Server Error了,去年的10月也發生過一次。那個時候是尋求協助,但印象是尋求到不是負責這個事情的窗口,但是不對的窗口仍舊直接幫我處理掉問題。所以就到此為止。
Thumbnail
剛剛檢視我的文章 追蹤人數 好難看 沒有打中大眾心 反而是交友軟體 點擊率最高 那我接下來一系列 狂分享交友軟體 骯髒事? 為了流量? 好的交友軟體 是個趨勢 因為現代人 太寂寞 但太多交友軟體 充滿情色 亂 愛滋? 軟體只是個媒介 識人 需要時間 觀
Thumbnail
剛剛檢視我的文章 追蹤人數 好難看 沒有打中大眾心 反而是交友軟體 點擊率最高 那我接下來一系列 狂分享交友軟體 骯髒事? 為了流量? 好的交友軟體 是個趨勢 因為現代人 太寂寞 但太多交友軟體 充滿情色 亂 愛滋? 軟體只是個媒介 識人 需要時間 觀
Thumbnail
改善曝光度 上一篇文章講到部落格文章瀏覽量的問題。分析出來瀏覽量這麼差,要做的當然是改善自己的瀏覽量與曝光度的問題。基本上文章的部落格的屬性不會亂改,網站排名也沒有問題。所以要做的當然就是如何讓更多人知道你的網站或部落格。 自架網站 這上網隨便搜尋都有太多的答案可以遵循,我就不一一列出來。其實
Thumbnail
改善曝光度 上一篇文章講到部落格文章瀏覽量的問題。分析出來瀏覽量這麼差,要做的當然是改善自己的瀏覽量與曝光度的問題。基本上文章的部落格的屬性不會亂改,網站排名也沒有問題。所以要做的當然就是如何讓更多人知道你的網站或部落格。 自架網站 這上網隨便搜尋都有太多的答案可以遵循,我就不一一列出來。其實
Thumbnail
找不到網頁 404錯誤,也就是找不到網頁,是所有網路工作者的夢魘。當這個訊息出現,就代表網站上某個連結失效了。連結的重要性取決於其影響層面。如果連結只是連到某一筆資料,那麼影響層面較小。但如果連結是重要的,例如連到產品頁面或購物車或受甚至是官網首頁,那麼影響層面就會很大。如果重要的連結出現404錯
Thumbnail
找不到網頁 404錯誤,也就是找不到網頁,是所有網路工作者的夢魘。當這個訊息出現,就代表網站上某個連結失效了。連結的重要性取決於其影響層面。如果連結只是連到某一筆資料,那麼影響層面較小。但如果連結是重要的,例如連到產品頁面或購物車或受甚至是官網首頁,那麼影響層面就會很大。如果重要的連結出現404錯
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News