搜尋本站文章

2017-08-09

[SQL Server] SSMS 17.2, Performance Dashboard built-in, 中文版本


SQL Server Management Studio(SSMS) 17.2  內建 Performance Dashboard(效能儀表板)
適用:SQL Server 2008 到 SQL Server 2017

-- 113_新增_效能儀表板



-- 114_中文版本的效能儀表板



-- 112_關於 SSMS 17.2





安裝與功能展示

安裝 SSMS 17.2 中文版本
https://goo.gl/photos/TZHqVjLHqrdh48xK7



參考資料

Download SQL Server Management Studio 17.2
https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms

New in SSMS: Performance Dashboard built-in
https://blogs.msdn.microsoft.com/sql_server_team/new-in-ssms-performance-dashboard-built-in/

SQL Server Management Studio - Changelog (SSMS)
https://docs.microsoft.com/en-us/sql/ssms/sql-server-management-studio-changelog-ssms

[SQL Server] Performance Dashboard Reports - CPU bottlenecks, IO bottlenecks, missing Index ,Blocking, Latch
http://sharedderrick.blogspot.tw/2017/07/sql-server-performance-dashboard.html

[SQL Server] Performance Dashboard Reports - Reports Demo
http://sharedderrick.blogspot.tw/2017/07/sql-server-2012-performance-dashboard.html

下載與安裝 SSMS 17.1 中文版本
http://sharedderrick.blogspot.tw/2017/05/ssms-171.html

2017-08-06

[SQL Server] sp_whoisactive: find out long running queries (找出費時、耗資源的查詢) (2)


延續 先前文章:[SQL Server] sp_whoisactive: find out long running queries (找出費時、耗資源的查詢)


補充 常用的範例

-- EX01_sp_WhoIsActive:增加顯示 執行計畫、交易資訊、封鎖資訊等
USE master
GO
EXEC sp_WhoIsActive @get_plans=1, @get_transaction_info=1, @find_block_leaders=1
GO
 
-- EX02_sp_WhoIsActive:增加顯示 執行計畫、交易資訊、封鎖資訊、系統資訊等
USE master
GO
EXEC sp_WhoIsActive @get_plans=1, @get_transaction_info=1, 
 @find_block_leaders=1, @get_task_info=2
GO

-- EX03_sp_WhoIsActive:增加顯示 執行計畫、交易資訊、封鎖資訊、系統資訊、
-- 取得更多關聯的 ad hoc 查詢或 執行預存程序的呼叫程序、
-- 取得此工作階段(Session)上的更多參考資訊
USE master
GO
EXEC sp_WhoIsActive @get_plans=1, @get_transaction_info=1, @find_block_leaders=1,
  @get_task_info=2, @get_outer_command = 1, @get_additional_info = 2
GO



sp_whoisactive 參數說明 2

目前已有24個以上的參數,善用 @help = 1 來查詢使用方式。

參數 說明
@get_outer_command = 1 嘗試取得更多關聯的 ad hoc 查詢或 執行預存程序的呼叫程序
Get the associated outer ad hoc query or stored procedure call, if available
@sort_order ='[blocked_session_count] ASC'
排序
Column(s) by which to sort output, optionally with sort directions. 
Valid column choices:
session_id, physical_io, reads, physical_reads, writes, tempdb_allocations, tempdb_current, CPU, context_switches, used_memory, physical_io_delta, 
reads_delta, physical_reads_delta, writes_delta, tempdb_allocations_delta,  tempdb_current_delta, CPU_delta, context_switches_delta, used_memory_delta, 
tasks, tran_start_time, open_tran_count, blocking_session_id, blocked_session_count,  percent_complete, host_name, login_name, database_name, start_time, login_time
Note that column names in the list must be bracket-delimited. 
Commas and/or white space are not required. 
@get_additional_info = 1
取得此工作階段(Session)上的更多參考資訊。

Get additional non-performance-related information about the session or request text_size, language, date_format, date_first, quoted_identifier, arithabort, ansi_null_dflt_on,  ansi_defaults, ansi_warnings, ansi_padding, ansi_nulls, concat_null_yields_null, transaction_isolation_level, lock_timeout, deadlock_priority, row_count, command_type.

If a SQL Agent job is running, an subnode called agent_info will be populated with some or all of the following: job_id, job_name, step_id, step_name, msdb_query_error (in the event of an error)

If @get_task_info is set to 2 and a lock wait is detected, a subnode called block_info will be populated with some or all of the following: lock_type, database_name, object_id, file_id, hobt_id,  applock_hash, metadata_resource, metadata_class_id, object_name, schema_name.
@help = 1 顯示出可用的參數與說明



sp_whoisactive 使用範例

-- 010_使用help_線上說明



-- 011_get_outer_command=1_ 取得此工作階段(Session)上的更多參考資訊



-- 012_get_outer_command=1_ 取得此工作階段(Session)上的更多參考資訊_2



-- 013_增加顯示:封鎖鏈結、封鎖計數,但沒有排序



-- 014_顯示:封鎖鏈結、封鎖計數,並依據 blocked_session_count 排序



-- 015_取得此工作階段(Session)上的更多參考資訊



-- 016_取得此工作階段(Session)上的更多參考資訊_xml_交易隔離層級



-- 021_顯示 執行計畫、交易資訊、封鎖資訊、系統資訊、取得更多關聯的 ad hoc 查詢或 執行預存程序的呼叫程序、取得此工作階段(Session)上的更多參考資訊



-- 022_延續 021_顯示 執行計畫...



-- 023_延續 021_顯示 執行計畫...


-- 024_延續 021_顯示 執行計畫...


-- 025_延續 021_顯示 執行計畫...




sp_whoisactive 使用範例程式碼(2)



-- EX01-sp_WhoIsActive:線上說明
USE master
GO
EXEC sp_WhoIsActive @help = 1
GO
-- EX02-sp_WhoIsActive: @get_outer_command= 1 , 
-- 嘗試取得更多關聯的 ad hoc 查詢或 執行預存程序的呼叫程序
USE master
GO
EXEC sp_WhoIsActive @get_outer_command = 1
GO


-- EX03-sp_WhoIsActive:增加顯示:封鎖鏈結、封鎖計數,
-- 並依據 blocked_session_count 排序
USE master
GO
EXEC sp_WhoIsActive @find_block_leaders = 1 , 
 @sort_order ='[blocked_session_count] ASC'
GO
-- EX04-sp_WhoIsActive:取得此工作階段(Session)上的更多參考資訊
USE master
GO
EXEC sp_WhoIsActive @get_additional_info = 1
GO


-- EX05-sp_WhoIsActive:
-- 增加顯示 執行計畫、交易資訊、封鎖資訊、系統資訊、
-- 取得更多關聯的 ad hoc 查詢或 執行預存程序的呼叫程序、取得此工作階段(Session)上的更多參考資訊
USE master
GO
EXEC sp_WhoIsActive @get_plans=1, @get_transaction_info=1, @find_block_leaders=1, 
 @get_task_info=2, @get_outer_command = 1, @get_additional_info = 2
GO





參考資料
[SQL Server] sp_whoisactive: find out long running queries (找出費時、耗資源的查詢)
http://sharedderrick.blogspot.tw/2017/07/sql-server-spwhoisactive-find-out-long.html

sp_whoisactive
http://whoisactive.com/

Looking for sp_whoisactive?
http://sqlblog.com/blogs/adam_machanic/archive/2017/07/26/looking-for-sp-whoisactive.aspx

sp_whoisactive Documentation
http://whoisactive.com/docs/

2017-08-05

[SQL Server] Stress testing, SQLQueryStress parameter, 壓力測試, 搭配使用 參數 (2)


延續先前文章:[SQL Server] SQLQueryStress, Stress testing, 壓力測試

本文討論:
SQLQueryStress: 搭配 參數(Parameter),以預存程序(Stored Procedure)、T-SQL 參數(Parameter) 為例

-- 001_SQLQueryStress: 搭配 預存程序(Stored Procedure) 與 參數(Parameter)



-- 002_SQLQueryStress: 搭配 T-SQL 參數(Parameter)




SQLQueryStress: 搭配 參數(Parameter),以預存程序(Stored Procedure)、T-SQL 參數(Parameter) 為例

任務01:SQLQueryStress: 搭配 預存程序(Stored Procedure) 與 參數(Parameter)

-- 010_設定要執行 參數化 程式




-- 011_點選_Parameter_Substitution



-- 012_準備設定_Parameter_Query



-- 013_點選_Database_設定資料庫連線資訊



-- 014_輸入要取出參數值的程式碼



-- 015_點選_Get_Columns



-- 016_下拉_點選_Column



-- 017_已經取得資料行



-- 018_點選_DataType



-- 018_02_預存程序,設定參數



-- 019_SQL_Profiler_錄製_帶入參數值來執行



-- 020_SSMS_觀察執行的預存程序_次數



-- 021_SSMS_觀察執行的預存程序_次數_2



-- 022_SSMS_觀察執行的預存程序_次數_3



-- 023_SSMS_觀察執行的預存程序_次數_4




任務02:SQLQueryStress: 搭配 T-SQL 參數(Parameter) 

-- 100_參數化的查詢式



-- 101_設定_Parameter_Query



-- 102_執行 SQLQueryStress



-- 103_SSMS_參數化_執行次數



-- 104_SSMS_參數化_執行次數_2



-- 105_SSMS_參數化_執行次數_3



-- 106_SQL_Profiler_參數化查詢式_帶入參數





範例程式碼

01-執行預存程序 [CustOrdersDetail],參數:@OrderID

-- 00-執行預存程序 [dbo].[CustOrdersDetail],輸入參數:@OrderID
USE Northwind
GO
EXEC [dbo].[CustOrdersDetail] @OrderID=10248
GO

02-SQLQueryStress 要執行的範例程式碼

-- 01-SQLQueryStress 要執行的範例程式碼
EXEC [dbo].[CustOrdersDetail] @OrderID=10248;

-- 02-在 Parameter Substitution 要執行的範例程式碼
SELECT OrderID FROM Orders;

--
SELECT * FROM [Order Details] WHERE OrderID =10248;

03-Query: Execution count for stored procedure

-- 10-Query: Execution count for stored procedure
-- 查詢 預存程序 的執行次數
USE master
GO
SELECT  DB_NAME(st.dbid) 'DB' ,OBJECT_SCHEMA_NAME(st.objectid,dbid) 'Schema',
 OBJECT_NAME(st.objectid,dbid) 'SP' ,MAX(cp.usecounts) 'ExecutionCount'
 , cp.objtype, cp.cacheobjtype, st.text
FROM sys.dm_exec_cached_plans cp CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) st
WHERE DB_NAME(st.dbid) IS NOT NULL
 AND cp.objtype = 'Proc' AND  DB_NAME(st.dbid) ='Northwind' -- Filter
GROUP BY cp.plan_handle, DB_NAME(st.dbid), OBJECT_SCHEMA_NAME(objectid,st.dbid),
 OBJECT_NAME(objectid,st.dbid), cp.objtype, cp.cacheobjtype,  st.text
ORDER BY MAX(cp.usecounts) DESC
GO

--
SELECT * FROM sys.dm_exec_cached_plans cp CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) st
WHERE DB_NAME(st.dbid) ='Northwind' -- Filter
GO




參考資料

[SQL Server] SQLQueryStress, Stress testing, 壓力測試

2017-08-03

[安裝] CentOS 7


安裝抓圖,做為參考

20170803_安裝 CentOS 7











參考資料

鳥哥的 Linux 私房菜 -- Linux 基礎學習篇訓練教材
http://linux.vbird.org/linux_basic_train/

Installation of “CentOS 7.0″ with Screenshots
https://www.tecmint.com/centos-7-installation/

2017-08-02

[SQL Server] SQLQueryStress, Stress testing, 壓力測試


SQLQueryStress 是 SQL Server 壓力測試工具,無須安裝 Portable Edition

同樣是由 sp_whoisactive 作者 - Adam Machanic 所開發,目前已釋出到開源專案平臺 GitHub 上。真的很感謝 Adam 大師提供許多好用的工具給 DBA,以及 ErikEJ 大師的更新維護。

SQLQueryStress 在使用上 無須安裝,且檔案輕巧(約 745 KB - Version 0.9.7.53)。這是在執行壓力測試時的好工具。



 補充包:
[SQL Server] Stress testing, SQLQueryStress parameter, 壓力測試, 搭配使用 參數 (2)
http://sharedderrick.blogspot.tw/2017/08/sql-server-stress-testing.html



SQLQueryStress 相關說明

可將測試用的連線字串、組態參數等存檔紀錄,利於重複使用,其組態檔案的副檔名:*.sqlstress。

參數說明

參數 說明
Number of Iterations 設定要執行的次數
Number of Threads 設定要使用多少數量的執行緒/連線數
Delay between queries (ms) 設定執行每個 T-SQL 陳述式的間隔時間

按鈕

按鈕 說明
Clean Buffers 執行:DBCC DROPCLEANBUFFERS
Free Cache 執行:DBCC FREEPROCCACHE

選項說明

選項 說明
Connection Timeout 設定目標伺服器的連線逾時,超過時將回報錯誤。
Connection Pooling 設定 啟用 或是 停用 Connection Pooling,這可以用來觀察 建立新連線 與 銷毀該連線 時的影響。
Command Timeout 設定 命令逾時,超過時將回報錯誤。
Collect I/O Statistics 與 Collect Time Statistics 設定是否要收集 I/O 與 Time 統計值。以資源使用角度,這是更輕量級、更省資源的運行方式。
Force Client Retrieval of Data
強迫查詢的資料必須使用 SQL Server 主機的網路資源傳回。
在大量資料的測試上,若需要模擬對 網路 的影響,需要啟用。



使用 SQLQueryStress

示範版本:
SQLQueryStress Version 0.9.7.53

使用環境
SQL Server 2016


工作01. 直接執行 免安裝 的 SQLQueryStress.exe

-- 001_直接執行 免安裝 的 SQLQueryStress.exe



點選 Help \ About,可以看到 SQLQueryStress 版本編號:SQLQueryStress Version 0.9.7.53

-- 002_SQLQueryStress Version 0.9.7.53




工作02. 設定連線

點選 Database,在 Database Select 視窗,設定要連線的 SQL Server 執行個體。

-- 003_點選 Database,設定連線



-- 004_支援Mixed mode



-- 005_列舉Default_Database



-- 006_點選_Test Connection



-- 007_設定連線




工作03. 輸入要執行 T-SQL,設定執行方式、次數、執行緒

在左邊窗格,輸入要執行:T-SQL 陳述式

-- 008_輸入要執行的T-SQL



在 Number of Iterations,設定要執行的次數。
在 Number of Threads,設定要使用多少數量的執行緒/連線數。

在 Delay between queries (ms),設定執行每個 T-SQL 陳述式的間隔時間。

-- 009_設定執行次數, 執行緒的數量



產生 10 個執行緒,每個執行緒執行此 T-SQL 陳述式 10 次。
並且,設定執行每個 T-SQL 陳述式的間隔時間為 1 秒鐘。

-- 010_設定執行次數_執行緒數量_執行間隔



點選 GO,執行。


工作04.  觀察執行結果

-- 011_觀察_1st_執行結果



-- 012_觀察_2nd_執行結果




工作05. 觀察錯誤訊息

若有遭遇錯誤,可以在 Total Exceptions 觀察到。

-- 013_刻意製造錯誤_物件名稱不正確_產生 100 次錯誤



-- 014_刻意製造錯誤_物件名稱不正確_產生 100 次錯誤




工作06. 設定 SQLQueryStress 相關屬性

點選 File,Options,可以看到 Options 視窗

-- 015_設定 SQLQueryStress 的 Options




工作07. 儲存相關的組態設定,利於重複使用

若要重複使用先前設定連線字串,點選 File,Save Setting,可將相關組態設定保存下來,副檔名:*.sqlstress。

這組態資訊檔案,包含:

  • 連線字串
  • 執行的 T-SQL陳述式
  • Number of Iterations
  • Number of Threads
  • Delay between queries (ms)
  • Options

等。

-- 015_儲存相關的組態設定,利於重複使用



關閉後,再度重新執行 SQLQueryStress 沒有任何設定

-- 016_關閉後,再度重新執行 SQLQueryStress 沒有任何設定



點選 File,Load Settings,選取要開啟的組態設定檔案

-- 017_選取要開啟的組態設定檔案



-- 018_載入先前的組態資訊



-- 029_觀察_組態設定檔案



-- 030_觀察_組態設定檔案_Notepad





下載 SQLQueryStress

下載 最新版本:SQLQueryStress Version 0.9.7.53

The latest build for the application has been released by @ErikEJ which contains changes related to IO reads on Temp and Global Temp tables. https://ci.appveyor.com/api/projects/ErikEJ/SqlQueryStress/artifacts/SqlQueryStress.zip?branch=master

-- 100_下載最新版本_SQLQueryStress Version 0.9.7.53



下載的檔案是:SqlQueryStress.zip,請直接解壓縮,將產生單一個檔案:SQLQueryStress.exe

SQLQueryStress 是採取 免安裝 方式,
直接執行 SQLQueryStress.exe 即可使用。

-- 101_SqlQueryStress.zip



-- 102_免安裝的執行檔案_SQLQueryStress.exe



-- 103_免安裝的執行檔案_SQLQueryStress.exe_2





SQLQueryStress on Github

SQLQueryStress 已經放置到 開源專案平臺 GitHub 上。

SQLQueryStress 作者: Adam Machanic - Microsoft MVP
http://sqlblog.com/blogs/adam_machanic/archive/2016/01/04/sqlquerystress-the-source-code.aspx

-- 200_SQLQueryStress 作者: Adam Machanic



Adam Machanic 已提供 Soruce Code - SQLQueryStress_9_7_1.zip,並同意 Erik Ejlskov Jensen - Microsoft MVP 將 Source Code 其放置到 Github 。

ErikEJ/SqlQueryStress
https://github.com/ErikEJ/SqlQueryStress/wiki

-- 201_Erik Ejlskov Jensen_Introducing the SQLQueryStress Performance Testing Tool



-- 202_SqlQueryStress_GitHub_Code






參考資料

SQLQueryStress: The Source Code  - Adam Machanic
http://sqlblog.com/blogs/adam_machanic/archive/2016/01/04/sqlquerystress-the-source-code.aspx

Announcing SQLQueryStress: A simple query load tool
http://sqlblog.com/blogs/adam_machanic/archive/2006/10/21/announcing-sqlquerystress-a-simple-query-load-tool.aspx

How to Fake Load Tests with SQLQueryStress
https://www.brentozar.com/archive/2015/05/how-to-fake-load-tests-with-sqlquerystress/

ErikEJ/SqlQueryStress
https://github.com/ErikEJ/SqlQueryStress

Introducing the SQLQueryStress Performance Testing Tool
https://github.com/ErikEJ/SqlQueryStress/wiki

[SQL Server] sp_whoisactive: find out long running queries (找出費時、耗資源的查詢)
http://sharedderrick.blogspot.tw/2017/07/sql-server-spwhoisactive-find-out-long.html

不敵GitHub,微軟開放源碼分享平台CodePlex年底關門
http://www.ithome.com.tw/news/113233

[SQL Server] Stress testing, SQLQueryStress parameter, 壓力測試, 搭配使用 參數 (2)
http://sharedderrick.blogspot.tw/2017/08/sql-server-stress-testing.html