TechDays 2012 記錄 0920
來到最後一天,筆者選擇了二堂跟SQL有關的課程,一堂Windows Phone課程,一堂多類別庫開發的課程
以及一堂部署ASP.NET 應用程式至Azrue Lab的課程。
SQL Power Tools 擴充事件使用與效益提升實戰 ( 講師:許致學 )
- Extended Events Manager : Add-in for SSMS 2008 / 建立擴充事件物作的指令碼 / 檢視功能
 - 看更詳細的資訊 : sqlserver package (Page splits/begin ~ end transaction / Tempdb)
 - 統計分析報表
 - 未來不再Support sql profiler,以擴充事件取代之
 - SQL Load Generator(download)
 - Extendent Event Manager Add on SQL 2008(download)
 - Using SQL Server 2008 Extended Events
 
Windows Phone 開發應用實戰 ( 講師:董大偉 )
- Windows Phone 7 應用程式可繼續執行
 - 與Windows 8 共享核心 (驅動程式、安全性、網路層、影像及多媒體
 - 三種解析度(WVGA、WXGA、720p)
 - 支援NFC分享、電子錢包
 - In-App-Purchases(IAP)
 - 可透過C#/VB、Natvie C/C++、HTML5 browser control開發
 - 公司專屬應用程式
 - 除非使用到新的API,否則您的APP均可使用WP7.1 SDK進行(持續)開發
 
- Windows Azure目前提供的服務
 
- WP與雲端運算-身分驗證架構
 
- WP與雲端運算-訊息服務/動態磚更新
 
- WP可透過哪些技術存取雲端
 
- Windows Azure Toolkit for Windows Phone 7 (WAT) & Azure Mobile      
Service 降低開發所需技術門檻 
- WP7中存取blob
 
- Windows Phone Cloud Application Template : 直接支援Azure Blob /      
Table / Queue存取 ; Push Notification ; Single Sign On 身分整合驗證 
- Azure ACS : Windows Azure Access Control Service / 支援WP7(使用WAT)     
/ 用以實現Single Sign On - Windows Mobile Service : 新公布的Azure新服務 / 透過Azure運算技術提供     
穩定可靠立即可用的行動裝置服務 / 便利的遠端資料庫存取 / 身分驗證
/ 推播訊息(Push Notifications to users) 
T-SQL執行計畫深入探討 ( 講師:顏瑞宏 )
- 檢視T-SQL執行計劃可以知道:index使用的狀態 / 資料透過何種方式讀取 /      
資料表透過何種方式進行聯結 / 每項操作的處理筆數及估計使用成本 /
是否使用平行處理及資料排序狀況 - 執行成本:由查詢最佳化工具(Query Optimizer)自動做計算的 / 主要判斷因數     
(每一個層級進行處理的資料列總數,稱為[基數];查詢中使用的運算子所指
定的演算法成本模型[Index Seek,Index Scan...]) - 改善基數便能產生更好的估計成本,進而有更快的執行計劃
 
- 輸出文字格式的估計執行計劃,適合語法較複雜的執行計劃
 
- 圖形式執行計劃:由右向左解讀,從上向下解讀,最左方的圖示為該執行計劃     
樹系的根,子樹成本為該節點以下的成本總和 - 巢狀迴圈外部及內部資料表說明
 
- 不同聯結運算子的差異
 
- 如何判斷執行計劃是否合適:查詢中牽涉的資料表及資料行數量是否正確 / 聯結的條件是否     
可以明確限定資料範圍 / 搜尋條件是否有明確指定 / 叢集索引和非叢集索引是否正確 / 不應
單獨只觀注查詢成本,IO及CPU實際成本為何 - 判斷執行計是否合適:確認預計筆數和實際筆數差異的比較
 
- 判斷執行計是否合適:Index Seek or Index Scan
 
- 判斷執行計是否合適:Nested Loops or Hash(Merge) Join
 
- 先透過Where條件篩選掉欲聯結資料二邊不需要的記錄,使得做聯結的記錄集小一點     
,會大幅降低聯結的消耗提高查詢效能 - 確認聯結的on條件是否明確
 - 檢查執行計劃是否及時先做了篩選資料的動作
 - 執行計劃沒有一定的對錯,在不同的查詢參數條件下,有可能是合適的
 
- SQL執行語句的前置作業 : 語法解析 -> 語意解析 -> 編譯 -> 產生執行計劃
 - 執行計劃建立時機: 第一次執行T-SQL、批次(Batch)、Stored Procedure or Trigger     
,相同T-SQL但傳遞不同參數值,舊執行計劃Cache被清除時 - 執行計劃重用時機
 
- 執行計劃重新編譯時機
 
- sp_executesql可有效執行參數化時詢,不需要編譯後讀相同的參數化查詢陳述式     
/ 當陳述式參數值的變更是唯一的數數時,以sp_executesql取代預存程序 - 鎖定
 
- 無法精確估算基數、成本和執行計劃
 
- 統計資訊影響執行計劃
 
- 更新統計資訊建議做法
 
- 索引設計提示
 
- 強制選擇特定的聯結方式
 
- 強迫T-SQL語法重新編譯
 
- 課程總結
 
多平台類別函式庫開發實戰 ( 講師:黃忠成 )
- Share Library with Binary
 - Visual Studio 2010 with Extension
 - 收集所有平台(.NET / Silverlight / Windows Phone / Xbox360)可使用的Namespace     
,Class形成另一組.Net Framework Subset - WebClient 不存在於Windows Runtime,改用WebRequest / WebResponse
 - System.Threading.Thread不存在於Windows Runtime,改用ThreadPool
 - Thread.Sleep不存在於Windows Runtime,改使用ManualResetEvent.WaitOne
 - Portable Library依賴的關鍵設計-Retargetable,在.NET Compact Framework時代就     
存在Retargetable Flags - Windows Store App,mscorlib被retarget to System.Runtime
 - .NET Framework 4.5 mscorlib retarget to mscorlib 4.0
 - Windows Phone,mscorlib retarget to mscorlib 2.0.5.0
 - 另一個關鍵的設計 .class extern forwarder
 - Windows Runtime,System.Runtime取代了原本mscorlib的地位
 - System.Runtime多數的類別宣告都是.class extern forwarder
 - System.Runtime其實會串連回mscorlib
 - 當使用System.Text.StringBuilder(System.Runtime)就是使用System.Text.StringBuilder(mscorlib)
 - Retargetable的對象是Assembly / class forward的對象是類別
 - ThreadPool的秘密
 
- 哪些東西應該變成Portable Library : 非UI的邏輯程式碼(Model) / 部份UI的邏輯程式碼     
(View Model Base) / 與WCF/RESET溝通的程式碼(WCF Proxy Clinet) - Windows Store Apps不充許存取COM Object
 - Windows RT版本不充許自訂COM存在,存取COM Object有一定的風險
 - 非要存取COM Object就要自定Portable Library (忠成老師現場演示精彩黑之章)     
(解譯mscorlib / 修改 / 重新編譯) - 存取COM Object無法通過WACK檢測,無法上架至Windows Store
 - Windows 8 Enterprise 支援LOB應用程式,可不用通過WACK檢測及由Windows Store安裝換     
言之企業內部運用可以,但風險自負 
若本文對您有所幫助,歡迎轉貼,但請在加註【轉貼】及來源出處,並在附上本篇的超連結,感恩您的配合囉。
                By No.18