Nancy 是一個open source 輕量Web Framework,基於Http的Web服務而生,且目前也支援.netCore2.0了。
之前我因為要快速建立Http Server而接觸到Nancy,Nancy開發上不只簡單且外掛功能相當豐富,
這次簡單紀錄web api with .net Core2.0和Nancy開發過程。
Nancy 是一個open source 輕量Web Framework,基於Http的Web服務而生,且目前也支援.netCore2.0了。
之前我因為要快速建立Http Server而接觸到Nancy,Nancy開發上不只簡單且外掛功能相當豐富,
這次簡單紀錄web api with .net Core2.0和Nancy開發過程。
微軟愛Linux有一段時間了,SQL Server on Linux這目標也看到光了,
隨者.Net Core 2.0 Announcing,今天我就透過GDD和SOD方式動手實作
(我沒很了解.netCore,但這兩種方式對我來說有快速學習的效果~哈),
看看.Net Core 2.0是否讓我有不同的開發體驗。
我在超過20幾個的OLTP系統,啟用資料壓縮功能都不曾遇到吃掉系統大部分CPU資源,
不管是我在當DBA、consultant或developer角色時,只要使用企業版SQL SERVER,
我都會建議啟用資料壓縮功能。
當我們使用Exists判斷資料是否存在時,是否需要再子查詢中額外使用 Top 1來告訴QO,
我只需判斷一筆資料即可,請不要進行多餘(非必要)的處理。
No Join Predicate警告,是指出在這Query中,有存在無聯結述詞,那我們到底要不要在意這警告呢?
In recently, I tried to enhance performance of some operator api on our company system.
I found some operator api so fast on our system.
All queries using index seeks and no more than 3ms.
This post , I will show you how to improve its query performance.
I had known some tips for coding store procedure already.
Such as “don’t forget enable nocount”,”2 part names” ,”avoid prefix store procedure with sp_” and more…..
Today I will show you why don’t use sp_ as a prefix for store procedure and how to impact performance on the SQL server.
紀錄一下再寫單元測試時,如何測試internal class
partition table對資料維護的效率是一直吸引我的主因,
透過switch partition可說秒殺insert+delete操作,
不僅lock request少,且又可降低交易紀錄檔使用量,整體對我來說好處不少,
但以前經驗告訴我,partition table影響insert和update效能,
我想如果這部分能使用In-Memory table來接管的話那真是太美妙了,可惜In-Memory table並不支援partition,
但我們依然可以透過SQL2016來模擬partition,讓我們同時享有高效率的資料維護和高效能的交易處理。
Recovery model選項,可以控制交易的紀錄方式,以及可用的還原交易類型,
大家也一定都知道,Simple將使用最少交易紀錄,Full使用最多交易紀錄,
但對In-Memory table 是否有ㄧ樣的關聯呢 ?
以前我很早就被植入使用Reflection大部分效能都不好,所以應該要盡量避免,
但朋友昨天傳給我一篇文章指出現在的dynamic call不會有效能問題,
雖然我知道C#早已不是以前的吳下阿蒙了,但我還是覺得應該還是有效能上的差異,
所以我這裡簡單測試dynamic call 和 direct call兩者效能差異。
SQL2016大幅改善In-Memory OLTP效能,所以我在SQL2016花了很多時間研究、測試並閱讀相關whitepaper,
我也先告訴大家一件事,In-Memory table並非效能萬靈丹,
不要以為把disk-table轉換到in-memory table,現有系統交易效能就可突飛猛進,
而且真實世界要把disk table要轉換in-memory table也非那麼簡單(除非你的disk table layout真的很單純)。
最近進行SQL Tuning時,深入查看相關執行計畫,發現QO改寫用有趣的陳敘式,馬上又引起我的興趣
最近我花了一些時間比較分析kafka,rabbitMQ,NATS何者適合Log Aggregation並符合公司系統要求
一般企業內Server的C:大約分配40~60G,如果ERRORLOG和AGENT LOG存放路徑未變更,
同時又疏於管理的話,那麼檔案吃爆C:空間應該也是早晚的事。
SQL Server process的狀態為sleeping,
如果一個資料庫有太多的sleeping process會有影響嗎?這些process是否可能封鎖其他process呢?
不建議頻繁執行檔案或資料庫壓縮,因為這些操作對效能有一定的影響
除非硬碟可用空間已經不足,這時先確認那個檔案的壓縮大小是最小的
我以前200GB的資料庫,tempdb 我只需使用18GB,500GB的資料庫也只需使用35GB,
當然這比例沒有一定,完全取決於你系統行為(寫TSQL和c#習慣要好)而定。
使用過EF應該都知道所產生的TSQL一大長串(尤其新增一些累贅條件是我最討厭的),
而且執行順序可能非預期(單一包交易中有insert、update、select同table,更容易產生deadlock),
同時EF並無法產生SQL Server所內建高效率陳述式(如Merge),
這時TinyORM主推所產生的TSQL絕對簡單並更貼近SQL Server,
且改善Dapper一些缺點和效能。
ps:目前無法支援.NET Core
真實世界,大部分企業無法接受Database停止服務太久時間,
一般的backup and restore雖然可以達到目的,但由於backup and restore過程中,
還是有資料的新增、修改或刪除持續發生,雖然資料庫restore完成,
可是無法避免人工進行補資料和確認資料一致性作業,
這時你才會知道Mirroring的好處