1. 程式人生 > >QlikSense系列(3)——QlikSense管理資料

QlikSense系列(3)——QlikSense管理資料

QlikSense管理資料在幫助中寫的比較清楚

https://help.qlik.com/zh-CN/sense/3.1/Subsystems/Hub/Content/LoadData/load-data.htm

下面主要就利用指令碼生成資料模型遇到的難題進行記錄:

  1. 連線SQLServer取數發生的多執行緒問題。

這種情況導致使用者執行指令碼時會鎖定表,導致其他使用者無法對這個表進行查詢操作,解決的方法是在表名後面加with(nolock)

with(nolock)的介紹

大家在寫查詢時,為了效能,往往會在表後面加一個nolock,或者是with(nolock),其目的就是查詢是不鎖定表,從而達到提高查詢速度的目的。
當同一時間有多個使用者訪問同一資源,併發使用者中如果有使用者對資源做了修改,此時就會對其它使用者產生某些不利的影響,例如:
1)髒讀
一個使用者對一個資源做了修改,此時另外一個使用者正好讀取了這條被修改的記錄,然後,第一個使用者放棄修改,資料回到修改之前,這兩個不同的結果就是髒讀。

2)不可重複讀
一個使用者的一個操作是一個事務,這個事務分兩次讀取同一條記錄,如果第一次讀取後,有另外使用者修改了這個資料,然後第二次讀取的資料正好是其它使用者修改的資料,這樣造成兩次讀取的記錄不同,如果事務中鎖定這條記錄就可以避免。

3)幻讀
指使用者讀取一批記錄的情況,使用者兩次查詢同一條件的一批記錄,第一次查詢後,有其它使用者對這批資料做了修改,方法可能是修改,刪除,新增,第二次查詢時,會發現第一次查詢的記錄條目有的不在第二次查詢結果中,或者是第二次查詢的條目不在第一次查詢的內容中。

NOLOCK 語句執行時不發出共享鎖,允許髒讀 ,等於 READ UNCOMMITTED事務隔離級別 。nolock確實在查詢時能提高速度,但它並不是沒有缺點的,起碼它會引起髒讀、只適用與select查詢語句。 在一些不需要考慮髒讀的場合會用到,例如當用戶在論壇發廣告貼時刪除其所有發帖,這個查詢就不怕髒讀,全刪,或者漏一個正在發的都不是問題。

轉載自:https://www.cnblogs.com/zhoading/p/8384255.html