還有爲SQL Server Express版本的模仿:支持
CPU數量:在同一時間只有一個CPU(用於SQL最大核心= 4表示2016)。所以,如果你的服務器有多個CPU,它一次只能使用一個CPU。
使用的最大內存:數據緩衝區最大爲1 GB內存。所以,如果你的服務器有更多的GB memeory,SQL Server Express不能利用它。
數據庫大小限制:最大數據庫大小限制爲4 GB(10GB用於SQL表達2016)
磁盤I/O速度和內存是用於SQL性能的主要資源之一。隨着數據長時間處於高速緩存中,服務器不從磁盤讀取內存。
可以幫助查找服務器性能瓶頸的措施之一是測量頁面預期壽命(PLE)。對於配備4GB內存的服務器,應該大於300(但真正的sql express使用有限的1GB)。
PLE是平均數據頁面在緩衝池中的秒數。將數據保存在內存中使得SQL Server可以更快地訪問它,而不必進行長時間,慢速訪問磁盤。這一措施可以打開你的眼睛,並引導你解決可以解決的問題。 你可以通過執行獲得:
SELECT object_name,
counter_name,
cntr_value AS [value]
FROM sys.dm_os_performance_counters
WHERE LTRIM(RTRIM(object_name)) = 'SQLServer:Buffer Manager'
AND LTRIM(RTRIM(counter_name)) = 'Page life expectancy' ;
在SQL表達你失去了重要的資源(內存限制1GB)加強PLE計數器幫助。
您的系統有20-30個用戶,另外還有20-30個系統同時與數據庫連接,並且每天工作24小時。
最好升級到SQL標準版2016,不限制內存(最高128GB)和CPU /內核(最高24核)。
你如何處理代碼中的數據庫連接?如果你沒有處理連接,那麼連接將會出現問題而不會被放回到連接池中,這意味着線程將最終等待連接變得可用。您也可能有表鎖問題,您可能有多個用戶嘗試更新/插入,這會導致記錄或表被鎖定以防止衝突。這與未被處置的連接相結合,可能導致您所描述的內容 –
我只在需要時打開連接並在CRUD操作結束時關閉。下面是示例的它 '嘗試 { } 趕上(例外EXP) { MessageBox.Show(exp.Message.ToString(), 「異常」); } finally if(sqlConnection.State == ConnectionState.Open) { sqlConnection.Close(); } }' –
你可以檢查sql server cpu,內存使用情況,當你面臨性能問題和更新問題 – TheGameiswar