.net技術總結
SQL查詢速度 影響因素:
網絡IO
磁盤IO
單表數據量 (分庫分表;縱向、橫向切割)
查詢是否進行了全表掃描(優化查詢語句)
是否命中了索引(添加索引)
表或行被鎖(由寫導致,可通過讀寫分離解決)
數據庫優化:
如果是EF打印sql語句 ,分析費時原因
查看執行計劃,看是否有語句進行了全表掃描,是否命中索引
為查詢條件添加索引
EF優化
可以使用EF 上下文池
禁止 查詢狀態跟蹤,EF截取實例的快照,在保存時對比以進行修改
可以對外鍵實體集進行延遲加載
使用更優的SQL語句代替linq
創建視圖或者函數進行查詢
只選擇需要的列
預先加載外鍵實體集
避免循環內查詢數據庫
委托
是一個完整算法的一部分算法,后期綁定的
多播委托,支持綁定多個算法實現
事件
是設計模式中觀察者模式的一種實現,它是基于委托實現的,事件可以進行廣播,各訂閱者進行訂閱,目的是為了讓訂閱對象與事件源對象解耦
事件廣播之后不關注返回值、進行的操作
委托需要關注
事件是基于委托實現
異步操作
可避免進程阻塞,改善用戶體驗
在Web中可以提高服務器吞吐量
能增強系統健壯性
IO密集型任務 使用并發執行(單核) await
CPU密集型任務 使用并行執行(多核) parallel 、 Task.Run
并行是多個線程同一時刻執行
并發給人的感覺是同一時刻執行,其實微觀上看是CPU時間片輪轉執行
線程安全
由于CPU進行時間片輪轉調度,線程執行狀態切換,使多個線程無序的對臨界區代碼段訪問,這會導致意外的結果
怎么避免線程安全問題?
對臨界區代碼加互斥鎖
什么是線程同步?
多個線程訪問有限資源的時候,資源全部被占用,其他線程必須等待
信號量機制
版權聲明
作者:扶我起來我還要敲
地址:http://www.rzrgm.cn/Newd/p/17378781.html
? Newd 尊重知識產權,引用請注出處
廣告位
(虛位以待,如有需要請私信)
浙公網安備 33010602011771號