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

更新於 發佈於 閱讀時間約 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
435會員
2.5K內容數
Alan idea 普普文創、水彩速寫、迷你短篇、文創漫談、心靈雞湯、踏青步道、智慧音樂、美食天堂。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
普普文創 的其他內容
沒人看作品就無法發揮應有價值 流量之所以重要,可以用一個簡單的比喻來解釋:想像你是一位藝術家,在文創市集上展示自己的作品。你花了大量時間和心血創作這些作品,但如果沒有人來欣賞、購買,那這些作品就無法發揮其應有的價值和意義。同樣地,寫作一篇文章就好像是展示自己的作品,而流量則是讓更多人有機會看到、了
今天在方格子沙龍看到,很驚訝為何差那麼多,於是研究就一下。 哈斯的採購人生 《採購人生|職場自保七大指南》分別發在 Dcard 和 Vocus 在 Dcard 這篇文章有 243 個喜歡 456 個收藏和 83 次轉發, Vocus 則僅有 15 次閱覽和 9 個喜歡。 維基百科說:Dc
興趣圖譜是基於共同的興趣愛好,無需彼此認識,單向關注的圖譜。本篇文章介紹了興趣圖譜在平臺運營方面的應用,以及興趣圖譜與社交圖譜的區別。提出了在創作者、讀者和平臺之間增加黏著度的觀點,以及興趣圖譜的多種應用場景。說明瞭興趣圖譜是值得注重的潛力領域,並提到了對於單向傳播和互動減少的看法。
近年來,社群媒體平臺的演算法改變引起了廣泛的討論和關注,其中抖音平臺的演算法改變更是引發人們討論的重要議題。本文從演算法的具體變化、其影響以及用戶的反饋等多個角度進行分析,並提出相應的創作建議和改進措施,以全面瞭解社群媒體平臺演算法改變的影響與趨勢。
1~3月總流量 首先,從下方的圖表來看,聯合報的三月(2024/1~3)總流量為330.8M(百萬)次瀏覽,痞客邦為93.61M次瀏覽,方格子為18.12M次瀏覽。 12~2月總流量 聯合報的三月(2023/12~2024/2)總流量為321.8M(百萬)次瀏覽,痞客邦為95.16M次瀏覽,方
財會和業務是企業發展的兩個重要支柱。會計部門負責記錄和管理企業的財務資訊,而業務部門則負責創造收入和利潤。財會優先和業務優先是兩種不同的管理理念。 財會優先 財會優先的理念認為,企業的經營活動應以財務指標為導向,以確保企業的盈利能力和穩定性。在這種理念下,企業會計部門的權力較大,在決策過程中扮演
沒人看作品就無法發揮應有價值 流量之所以重要,可以用一個簡單的比喻來解釋:想像你是一位藝術家,在文創市集上展示自己的作品。你花了大量時間和心血創作這些作品,但如果沒有人來欣賞、購買,那這些作品就無法發揮其應有的價值和意義。同樣地,寫作一篇文章就好像是展示自己的作品,而流量則是讓更多人有機會看到、了
今天在方格子沙龍看到,很驚訝為何差那麼多,於是研究就一下。 哈斯的採購人生 《採購人生|職場自保七大指南》分別發在 Dcard 和 Vocus 在 Dcard 這篇文章有 243 個喜歡 456 個收藏和 83 次轉發, Vocus 則僅有 15 次閱覽和 9 個喜歡。 維基百科說:Dc
興趣圖譜是基於共同的興趣愛好,無需彼此認識,單向關注的圖譜。本篇文章介紹了興趣圖譜在平臺運營方面的應用,以及興趣圖譜與社交圖譜的區別。提出了在創作者、讀者和平臺之間增加黏著度的觀點,以及興趣圖譜的多種應用場景。說明瞭興趣圖譜是值得注重的潛力領域,並提到了對於單向傳播和互動減少的看法。
近年來,社群媒體平臺的演算法改變引起了廣泛的討論和關注,其中抖音平臺的演算法改變更是引發人們討論的重要議題。本文從演算法的具體變化、其影響以及用戶的反饋等多個角度進行分析,並提出相應的創作建議和改進措施,以全面瞭解社群媒體平臺演算法改變的影響與趨勢。
1~3月總流量 首先,從下方的圖表來看,聯合報的三月(2024/1~3)總流量為330.8M(百萬)次瀏覽,痞客邦為93.61M次瀏覽,方格子為18.12M次瀏覽。 12~2月總流量 聯合報的三月(2023/12~2024/2)總流量為321.8M(百萬)次瀏覽,痞客邦為95.16M次瀏覽,方
財會和業務是企業發展的兩個重要支柱。會計部門負責記錄和管理企業的財務資訊,而業務部門則負責創造收入和利潤。財會優先和業務優先是兩種不同的管理理念。 財會優先 財會優先的理念認為,企業的經營活動應以財務指標為導向,以確保企業的盈利能力和穩定性。在這種理念下,企業會計部門的權力較大,在決策過程中扮演
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
好現實的煩惱QQ 我發現上次閱讀方向,有點左右不分啊(畫完才發現) 居然犯這麼基礎的錯誤,好羞恥,我就不修改了,留個紀念哈哈哈哈。 https://gamma.app/docs/-wfxp5wdygrf4d7s 上述提到的作品連結,可以幫我看看有甚麼問題,有好的建議我會採納的, 那麼下
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
以前有一段時間,見不得Line有未讀訊息,常常沒有一個一個讀好讀滿,就直接按〔一鍵已讀〕,讓未讀數歸零。 但不知從何開始,Line的未讀訊息一直都是999+的狀態,除了一定要看跟想看的,大多數的訊息是連點下已讀都發懶。 這是強迫症默默治好了?還是另一種懶惰症?(笑) 為了不讓訊息量被洗到居
Thumbnail
大家好,好久沒更新,最近教學論命繁忙,這邊有所耽擱,真的抱歉。 最近也有跟設計師在討論要架官網,時間真的是不夠用了,因此方格子這邊我會先暫停一下,架好官網之後會將文章轉移到官網,至於會不會有收費文章,這邊我還再思考當中。 如果想看我最新的貼文,可以轉到我的社群上面去。目前是每周二晚上八點發放貼文
中文網站介面 測試:安著手機、蘋果電腦。 瀏覽器:皆是Google瀏覽器。 結果:過多人使用時即使登入系統也無法查看訂單和購物車,但過一陣子會自動更新變回正常。
Thumbnail
整合測試的時候突然遇到一個突然無法登入產品網站的問題,把程式模組單獨拉出來測試又正常,觀察測試報告後發現出現發生登入異常的時間點並不固定,而且只要發生就會連續發生一段時間,程式被中斷掉。後來確認問題在...
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
好現實的煩惱QQ 我發現上次閱讀方向,有點左右不分啊(畫完才發現) 居然犯這麼基礎的錯誤,好羞恥,我就不修改了,留個紀念哈哈哈哈。 https://gamma.app/docs/-wfxp5wdygrf4d7s 上述提到的作品連結,可以幫我看看有甚麼問題,有好的建議我會採納的, 那麼下
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
以前有一段時間,見不得Line有未讀訊息,常常沒有一個一個讀好讀滿,就直接按〔一鍵已讀〕,讓未讀數歸零。 但不知從何開始,Line的未讀訊息一直都是999+的狀態,除了一定要看跟想看的,大多數的訊息是連點下已讀都發懶。 這是強迫症默默治好了?還是另一種懶惰症?(笑) 為了不讓訊息量被洗到居
Thumbnail
大家好,好久沒更新,最近教學論命繁忙,這邊有所耽擱,真的抱歉。 最近也有跟設計師在討論要架官網,時間真的是不夠用了,因此方格子這邊我會先暫停一下,架好官網之後會將文章轉移到官網,至於會不會有收費文章,這邊我還再思考當中。 如果想看我最新的貼文,可以轉到我的社群上面去。目前是每周二晚上八點發放貼文
中文網站介面 測試:安著手機、蘋果電腦。 瀏覽器:皆是Google瀏覽器。 結果:過多人使用時即使登入系統也無法查看訂單和購物車,但過一陣子會自動更新變回正常。
Thumbnail
整合測試的時候突然遇到一個突然無法登入產品網站的問題,把程式模組單獨拉出來測試又正常,觀察測試報告後發現出現發生登入異常的時間點並不固定,而且只要發生就會連續發生一段時間,程式被中斷掉。後來確認問題在...