sql >> Databáze >  >> RDS >> Sqlserver

Co je STATISTICKÝ PROFIL na serveru SQL Server?

V SQL Server můžete použít SET STATISTICS PROFILE příkaz k zobrazení informací o profilu pro příkaz T-SQL.

STATISTICS PROFILE funguje pro ad hoc dotazy, pohledy a uložené procedury.

Když STATISTICS PROFILE je nastaveno na ON , každý provedený dotaz vrátí svou běžnou sadu výsledků, po níž následuje další sada výsledků, která zobrazuje profil provádění dotazu.

Příklad

Zde je jednoduchý příklad k demonstraci.

SET STATISTICS PROFILE ON;
GO

SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO

Výsledek:

Tím se vrátí stejné sloupce jako SHOWPLAN_ALL vrátí plus dva navíc (Řádky a Spustí sloupce).

Tento snímek obrazovky byl pořízen, když jsem spustil tento příkaz v Azure Data Studio.

Zde je další jednoduchý příklad, tentokrát jsem spustil příkaz v mssql-cli (rozhraní příkazového řádku).

SET STATISTICS PROFILE ON;
GO

SELECT * FROM Cats;
GO

Výsledek (při použití vertikálního výstupu):

Commands completed successfully.
+---------+-----------+
| CatId   | CatName   |
|---------+-----------|
| 1       | Meow      |
| 2       | Fluffy    |
| 3       | Scratch   |
+---------+-----------+
(3 rows affected)
-[ RECORD 1 ]-------------------------
Rows               | 3
Executes           | 1
StmtText           | SELECT * FROM Cats
StmtId             | 1
NodeId             | 1
Parent             | 0
PhysicalOp         | NULL
LogicalOp          | NULL
Argument           | NULL
DefinedValues      | NULL
EstimateRows       | 3
EstimateIO         | NULL
EstimateCPU        | NULL
AvgRowSize         | NULL
TotalSubtreeCost   | 0.0032853
OutputList         | NULL
Warnings           | NULL
Type               | SELECT
Parallel           | 0
EstimateExecutions | NULL
-[ RECORD 2 ]-------------------------
Rows               | 3
Executes           | 1
StmtText           |   |--Clustered Index Scan(OBJECT:([Test].[dbo].[Cats].[PK__Cats__6A1C8AFAB3EF1A8F]))
StmtId             | 1
NodeId             | 2
Parent             | 1
PhysicalOp         | Clustered Index Scan
LogicalOp          | Clustered Index Scan
Argument           | OBJECT:([Test].[dbo].[Cats].[PK__Cats__6A1C8AFAB3EF1A8F])
DefinedValues      | [Test].[dbo].[Cats].[CatId], [Test].[dbo].[Cats].[CatName]
EstimateRows       | 3
EstimateIO         | 0.003125
EstimateCPU        | 0.0001603
AvgRowSize         | 142
TotalSubtreeCost   | 0.0032853
OutputList         | [Test].[dbo].[Cats].[CatId], [Test].[dbo].[Cats].[CatName]
Warnings           | NULL
Type               | PLAN_ROW
Parallel           | 0
EstimateExecutions | 1
(2 rows affected)
Commands completed successfully.

Jak to vypnout

Chcete-li změnit STATISTICS PROFILE vypnout, jednoduše jej spusťte znovu pomocí OFF místo ON :

SET STATISTICS PROFILE OFF;
GO

Je STATISTICS PROFILE Zastaralé?

Ačkoli se o tom v aktuální dokumentaci nezmiňuje, SET STATISTICS PROFILE zdá se, že v budoucích verzích showplanu je naplánováno ukončení podpory.

Podle tohoto starého článku MSDN SET STATISTICS PROFILE je naplánováno ukončení podpory v budoucích verzích showplanu a je doporučeno použít SET STATISTICS XML místo toho.

Také aktuální dokumentace pro SET STATISTICS XML podporuje toto:

SET STATISTICS PROFILE a SET STATISTICS XML jsou vzájemné protějšky. První z nich vytváří textový výstup; ten druhý vytváří výstup XML. V budoucích verzích SQL Serveru se budou informace o novém plánu provádění dotazů zobrazovat pouze prostřednictvím příkazu XML SET STATISTICS, nikoli příkazu SET STATISTICS PROFILE.

Proto se asi vyplatí použít SET STATISTICS XML místo SET STATISTICS PROFILE kde je to možné.


  1. T-SQL:Zaokrouhlete na nejbližší 15minutový interval

  2. Používání relačních databází MySQL na Gentoo

  3. MySQL server zmizel - přesně za 60 sekund

  4. jaký je dobrý způsob horizontálního úlomku v postgresql