我們平常寫**的時候,無疑都會接觸大量的資料curd操作。第一反應是這太簡單了,那麼你在編寫update操作的時候是怎樣的邏輯呢?比較下面兩段偽**:
$sql = "update `table_name` set `a`='a', `b`='b', `c`='c' where `id`=$id ";
$res = $db->query ($sql);
if ($res) else
$sql = "select `a`,`b`,`c` from `table_name` where `id`=$id ";
$old = $db->query ($sql)->fetch ();
if ( $old['a'] == $a && $old['b'] == $b && $old['c'] == $c )
$sql = "update `table_name` set `a`='$a', `b`='$b', `c`='$c' where `id`=$id ";
$res = $db->execute ($sql);
if ($res) else
**********==
如果單純從查詢次數來看,exp.1
始終是一次,而exp.2
是 1~2次。看起來exp.1
更好一些,我也覺得在一些簡單應用場景確實是這樣的。可是如果在乙個大型應用,每次使用者的update都執行一次寫入操作真的好嗎?
這種情況下可以適當犧牲一些讀操作以減少寫入操作,首先在資料快取上可以攔截大部分資料庫讀取請求,其次在資料庫層面可以配置主從集群負載均衡等策略保證讀取效能。所以我認為大型應用還是exp.2
更合適。
以上個人感想,歡迎批評指正
有關讀書求知的一些想法
在求知的過程中,我們經常會要面對這樣,那樣的 以讀書為例,一部經典的好教材,想要把它讀通,搞明白,弄紮實,除了在讀的過程中理解作者想要描述的字面意思以外,往往還需要通過作大量的相關習題及實驗來建立起更為紮實,深刻的認識,而捧著厚厚的一本書,人類心理潛在的占有本能又往往會驅使著自己以最快的速度將這部教...
有關U盤掛載的一些想法
原來一直採用網上現成的核心,所以u盤很容易就掛上了。也沒發現特殊的指令碼。可是換了另外乙個核心debian下的,就發現有熱插拔事件但 dev下沒有裝置,頭痛了幾天。首先想到的是仿照debian啟動指令碼,執行rcs。它裡面只有乙個指令碼exec etc init.d rc s.原來它是啟動rc指令碼...
有關U盤掛載的一些想法
原來一直採用網上現成的核心,所以u盤很容易就掛上了。也沒發現特殊的指令碼。可是換了另外乙個核心debian下的,就發現有熱插拔事件但 dev下沒有裝置,頭痛了幾天。首先想到的是仿照debian啟動指令碼,執行rcs。它裡面只有乙個指令碼exec etc init.d rc s.原來它是啟動rc指令碼...