iT邦幫忙

2

MS SQL 主機升級

目前使用規格是E5-2620X2 / 32G /SAS 10K 300G*3 / WIN2008R2 + MS SQL2008 R2
現有單一進銷存資料庫檔案約20G
導致作業時速度很慢
若要將主機升級 (資料庫沒有改寫)
更換軟體為 WIN2019 +SQL 2019有用嗎?

還是省一點不須再買新SQL授權 WIN2019 + MS SQL2008R2 就好?

還是把記憶體撐到64G 硬碟換成15K 或是 SSD?

(目前該伺服器CPU使用率很少超過10%,記憶體約再60%左右)
https://ithelp.ithome.com.tw/upload/images/20200528/20077751xGK0EkwelM.png

好問題
追蹤看高手回答
edison02 iT邦新手 4 級 ‧ 2020-05-29 15:41:42 檢舉
還真是每個不懂DB的IT,一遇到user說慢,就想換硬體,連問題在哪都不知道就瞎換,
建議你找有DB team的SI評估過,再依廠商建議的方式購買主機,現在業務都很欠業績,有完整的報告再換不是比較放心!!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1

個人不負責任的建議。

基本上調高記憶體理論上對你目前的效能提高並不是很大。
更換io設備的話,可能還有一些提高的效果。

更換作業系統會不會有改善,我是持保留態度。

一般我還是會先看變慢的實際情況。
不過更換作業系統我通常都是做為最後一招。
畢竟系統更換要面臨的問題,有時候會更多。不得已才會用這招。

硬碟改為ssd可能是我目前給你最好的建議。
成本效益會比較高。
至於加大記憶體。或許效能有可能會提高。
但提高的量因該是不大。成本足夠再考量。

以上並非是絕對性。
畢竟我都是看整體數據來做評估的。
目前的數據量不夠我分析。
有錢就砸下去吧。但不保証會變快。

looooper iT邦新手 5 級 ‧ 2020-05-28 15:03:19 檢舉

這個時機 就怕錢砸下去 結果沒有變快,就換我被砸了~

哈哈哈,我是建議不要砸。ssd是可以換啦。
是可以教你一招。看要去aws還是gcp。

我個人是喜歡在aws就是了。
先開個高階的機器來試試。反正試一天了不起就幾10美金。
(你開太高檔的就盡量用競標的)

反正那是小時計費。試完了就關掉就好。
我以前在評估都是這樣先試看看。

1
純真的人
iT邦大師 1 級 ‧ 2020-05-28 15:39:48
更換軟體為 WIN2019 +SQL 2019有用嗎?

沒用...

重點是在SQL語法查資料有問題..才會導致緩慢..

looooper iT邦新手 5 級 ‧ 2020-05-28 16:40:38 檢舉

看來只能改善IO了

1
BKY
iT邦研究生 2 級 ‧ 2020-05-28 18:00:13

如果WIN2008R2是標準版,記憶體32G已經是到頂了,沒法再加
SQL2008R2不支援WIN2019
所以以上都不用考慮
建議先和進銷存廠商討論看看,程式有沒有優化的可能
自己也可以去買一本SQL Server效能調校的書來看,試著把SQL Server調校一下,看看有沒有效
如果都不行再考慮更換硬體

looooper iT邦新手 5 級 ‧ 2020-06-01 10:31:45 檢舉

一來是舊主機約八年 可以換一下 但又不能花太多錢
買太新可能也沒意義
所以可能就是買一台降階為 WIN2016或是2012 再使用原本的SQL2008

6
Ray
iT邦大神 1 級 ‧ 2020-05-28 21:43:27

我不是 SQL 專家, 但我管 Infra 架構, 從你的圖上, 看不出有硬體瓶頸的跡象...當然, 也有可能你並不是在 SQL 最忙的時候截圖; 但是, 只用這張圖, 沒辦法說服我同意升級硬體...

SQL 有很多種慢法:

  • 傳票打單的時候慢?
  • 跑月報表的時候慢?
  • 半夜整批過帳時慢?
  • ...

以上三種情境, 各代表三種不同的 SQL 壓力來源, 第一個是 TPS/IOPS, 第二個是 Read Throughput, 第三個是 Write Throughput 和 RAM. 不知道你慢的情境, 就沒辦法對症下藥 (其實不只上面三種, 你應該把進銷存操作中, 所有會慢的情境都先收集清楚)

還有, 你的 SQL 是否會產生 Dead lock? 一旦被鎖住, 很多工作就不會動, 直到他 Timeout 解開, 這樣使用者當然覺得慢. 此外, 如果某個功能執行時, 發動了 Table lock, 結果此時另外的使用者正好想要 update 同一個 table 的欄位, 就必須等到那個 Table lock 的工作做完才能執行 update, 這樣當然也會等....

管系統第一要務是取得能見度, 您知道要截圖硬體數據, 是個好的開始, 可惜的是您的工具不夠細, 無法窺得全貌, SQL 的監視方法很多, 瓶頸也有很多種, 並不是只有硬體一項而已, 還有很多數據需要先收集到手, 才能研判; 先試著從這裡開始, Performance Monitor 裡面還有一大堆的 SQL 數據等著你去發掘:
SQL Server 效能調整 - 如何整合 SQL Profiler 與 Performance Monitor

SQL 有很多種慢法:
傳票打單的時候慢?
跑月報表的時候慢?
半夜整批過帳時慢?

我猜是白天上班時間
使用者操作(打傳票、查詢作業)覺得慢
/images/emoticon/emoticon13.gif

looooper iT邦新手 5 級 ‧ 2020-06-01 10:27:50 檢舉

白天 查詢 跑報表的時候覺得慢
平常線上人數大約20-30人而已

Ray iT邦大神 1 級 ‧ 2020-06-01 10:31:16 檢舉

從你截的圖看不出硬體有很忙碌的跡象....還是你的圖不是在跑報表的時候截的? 請在 User 覺得慢的時候截圖來看看....

0
dscwferp
iT邦高手 1 級 ‧ 2020-05-28 21:48:11

可以先參考:https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/428017/
我的建議是:

  1. 先 升級 硬體IO規格, 比如換SSD/NVMe/Raid 等等... 筆升級RAM/CPU CP高
    換SSD CP最高!
    如果還不夠就多顆SSD做RAID
    再不夠 就用 NVMe
    一級一級升上去!
  2. 優化SQL SERVER檔案架構,將 同資料庫的 MDF/LDF 兩個檔分別放在不同硬碟上, 可以加快速度!
    不同資料庫, 找出瓶頸資料庫 將其分流!
  3. 用 分割區資料表(PARTITION FUNCTION) 分離歷史資料,
    將少用到的歷史資料分割出去, 讓常用的資料變少, 這樣速度也會加快!
    參考: https://docs.microsoft.com/zh-tw/sql/relational-databases/partitions/create-partitioned-tables-and-indexes?view=sql-server-ver15
  4. 優化SQL指令, 參考:http://blog.davidou.org/archives/609

其實最正確最好方法是 從後(優化SQL指令) 往前 (換硬體) 測試
但 很多都是無法去改舊包袱
只好 反過來 去優化了!
以上!
希望能幫您忙!

我剛好也是遇到同樣的問題,
打算硬體升級,windows 2019+MS SQL2016
SSD的部份,預算的原因,打算用一般市面上的NAS級SSD來試試
SQL的優化部份:
同資料庫的 MDF/LDF 兩個檔分別放在不同硬碟上, 可以加快速度!
這個建議不錯,還真沒想到.

BKY iT邦研究生 2 級 ‧ 2020-05-29 08:47:34 檢舉

以我用ERP的經驗是換成SSD,或是把MDF/LDF/TempDB都放在不同硬碟上
可以改善一些,但不用期望原來很慢的就變很快
最根本的還是要從SQL及程式寫法優化著手

0
pilipala
iT邦新手 2 級 ‧ 2020-05-29 09:49:54

建議利用 DMV 去搜尋 missing index,看是否有適當 Index 可以挑出來建立的

我要發表回答

立即登入回答