場景:
資料庫:
訂單列表
userid(使用者id),ordertime(下單時間),isevaluate(是否評價)
主要思路:
base:系統內,做個定時查詢,根據ordertime(下單時間)判斷是否超過七天,然後修改isevaluate(是否評價)
注意事項:
以為是每天以最少1-2萬量級的資料增加,因此表的體量很大,且積累的會越來越多(暫不考慮清楚or移植舊資料),對錶進行如此大的查詢注意系統以及資料庫效能是否會對其產生影響,系統線上部署是集群方式
解決方案:
公司主管大人:將業務邏輯用sql指令碼方式實現,系統程式呼叫sql指令碼執行處理,使用windows自帶的定時任務功能呼叫api
個人分析:程式壓力轉移給資料庫,讓資料庫承擔這個壓力,減少程式的效能消耗,缺點是加大了資料庫效能消耗
我在公司寫的:業務邏輯在程式內部實現,先查出符合條件的資料,再遍歷賦值 (本分析文章場景簡化了些許,實際上還要做其他修改,所以要遍歷),最後儲存到資料庫,使用windows自帶的定時任務功能呼叫api
個人分析:系統程式主要承擔壓力,但可能造成資源消耗過多,從而影響系統其他功能,增加系統負載,因為是集群,所以系統程式與資料庫資源都浪費嚴重
我知識範圍內想到的最優方案:每次下單,產生訂單資料的同事,向佇列(rocketmq,redismq,rabbitmq等佇列)中插入一條資料,單獨部署乙個程式每天定時掃瞄佇列,執行邏輯判斷,符合條件則進行修改資料庫
個人分析:將資料寫入佇列,減輕對資料庫的效能消耗,減少程式頻繁訪問資料庫帶來的壓力。單獨部署程式掃瞄佇列,不會影響主系統。缺點是需要多部署個程式和佇列服務,且佇列有丟失資料風險
業界前輩方案:
1、延遲佇列
2、資料庫定時執行指令碼
乙個簡單功能的SQL 實現
1.假設有一張表示cj表 name subject result 張三 語文 80張三 數學 90張三 物理 85李四 語文 85李四 數學 92李四 物理 89要求查詢結果 姓名 語文 數學 物理 張三 80 90 85李四 85 92 89 建立cj表sql create table cj id...
乙個簡單功能的SQL 實現
1.假設有一張表示cj表 name subject result 張三 語文 80張三 數學 90張三 物理 85李四 語文 85李四 數學 92李四 物理 89要求查詢結果 姓名 語文 數學 物理 張三 80 90 85李四 85 92 89 建立cj表sql create table cj id...
從乙個演算法題學到的
程式設計珠璣 a題 給定乙個最多包含40億個隨機排列的32位整數的順序檔案,找出乙個不在檔案中的32位整數。1 在檔案中至少存在這樣乙個數?2 如果有足夠的記憶體,如何處理?3 如果記憶體不足,僅可以用檔案來進行處理,如何處理?答案 1 32位整數,包括 2146473648 2146473647,...