看板 Database 關於我們 聯絡資訊
※ 引述《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