有些系統需求會為了方便使用者使用而出現所謂的"勾選執行"、"全部執行"。
當然顧名思義看起來又是把"個別執行"的指令多下幾次給資料庫即可達到的需求。
但是
千萬別這麼做。
個人的悲慘經驗是,寫程式的人可能出有這樣的思維「反正需求可以達到」。
但是這麼做的話下場就是對資料庫的存取次數過多,甚至可能多到直接當掉的可能。
當然Program designer 一開始並不會想到這麼多。
而且最常出現的回應是"去加強硬體設備吧!"
其實我個人也覺得加強硬體設備是手段之一。
但指令也是可以優化的。
如:
個別執行
product_id為1 的價碼更新為100
update product set price='100' where product_id='1'
選擇執行/全部執行
product_id為1與2 的價碼更新為100
update product set price='100' where product_id='1'
update product set price='100' where product_id='2'
或者
update product set price='100' where product_id='1' or product_id='1'
又或者
update product set price='100' where product_id in('1','2')
有沒有發現選擇執行/全部執行可已有三種寫法。
其中第一種存取數會很多,第二種寫的一堆OR 第三種則是用in 搞定一切
或許各有優缺。
目前讓我發現最大的缺點就是存取數過多會造成服務滿載的現象。
所以程式設計師或許不是DBA但在系統設計時替DBA想想。
彼此互助,好過一切動不了!!!
2017年11月19日 星期日
訂閱:
張貼留言 (Atom)
[工作心得]會議記錄撰寫原則
會議記錄撰寫原則 一般而言撰寫會議紀錄時,就是會議決策結果進行文字記錄,藉此留下討倫決策結果並進行對其進行執行作業;透過紀錄的作業紀錄,可以表現出對事件闡述狀況,並呈現出好的說明方紀錄。 會議的用意本身是要進行決策的一個過程,決策結果透過記錄的方式公告出來進行執行方案的推動,在...
-
取得當月份的第一天與最後一天 $month_start = date('Ym01 00:00:00'); //本月第一天 $month_end = strtotime($month_start); $month_end = strtotime(...
-
會議準備 會議前準備工作,一般都會認為是主講者的事情而已,其他人在會議時間到的時候再進入會議室參加討論並即時回饋,而這樣的作業模型,其實存在著一個問題,報告者往往不是決策人而只是資料提供人,導致於過往一直在討論的會議前準備,都會是在該準備甚麼資料該怎麼設計投影片該怎樣進行報告與台...
-
標竿人生 第一天-萬物皆由神開始 我們都因著世俗的眼光而被迷惑,追求的高薪、高職位、高收入、高儲蓄等等的目標去追求。兒都遺忘了,我們本身是存在是因為神有它的旨意存在,因為他的旨意,我們出現在這個事件上,因為我們都是神所創造的,並有我們為了成就神而被神創造的,我們雖然可以選擇人生...
沒有留言:
張貼留言