2009年5月19日 星期二

被困在電梯裡,最苦惱的是沒有美女作伴

今天是開心的一天,和大學同學小聚一下,東聊西扯....

 

回家後開開心心的講著電話,走進電梯........

蹦的~電梯抖一下,

喵的!電梯不動了,

不知道為啥一點都沒有害怕的感覺,大概是因為電梯只停在二樓吧,

趕緊打了電話求救,但是似乎沒有認識電梯維修員的朋友,

拼命的敲電梯門希望有人來搭救,

過沒多久,朋友打電話給我....「有通知人來修理了,等一下....」

我:「可以跟他說我尿急嗎?叫他快一點...」

哇ㄟ朋友:「好啦,你不要敲了,大家都知道電梯有人...」

我:「不能先把門敲開嗎?我也不過在二樓而已...」

掛掉電話之後,忽然不知道在電梯裡面要幹麼.....

 

今天生平第一次被困在電梯裡,還好電梯裡面有.....

但是…說好的美女呢...........

IMAG0016 IMAG0026

                           ↑我的沙雕作品與拍照不合作的同事們……….

2009年5月8日 星期五

盡信書不如無書---with(nolock)的迷思

工作遇到某位資深「IT人員」,無論是什麼SELECT語法都要求下屬一定要加上WITH(NOLOCK),今天我就要打破這樣的迷思

所謂WITH(NOLCK)的確可以減少LOCK的發生,但是並不是加上WITH(NOLOCK)就不會造成鎖死(死結),為啥MSSQL會有LOCK

這種東西?!先想想吧!

WITH(NOLOCK)是告訴SQL SERVER這段SELECT無須考慮目前資料表的TRANSACTION  LOCK狀態,

正因為如此,WITH (NOLOCK)不考慮目前table的transaction lock,當有某些資料正處於多個phase交易(例如跨多個table的transaction交易),
WITH (NOLOCK)會讓目前處理交易程序的資料被忽略,看不懂嗎?簡單說,SELECT一個正在交易的TABLE,而交易尚未完成,

因為SELECT加上WITH(NOLCOK)然後發生上述的狀態............

盡信書不如無書!!別以為加上WITH(NOLOCK)就是萬靈丹!!!

 

附帶一提

WITH (NOLOCK)相當於 READ UNCOMMITTED
WITH (NOLOCK)可以加快查詢的速度
 

------------------------------------------

2009-05-18 補充

舉例來說

A有一百元 他想要領出 十元來花用

A的公司要匯入他當月薪水兩百元

 

如果兩段交易同時進行,那不管那段交易先完成,資料都會是錯的

所以該資料表一定先被LOCK,後面的交易就不能進行,要等到前面的交易完成,

這樣才能確保資料是正確的

 

所以如果不考慮資料表的TRANSACTION LOCK,那A的存款可能會從290元

變成90元,後面匯入的薪資兩百元會無緣無故消失了。