如何在Azure Data Studio上构建自定义小工具

416 阅读8分钟

在这篇文章中,我们将学习如何在Azure Data Studio中建立一个自定义的小工具,以帮助监测性能指标。

什么是Azure数据工作室?

Azure Data Studio(ADS)是新一代的数据库管理、开发和维护环境,可用于企业内部和云数据平台。Azure Data Studio的目标用户群不仅限于数据库管理员,它还针对软件开发人员或其他非DBA用户,他们在工作中与数据库打交道。如,ADS的一个突出特点是,它很容易定制,还可以通过扩展获得新的功能。如果我们举个例子,在安装了PostgreSQL扩展后,我们可以连接任何PostgreSQL(也称为Postgres)数据库并执行PL/pgSQL查询。

PostreSQL extension for Azure Studio

ADS的另一个能力是,它可以在多个操作系统上工作。

  • Windows
  • macOS
  • Linux

SQL Server Management Studio(SSMS)的最初版本发布于2005年,在ADS宣布之前,它是微软唯一的SQL数据库管理和开发工具。如今,有些人已经开始认为Azure Studio将围绕SSMS运行。然而,这两个工具各有优缺点,但Azure Studio的以下小亮点似乎使其更具吸引力。

尽管这样,SQL Server Management Studio仍然提供了独特的功能。

  • 提供通过用户友好的界面来配置和管理Always On
  • 错误日志查看器
  • 先进的扩展事件管理
  • 可以连接到。
    • 分析服务
    • 集成服务
    • 报告服务

如何在Azure Data Studio中创建一个自定义小组件

ADS最有利的特点之一是它允许创建自定义的小工具。在小组件的帮助下,我们可以使用不同的图形类型轻松实现查询结果的可视化。在这种情况下,建立性能监测部件是一种合理的方法,这样我们就可以随时跟踪性能指标。现在,让我们通过一个非常直接的例子来学习如何建立一个自定义的小工具。

动态管理视图 sys.dm_exec_requests动态管理视图返回在SQL Server中正在执行的每个请求的信息。wait_type列是该视图的重要列之一,它定义了当前执行的查询正在等待哪个源。

提示: SQL Server等待类型是重要的性能指标之一,它们被用来监测资源瓶颈和诊断SQL Server的性能问题。

下面的查询汇总了等待统计的等待时间,这样我们就可以弄清楚目前哪个资源造成了瓶颈。

SELECTDER.wait_type,SUM(DER.wait_time) AS [Wait Type]

FROM sys.dm_exec_requests AS DER

JOIN sys.databases AS DB

ON DER.database_id = DB.database_id

JOIN sys.dm_exec_sessions AS DES

ON DER.session_id = DES.session_id

WHERE NOT DER.status IN ('background', 'sleeping')

AND DER.wait_type IS NOT NULL

GROUP BY DER.wait_type

How to use sys.dm_exec_requests view

在结果面板上,我们点击图表按钮,选择以下属性来定制图表。

**图表类型。**甜甜圈

数据方向。垂 直方向

使用列名作为标签: true

图例位置。顶

Display of data in graphs

一个小部件基础设施使用JSON格式来可视化查询结果集。为了获得这个图表的JSON,我们将点击创建洞察力 按钮,然后图表的JSON会出现在另一个屏幕上。

Create Insight functionality

我们需要将查询存储在一个特定的文件夹中,这样在每次查看或刷新图表时,图表就可以使用这个查询。我们删除queryFile键的SQLQuery_2值,然后将查询文件的路径代替它。经过这些步骤后,JSON将如下所示。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

{

"name":"My-Widget",

"gridItemConfig":{

"sizex":2,

"sizey":1

},

"widget":{

"洞察力-部件":{

"类型":{

"甜甜圈":{

"dataDirection":"垂直"

"columnsAsLabels":true,

"labelFirstColumn":false,

"legendPosition":"top",

"encoding":"hex",

"imageFormat":"jpeg"

}

},

"queryFile":"C:\\Users\user_name\AppData\Local\Programs\Azure Data Studio\resources\app\extensions\insights-default\sql\WaitTypeWidget.sql"

}

作为第二步,我们需要将准备好的图表JSON注入Azure Data Studio的用户设置文件中。我们将点击查看菜单,然后点击命令调色板...菜单项。

How to use Command Palette

作为一种替代方法,我们可以点击管理按钮,然后点击命令调色板。

Setting of the Azure Studio

启用命令调色板后,我们将键入 "*打开用户设置 "*关键字,然后将单击首选项。打开用户设置

Preferences: Open User Settings.

在设置选项卡中,我们搜索小组件设置,然后点击settings.json中的编辑 超链接**。**

settings.json

在JSON编辑器中,我们右键点击settings.json标签,并选择在文件资源管理器中显示 菜单项,并到达Azure Data Studio的用户设置文件的文件路径。我们把settings.json文件复制到任何安全的路径,我们可能想恢复以前的设置。

the Reveal in File Explorer

setting.json文件中,我们在这个设置文件的末尾注入以下代码。

"dashboard.database.widgets": [{"name":"My-Widget","gridItemConfig":{"sizex":2,"sizey":1},

"widget":{"insights-widget":{"type":{"doughnut":{"dataDirection":"vertical","columnsAsLabels":true,"labelFirstColumn":

false,"legendPosition":"top","encoding":"hex","imageFormat":"jpeg"}},

"queryFile":"C:\\Users\user_name\AppData\Local\Programs\Azure Data Studio\resources\app\extensions\insights-default\sql\WaitTypeWidget.sql"}}}.

Database widgets

这个小部件将显示在任何数据库管理标签上。

Customized database widgets

我们可以为定制的小组件添加一个向下钻取的功能,以便访问图表细节。要做到这一点,我们需要一个查询,获取构成图表数据细节的数据。下面的查询返回每个活动会话的查询文本和查询计划细节。

SELECTDER.wait_type,DER.wait_time AS [Wait Type]

,CAST(QueryPlan.query_plan as XML) as Query_Plan,SqlText.text

FROM sys.dm_exec_requests AS DER

JOIN sys.databases AS DB

ON DER.database_id = DB.database_id

JOIN sys.dm_exec_sessions AS DES

ON DER.session_id = DES.session_id

CROSS APPLY sys.dm_exec_query_plan(DER.plan_handle) QueryPlan

CROSS APPLY sys.dm_exec_sql_text(DER.sql_handle) SqlText

WHERE NOT DER.status IN ('background', ' sleeping')

AND DER.wait_type IS NOT NULL

Result of the dm_exec_sessions

首先,我们将用一个文件路径来存储这个查询,这个路径可以和图表查询的文件路径相同。作为下一步,我们需要在自定义小组件的JSON代码中添加细节键,因此我们重新打开设置。

  • 要打开命令调色板,按Ctrl+Shift+P
  • 搜索首选项。打开用户设置 并点击它
  • 搜索数据库部件并点击settings.json中的编辑

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

"dashboard.database.widgets":[

{

"name":"My-Widget",

"gridItemConfig":{

"sizex":2,

"sizey":1

},

"widget":{

"洞察力-部件":{

"类型":{

"甜甜圈":{

"dataDirection":"垂直"

"columnsAsLabels":true,

"labelFirstColumn":false,

"legendPosition":"top",

"encoding":"hex",

"imageFormat":"jpeg"

}

},

"queryFile":"C:\\Users\user_name\AppData\Local\Programs\Azure Data Studio\resources\app\extensions\insights-default\sql\WaitTypeWidget.sql"

"细节"{

"queryFile":"C:\\Azure Data Studio\resources\app\extensions\insights-default\sql\WaitTypeWidgetDetails。sql"

"标签""wait_type"

"value":"wait_type"

}

}

}

}

JSON codes of a customized chart

我们将点击小组件右上方的省略号(...,打开详细信息报告。

Insight detail report

如何在Azure Data Studio中启用内置的性能监控小部件

正如我们已经了解到的那样,Azure Data Studio允许我们创建自定义的小组件,它还提供了一些内置的小组件。其中一个内置的小组件有助于监控最慢的五个查询。为了启用这个小工具,我们需要对ADS的用户设置进行一些定制。我们重新打开setting.json文件,我们将在这个设置文件的末尾添加以下代码。

"dashboard.database.widgets": [

{

"name": "Slow Queries Widget",

"gridItemConfig": {

"sizex": 2,

"sizey": 1

},

"widget": {

"query-data-store-db-insight": null

}

}

Built-in performance monitoring widget

保存设置文件后,右键单击其中一个数据库列表,选择管理菜单项。仪表板会查看数据库中最慢的五个查询。

Slowest queries chart

为了获得更多关于最慢查询的细节,我们点击右上方的省略号(...,选择显示细节。 当我们点击项目报告上的任何查询时,子报告会显示关于该查询的所有细节。

Slowest queries chart detail report

提示: 要在洞察力部件中显示五个以上的查询,我们可以编辑提供数据的查询。这个查询被放在 "C:\Users\user_name\AppData\Local\Programs\Azure Data Studio\resources\app\extensions\insights-default\sql"下,查询文件名是qds.sqlqds_detail.sql。我们可以编辑这些查询文件中的顶层语句,在小组件上显示更多的慢速查询。

Enlarged slowest queries chart

为小组件启用autoRefreshInterval选项

Azure Data Studio允许向小组件添加一些基本选项,其中一个选项是autoRefreshInterval。在这个选项的帮助下,小组件可以在指定时间内自动刷新显示的数据。为了启用这个功能,我们需要在图表的设置中添加autoRefreshInterval属性 。autoRefreshInterval 是 ,放在 queryFile键之后,然后指定间隔值为整数,单位为分钟。

autoRefreshInterval option for the widgets

对于我们的示例小组件,我们将这个值确定为1分钟,因此小组件每隔一分钟就会刷新所有数据。

总结

Azure Data Studio是微软的一个新的数据库管理和开发平台。毫无疑问,ADS包括一些优秀的功能,其中之一就是能够创建自定义图表。通过这个功能,我们可以转换查询结果,以便于理解。

Esat Erkec

Esat Erkec是一名SQL Server专业人士,8年多前开始了他的职业生涯,是一名软件开发人员。他是一名SQL Server微软认证解决方案专家。

他职业生涯的大部分时间都集中在SQL Server数据库管理和开发方面。他目前的兴趣是数据库管理和商业智能。你可以在LinkedIn上找到他。

查看Esat Erkec发表的所有帖子

Esat Erkec