PostgreSQL und Abfrageplaner

  • Ich habe eine Frage zum Abfrageplaner in PostgreSQL. Ich weiß, dass dieser Planer Daten aus pg_statistics bezieht, aber ... Kann mir jemand sagen, auf welcher Grundlage dieser Planer diese Informationen verwendet, um effiziente Abfragen zu stellen? Wie verwendet man diese Statistiken? Gibt es eine bessere Beschreibung dieses gesamten Prozesses als in der Dokumentation ?

    Ich bin mir bewusst, dass meine Frage vielleicht nicht verständlich ist, aber ich weiß nicht, wie ich mein Problem einfacher erklären kann. Wenn Sie Fragen haben, fragen Sie bitte nach.

    20 December 2011
    go minimal
2 answers
  • Die ausführlichste Diskussion über die Verwendung von Statistiken sind die Beispiele für die Zeilenschätzung Abschnitt der Dokumentation. Letztendlich werden alle Informationen, wie eine Abfrage ausgeführt werden könnte, durch die verschiedenen in einen erheblichen Kostenaufwand umgewandelt Kostenkonstanten . Wenn also eine Tabelle 1000 Seiten groß ist und die Statistik angibt, dass 10% der Tabelle durch eine vorgeschlagene Abfrage zufällig berührt werden, sind dies 100 Seiten * 4.0 (random_page_cost) = 400 Kosteneinheiten für das Einlesen der Daten; Dann werden andere Konstanten verwendet, um beispielsweise die Kosten für die Verarbeitung der Daten auf diesen Seiten zu ermitteln.

    Der Abfrageoptimierer versucht verschiedene Möglichkeiten, einzelne Komponenten abzurufen und zu kombinieren: verschiedene Verbindungstypen, verschiedene Arten Um auf die Tabellendaten zuzugreifen, usw. Durchläuft es die möglichen Pläne dieser Kombinationen und wählt dann diejenige aus, deren Gesamtkosten am niedrigsten sind.

    Ich habe etwas mehr als 50 Seiten geschrieben zu diesem Thema für mein Buch PostgreSQL 9.0 High Performance , das die umfangreichste Diskussion über die Abfrageausführung enthält jetzt sofort. Es gibt nicht allzu viele Informationen darüber, wie Statistiken verwendet werden, die über das hinausgehen, was in der Dokumentation gezeigt wird. Das meiste deckt alle verschiedenen Elemente des Abfrageplanknotens ab, auf die Sie möglicherweise stoßen.

    20 December 2011
  • Wenn Sie das wirklich wissen wollen, dann finden Sie es hier http://www.pgcon.org/2011/schedule/events/350.en.html und Sie können PostgreSQL-Quellen lesen.

    Auf der anderen Seite müssen Sie das wirklich nicht wissen, um PostgreSQL oder eine andere Datenbank effizient nutzen zu können. Das einzige, was Sie wissen müssen, ist, dass die Statistiken aktuell sein sollten.

    20 December 2011