如题,数据库用的是MySQL。其中某个表一直以周期性添加一条数据。 目前用的是轮询的方式。 题主想知道数据库是否支持类似于Java中观察者模式,当数据库添加记录后,就会自动触发某个自定义函数?
人生最曼妙的风景,竟是内心的淡定与从容!
以下,答案都是建立在主表資料量超大的基礎上。
(1) 使用mysql觸發器 (2) mysql是可以運行外部腳本(可能跟使用者權限和平台有關),透過腳本觸發後端程式
(1) 使用mysql觸發器 (2) 觸發到資料後,將資料寫入記憶體表 (3) 後端程式輪詢記憶體表,處理完成後,刪除已經輪詢的數據,防止記憶體表爆掉
你的思路最好的解決方法應該是Hook,做個鉤子給MySQL,當資料庫改變了就執行鉤子程式。不過我搜了一下對於給資料庫直接增加Hook好像沒什麼好的想法。 唯一看到可行的辦法是:使用Git管理你的MySQL資料庫,當資料庫檔案改變的時候透過Git呼叫Hook。雖然可行,不過覺得略Geek了一點。
Hook
所以感覺比較簡單的思路還是從你的程式上思考,當程式執行了資料庫操作類別中的insert()函數後執行某個Hook函数。也就是說不給資料庫加鉤子,而給程式的資料庫操作類別加鉤子。
insert()
Hook函数
触发器能不能達到你的需求呢? ?
触发器
當執行insert的時候,就觸發。 。
以下,答案都是建立在主表資料量超大的基礎上。
方法1
(1) 使用mysql觸發器
(2) mysql是可以運行外部腳本(可能跟使用者權限和平台有關),透過腳本觸發後端程式
方法2
(1) 使用mysql觸發器
(2) 觸發到資料後,將資料寫入記憶體表
(3) 後端程式輪詢記憶體表,處理完成後,刪除已經輪詢的數據,防止記憶體表爆掉
你的思路最好的解決方法應該是
Hook
,做個鉤子給MySQL,當資料庫改變了就執行鉤子程式。不過我搜了一下對於給資料庫直接增加Hook好像沒什麼好的想法。唯一看到可行的辦法是:使用Git管理你的MySQL資料庫,當資料庫檔案改變的時候透過Git呼叫Hook。雖然可行,不過覺得略Geek了一點。
所以感覺比較簡單的思路還是從你的程式上思考,當程式執行了資料庫操作類別中的
insert()
函數後執行某個Hook函数
。也就是說不給資料庫加鉤子,而給程式的資料庫操作類別加鉤子。触发器
能不能達到你的需求呢? ?當執行insert的時候,就觸發。 。