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