[英]Azure SQL Database DTU Calculator per database not per server
我在網上找到了一個很棒的腳本,它可以讓我們每個人在遷移之前確定在 Azure 上需要多少果汁:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted -Force
$ErrorActionPreference = "Stop"
$VerbosePreference = "Continue"
cls
Write-Output "Collecting counters..."
Write-Output "Press Ctrl+C to exit."
$counters = @("\Processor(_Total)\% Processor Time",
"\LogicalDisk(_Total)\Disk Reads/sec",
"\LogicalDisk(_Total)\Disk Writes/sec",
"\SQLServer:Databases(_Total)\Log Bytes Flushed/sec")
Get-Counter -Counter $counters -SampleInterval 1 -MaxSamples 3600 |
Export-Counter -FileFormat csv -Path "C:\sql-perfmon-log.csv" -Force
問題是這個腳本針對的是整個服務器,而不是特定的數據庫。
是否可以通過 PowerShell 或通過 PowerShell 運行 T-SQL 查詢並每秒檢索這 4 個指標:
目標是僅為 1 個數據庫收集這 4 個指標。
這些是系統范圍的指標,沒有辦法將它們 scope 歸結為單個數據庫。
您可以使用RML Utilities捕獲服務器上所有流量的 SQL 跟蹤,並針對您僅還原目標數據庫的實例重放它。
或者您可以對連接到目標數據庫的會話的資源利用率進行采樣
select SYSDATETIME() sample_time,
sum(cpu_time) cpu_time,
sum(total_elapsed_time) total_elapsed_time,
sum(reads) reads,
sum(writes) writes
from sys.dm_exec_sessions
where database_id = db_id('AdventureWorks2017')
或者創建一個 XEvent session 以在每次 session 結束時記錄此數據:
CREATE EVENT SESSION [aw_logout] ON SERVER
ADD EVENT sqlserver.logout(
WHERE ([sqlserver].[database_name]=N'AdventureWorks2017'))
ADD TARGET package0.event_file(SET filename=N'aw_session_logout')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.