User Tools

Site Tools


wiki:postgres:pg_tune_kurs_queryplan

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

wiki:postgres:pg_tune_kurs_queryplan [2017/09/28 12:21] (current)
Line 1: Line 1:
 +===== Query Planer =====
 +
 +  test# COUNT('​spaltenname'​) ... Anzahl der Werte in einer Spalte(NULL Werte werden nicht gezählt)
 +  test# COUNT(*) ​            ... zählt alle Zeilen in der Tabelle
 +
 +  test# \timing
 +  gibt die Zeit aus wie lange SQL-Statements dauern.
 +
 +  test# EXPLAIN SELECT * FROM t_test;
 +  gibt den Query Plan aus. Geschätzte Zeilen und Kosten (was ist teurer, was ist billiger.
 +  Das Niveau - die Einheit der Kosten - ist egal. Es geht darum möglichst "​billig"​ zu werden.
 +
 +  SELECT pg_size_pretty(pg_relation_size('​t_test'​));​
 +  Eine Tabelle ist eine Ansammlung von 8k Blöcken.
 +
 +  * Für jeden 8k Block der gelesen werden muss bekommt man einen Strafpunkt (bei den Kosten).
 +
 +  test# SHOW cpu_operator_cost;​
 +  test# SHOW cpu_tuple_cost;​
 +  test# SHOW seq_page_cost;​
 +
 +  SELECT pg_relation_size('​t_test'​)/​8192;​
 +  Anzahl der Blöcke einer Tabelle.
 +
 +  SHOW random_page_cost;​
 +  (4x?) höher als sequential page cost.
 +  Aufblättern und umblättern (Vgl.: Telefonbuch wird zufällig/​random aufgeschlagen) ist das teure.
 +
 +  SET random_page_cost TO 10;
 +  Der Query Planer rechnet dann damit, dass random 10x teurer ist als sequentiell.
 +
 +**Wenn die Daten im Arbeitsspeicher/​Memory sind ist es egal wie zugegriffen wird - sequentiell und random ist dann gleich schnell.**\\
  
wiki/postgres/pg_tune_kurs_queryplan.txt · Last modified: 2017/09/28 12:21 (external edit)