iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0

如果在單機開發的時候,如果我們希望將某個訂單的創建時間記錄下來
可能直覺上會有兩種做法

  1. 使用sql的now()來儲存
insert into order (created_at)
    VALUES (now());
  1. 在程式中先將現在時間轉成文字後再儲存
insert into order (created_at)
    VALUES ('2024-09-23T22:00:00+08:00');

這兩種做法如果說db跟app server在同一個機器上,理論上這兩個都可以算是創建時間沒問題
但如果db跟server在不同的電腦,這就會有問題了

比如說,今天這個db有三個app server在連線,今天如果我們用方法二(在程式中產生資料)
那這三台server如果都同時送出請求,但這三台server如果剛好其中一台的時鐘有狀況,時間跑的比較慢,這時候這三筆訂單的時間就會不相同

所以如果在上面這個情境中,創建訂單的語法就要使用第一種,才不會有狀況


上一篇
Isolation Level與樂觀鎖/悲觀鎖
下一篇
分散式系統的時間-2
系列文
從身邊神人大大身上學到的那些事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言