※ 引述《paranoia5201 (社會黑暗、行路難)》之銘言:
: 新手DBA來求教,煩請大家給建議。
: 公司請我針對現有 30+ 上線的 SQL Server給予優化建議。
: 由於現在一切運作看起來都好好的,也不曉得是要怎麼優化。
: 同事說是公司想要減少每年要給微軟的維護費,減少license。
: 當然、這個優化計畫也是絕對不會撥錢買新設備(PM的說法是如此)。
: Server狀況如下:
: 每個Server底下的Database數量不同,Table少則1-2個,多則近20個。
: Server版本不一,2008與2012都還在用,目的是希望全部升級成2016。
: 我不成熟的想法:
: 1. 將Table數少的Server,其下的Database拉到其他Server,那原Server就可關閉。
我覺得應該是看他用cpu or io的狀況決定吧...
table數少跟transaction量不一定有關
: 2. 將其他老舊又厚重的Server底下的Database拉到其他Server(Table均衡),
: 也可以趁此機會升級Server到2016版本。
可能要考慮一些版本差異
: 3. 評估現有Database的使用狀況(頻率、效率/益、出錯狀況等),提議刪掉某些Table,
: 減輕整體Server的負載量。
如果你刪掉一些"不用"的table 好像對負載量不會有幫助吧?
通常負載應該是指cpu io吧??
如果table本來就不用 頂多就佔硬碟空間 但硬碟通常很便宜
不管你要刪的table有沒有在用
因為最終還是要回歸開發團隊那邊的決定
所以我是覺得 你開profiling抓個大概的數據就夠了
(就算你數據很詳細好了 開發團隊說不能刪還是不能刪)
感覺你要考慮的是如果本來a b db server合併
那他們的硬體支援是足夠支撐這兩個db transaction的量
: 根據第三點,所以需要查詢各Server的使用狀況。
: 前人所留給我的文件中(到職時前人已不在),有這樣一份程式碼:
: -- t-sql list (database name, database size(MB)
: -- 1. Get Database Name & Size.
: declare @dbinfo as table
: (name sysname, -- sysname
: db_size nvarchar(13) null,
: owner sysname null,
: dbid smallint,
: ceated varchar(128),
: status nvarchar(600)
: compatility_level tinyint)
: insert into @dbinfo
: exec sp_helpdb
: select name 'Database Name', db_size 'Database Size (MB)' from @dbinfo
: where name not in (select name from master.sys.sysdatabases where dbid<5)
: 這份語法主要是查看各database的使用容量。
: 但是我想請教的是:如何知道是往master.sys.sysdatabases找到資料?
: 根據微軟的官方文件,有解釋系統檔中的各欄位資料(ppt.cc / fdZnnx,請取消空白)
: 但我還是不知道要用哪份檔案的哪個欄位可以找到我上述的需求?
: (如使用者帳戶、人數、個別登入使用頻率及時間、連線狀況、deadlock時間及次數等)
: 或是如果我只是想清查資料庫「使用概況」,有無推薦的查詢方式(Table及欄位)?
: 我知道Profiler可以監控營運狀況,但是我是想要查詢歷史資料......。
: 再煩請給予指導與建議了,感謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.177.112.86 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1563904680.A.9A8.html
※ 編輯: KiroKu (180.177.112.86 臺灣), 07/24/2019 02:00:18