iT邦幫忙

0

MYSQL 的TRIGGER的效能真的很差嗎

  • 分享至 

  • xImage

各位前輩先進
請教一個鳥問題
在下有一JOB處理收據問題,處理列印後會把收據號先INSERT 到一個table ghome然後把收據號寫回訂單,想試用一下triggler
結果一個UPDATE卻需要用到10秒,但不論是用程式或直接下指令都不會用到10秒,
想請問一下各位先進,mysql 的 triggler 真的有那麼差嗎?

就不過是在
after insert ghome(table name)
BEGIN 與 END 之間加上了
UPDATE ords set kps_no = new.odx_no where k_no = new.k_no ;

要10秒?求解

看更多先前的討論...收起先前的討論...
DennisLu iT邦好手 1 級 ‧ 2024-05-11 20:19:13 檢舉
index 建太多?
arcashui iT邦新手 4 級 ‧ 2024-05-11 23:52:59 檢舉
index 建太多會如此嗎??
但一般若透過PHP來UPDATE指令是沒有這個問題的,會想透過TRIGGER來執行是因為PHP必須在拋出指令後要以sleep的方式暫停個幾秒再去抓值來塞進table.

真的是因為INDEX太多??
若真如此, 真是兩難
iseileen iT邦新手 4 級 ‧ 2024-05-12 10:28:55 檢舉
trigger是在insert之後執行,有可能遇到一些鎖定或瓶頸是直接下update指令不會發生的,可以用performance scheme監控看看。
arcashui iT邦新手 4 級 ‧ 2024-05-12 23:06:31 檢舉
感恩大德, 我試試
會不會是你的trigger出現了巢狀update ?
arcashui iT邦新手 4 級 ‧ 2024-05-14 00:12:45 檢舉
根據自己測試的結果, trigger時若用上update 都會有延遲的情形, 也查不到設定的地方, 不過, 在詢問 CHATGPT之後, 我直接使用了 stored procedure 來取代接update 的指令, 果然一用就過,
謝謝各位先進的指導,
再此也針對一些先進的回覆說明一下:
1. 我的trigger中的update 很直覺, 沒有巢狀loop的問題
2. 有關performance scheme 我係利用workbench來查看, 不過因為個人能力問題, 還需要再找一些資料來好好研讀一番, 在此先謝謝先進的建議。
3. 有關於index是不是建太多,雖然跟這個問題沒有直接或間接的影響或關聯, 但也因此去把索引再看一遍, 也重新發現自己現行的資料表有太多不必要的索引被建立, 的確影頗大。

再此感謝各位先進的指導, 感恩
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
ckp6250
iT邦好手 1 級 ‧ 2024-05-12 04:51:41

TRIGGER 很強大,不必質疑它。

但一般若透過PHP來UPDATE指令是沒有這個問題的,會想透過TRIGGER來執行是因為PHP必須在拋出指令後要以sleep的方式暫停個幾秒再去抓值來塞進table.

就算再差,至少不會低於上面的執行方式。

您再去找答案,但放心去用吧。

arcashui iT邦新手 4 級 ‧ 2024-05-14 19:52:39 檢舉

TRIGGRT是真的很強大, 但現在只能透過stored procedure
來解決UPDATE的問題。

我要發表回答

立即登入回答