QlikSense管理數據在幫助中寫的比較清楚
https://help.qlik.com/zh-CN/sense/3.1/Subsystems/Hub/Content/LoadData/load-data.htm
下面主要就利用腳本生成數據模型遇到的難題進行記錄:
- 連接SQLServer取數發生的多線程問題。

這種情況導致用戶運行腳本時會鎖定表,導致其他用戶無法對這個表進行查詢操作,解決的方法是在表名后面加with(nolock)
with(nolock)的介紹
大家在寫查詢時,為了性能,往往會在表后面加一個nolock,或者是with(nolock),其目的就是查詢是不鎖定表,從而達到提高查詢速度的目的。
當同一時間有多個用戶訪問同一資源,並發用戶中如果有用戶對資源做了修改,此時就會對其它用戶產生某些不利的影響,例如:
1)臟讀
一個用戶對一個資源做了修改,此時另外一個用戶正好讀取了這條被修改的記錄,然后,第一個用戶放棄修改,數據回到修改之前,這兩個不同的結果就是臟讀。
2)不可重復讀
一個用戶的一個操作是一個事務,這個事務分兩次讀取同一條記錄,如果第一次讀取后,有另外用戶修改了這個數據,然后第二次讀取的數據正好是其它用戶修改的數據,這樣造成兩次讀取的記錄不同,如果事務中鎖定這條記錄就可以避免。
3)幻讀
指用戶讀取一批記錄的情況,用戶兩次查詢同一條件的一批記錄,第一次查詢后,有其它用戶對這批數據做了修改,方法可能是修改,刪除,新增,第二次查詢時,會發現第一次查詢的記錄條目有的不在第二次查詢結果中,或者是第二次查詢的條目不在第一次查詢的內容中。
NOLOCK 語句執行時不發出共享鎖,允許臟讀 ,等於 READ UNCOMMITTED事務隔離級別 。nolock確實在查詢時能提高速度,但它並不是沒有缺點的,起碼它會引起臟讀、只適用與select查詢語句。 在一些不需要考慮臟讀的場合會用到,例如當用戶在論壇發廣告貼時刪除其所有發帖,這個查詢就不怕臟讀,全刪,或者漏一個正在發的都不是問題。
轉載自:https://www.cnblogs.com/zhoading/p/8384255.html
