CiAgICA8IS0tIExpbmtlZEluIC0tPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIF9saW5rZWRpbl9wYXJ0bmVyX2lkID0gIjEyMzUwNzMiOwogICAgICAgIHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyA9IHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyB8fCBbXTsKICAgICAgICB3aW5kb3cuX2xpbmtlZGluX2RhdGFfcGFydG5lcl9pZHMucHVzaChfbGlua2VkaW5fcGFydG5lcl9pZCk7CiAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgKGZ1bmN0aW9uKCl7dmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07CiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAgIGIudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiO2IuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICBiLnNyYyA9ICJodHRwczovL3NuYXAubGljZG4uY29tL2xpLmxtcy1hbmFseXRpY3MvaW5zaWdodC5taW4uanMiOwogICAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsIHMpO30pKCk7CiAgICA8L3NjcmlwdD4KICAgIDxub3NjcmlwdD4KICAgICAgICA8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBhbHQ9IiIgc3JjPSJodHRwczovL3B4LmFkcy5saW5rZWRpbi5jb20vY29sbGVjdC8/cGlkPTEyMzUwNzMmZm10PWdpZiIgLz4KICAgIDwvbm9zY3JpcHQ+CiAgICA8IS0tIEVuZCBMaW5rZWRJbiAtLT4KICAgIA==
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

I/O-Statistiken

Wir werden immer wieder nach „Abfrageperformance“ gefragt. Man studiert Ausführungspläne und I/O-Statistiken, um die Treiber zu identifizieren. Das Lesen und Analysieren der Ausführungspläne ist inzwischen recht übersichtlich im SQL Server Management Studio möglich. Bei den I/O-Statistiken sieht es leider etwas anders aus.

Wir verwenden für das Beispiel die Foodmart-Datenbank und setzen folgendes Statement ab:


SET STATISTICS IO ON;

SELECT  [product_id]
      ,[date_id]
      ,[customer_id]
      ,[promotion_id]
      ,[store_id]
      ,[store_sales]
      ,[store_cost]
      ,[unit_sales]
      ,[TimeUtilityID]
      ,[CumulationID]
      ,[ValueTypeID]
  FROM [FoodMart].[dbo].[V_sales_fact_2007]
  union all
SELECT  [product_id]
      ,[date_id]
      ,[customer_id]
      ,[promotion_id]
      ,[store_id]
      ,[store_sales]
      ,[store_cost]
      ,[unit_sales]
      ,[TimeUtilityID]
      ,[CumulationID]
      ,[ValueTypeID]
  FROM [FoodMart].[dbo].[V_sales_fact_2008]
union all
SELECT  [product_id]
      ,[date_id]
      ,[customer_id]
      ,[promotion_id]
      ,[store_id]
      ,[store_sales]
      ,[store_cost]
      ,[unit_sales]
      ,[TimeUtilityID]
      ,[CumulationID]
      ,[ValueTypeID]
  FROM [FoodMart].[dbo].[V_sales_fact_dec_2008]

  SET STATISTICS IO OFF;

Dabei ergibt sich ein Ergebnis von etwa 260.000 Zeilen.

Abb. 1: Meldungen im SQL Server Management Studio

Die Ausgaben für die I/O-Statistik sind nur in Textform vorhanden und daher sehr schwer „auf einen Blick“ zu lesen. Es gibt eine Webseite, die uns das Lesen sehr erleichtern kann: http://www.statisticsparser.com

Abb. 2: Import des Meldungstextes mithilfe von Statistic Parser

Man übernimmt einfach den Meldungstext in das vorgesehene Feld und drückt auf den Button „Parse“.

Abb. 3: I/O-Statistik des Statistic Parsers

Die I/O-Statistik erscheint übersichtlich in einem gut lesbaren Format. Ein kleiner Nachteil sei noch erwähnt: Im jetzigen Stadium der Entwicklung „versteht“ der Parser nur Ausgaben der englischen und wohl auch der spanischen Meldungen des SQL Server Management Studios.

Nicolas Bissantz

Diagramme im Management

Besser entscheiden mit der richtigen Visualisierung von Daten

Erhältlich überall, wo es Bücher gibt, und im Haufe-Onlineshop.