PostgreSQL - Troubleshooting



Ähnliche Dokumente
PostgreSQL Wartungsstrategien

Grundlagen der PostgreSQL Administration

Indexing und Performance Tuning

Urs Meier Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

Explain verstehen. Hans-Jürgen Schönig.

Performance Probleme aufspüren

Tuning von PostGIS mit Read- Only-Daten von OpenStreetMap

MIN oder MAX Bildung per B*Tree Index Hint

ANFRAGEOPTIMIERUNG IN POSTGRESQL

Aktuelle Entwicklungen

PostgreSQL Ein Überblick

MySQL Cluster und MySQL Proxy

Performance Tuning

Ein reales Testumfeld bereitstellen - basierend auf einer Produktionsdatenbank (ohne eine neue Kopie zu erstellen)

Well-Balanced. Performance Tuning

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

IBM DB2 für Linux/Unix/Windows Monitoring und Tuning

Eine Reise durch den PostgreSQL Optimizer

Oracle 9i Einführung Performance Tuning

Das neue Volume-Flag S (Scannen erforderlich)

Oracle 9i Einführung Performance Tuning

MySQL Installation. AnPr

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

MySQL Administration. Seminarunterlage. Version 3.02 vom

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Die Backup-Voreinstellungen finden Sie in M-System Server unter dem Reiter "Wartung".

IT-Symposium Ralf Durben. Business Unit Datenbank. ORACLE Deutschland GmbH. 1

Registrierung für eine Senioren IPIN Ab 17. Mai 2011 können sich Spieler für eine Senioren IPIN (Lizenz) registrieren.

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

Storage as a Service im DataCenter

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

DB2 Codepage Umstellung

Arbeiten mit einem lokalen PostgreSQL-Server

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

TERRA Kasse Backup Service

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Installation MySQL Replikationsserver

Beispiel 1: Filmdatenbank


SWISSVAULT StorageCenter Console Version 5 Kurzanleitung für SWISSVAULT Combo Partner

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

3 Konfiguration OfficeMaster 3.10 SNMP

MySQL Queries on "Nmap Results"

Cassandra Query Language (CQL)

Ablösung von Control-M durch JobScheduler

Datenbanken und Oracle, Teil 2

3. Stud.IP-Entwickler-Workshop 2. Juni 2006 Workshop 3c: Stud.IP-Enterprise-Edition André Noack, Frank Elsner

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

SMARTtill Server mit Manager

Installations Guide für YAJSW und DTLDAP

Abfragen: Grundbausteine

repostor möchte Ihre TCO senken

Grundlagen der PostgreSQL Administration. Timo Pagel

IT-Symposium

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Datenbanken Konsistenz und Mehrnutzerbetrieb III

Hardware- und Softwareanforderungen für die Installation von California.pro

FileMaker Konferenz 2011 Hamburg Speed. Performance Optimierung für Ihre Lösung / Entwickler

WISSENSWERTES ÜBER WINDOWS SCALE-OUT FILE SERVER

ADDISON tse:nit Hinweise zum Umstieg von SQL 2000 auf SQL 2008 im tse:nit Umfeld

Warenwirtschaft Handbuch - Administration

Kurzanleitung für Umsteiger von DataEase.

Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug Name: Note:

SQL: statische Integrität

Informatik 12 Datenbanken SQL-Einführung

TOP 10 Monitoring SQL Befehle

Übungsblatt 8- Lösungsvorschlag

MySQL Performance Tuning für Entwickler

Arc/Poly Filter. Arc/Poly Filter erzeugen 1. Arc/Poly Filter erzeugen 2. GSAK für Fortgeschrittene

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

Anleitung zum Upgraden der Speed4Trade_DB Instanz (MSDE) auf SQL Server 2005 Express Edition

Nov '06 Mär '07 Jul '07 Sep '07 Jun '08

Regionaltreffen Rhein Main 26. März 2007

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH

Im Kapitel Resourc Manager werden die verschiedenen Möglichkeiten der Überwachung von Messwerten eines Server oder Benutzers erläutert.

Die Datenmanipulationssprache SQL

F A Q s. SMS Modem Dial-In (TAP-Gateway) 1 Allgemeines FAQ s... 3

Umzug der Datenbank Firebird auf MS SQL Server

die wichtigsten Caches (SGA) sind on-the-fly änderbar.

NoSQL mit Postgres 15. Juni 2015

file:///c:/users/wpzsco/appdata/local/temp/tmp373d.tmp.htm

Markus Feichtinger. Power Systems. Der Weg zu POWER! 2009 IBM Corporation

if ($rows == 0) { save_new(); } }

Performance Tools. für alle Editionen

PostgreSQL in großen Installationen

Internet und Datensicherung für Frankfurter Schulen mit einem Bandlaufwerk unter MS Windows NT Server Frage:

Systemvoraussetzung < zurück weiter >

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Physischer Datenbankentwurf: Datenspeicherung

Übung 7 DBMS-FUNKTIONALITÄTEN UND DATENIMPORT

MySQL 5.1. Kristian Köhntopp

Automatisierte Datenmigration mit dynamischen SQL

Löschen eines erkannten aber noch nicht konfigurierten Laufwerks

Backup Premium Kurzleitfaden

Oracle 10g Einführung

Installation SQL- Server 2012 Single Node

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung "Informa=onssysteme" Sommersemester 2015

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

SEMINAR Modifikation für die Nutzung des Community Builders

Leseprobe: SQL mit MySQL - Band 4 Kompendium mit Online-Übungs-DB. Kompendium zur schnellen Kurzinformation der Datenbanksprache SQL/MySQL 5.

Transkript:

24. August 2008

Agenda 1 Installation 2 Administration 3 Entwicklung 4 Backup

Installation (1) Installationspfade, Tablespaces und Mountpoints bestimmen RAID-Level und LVM Separates WAL-Laufwerk? # initdb -X /mnt/wal temp tablespaces Tablespace für Indexe Zu erwartende Größe von Tabellen und Indexe tuple header: 24 Bytes item pointer: 4 Bytes data size : 8 Bytes (2 x Integer) ---------------------- 34 Bytes

Installation (2) Welche Locales, welches Encoding? # initdb -E UTF-8 --locale=de_de.utf-8 Collation bestimmt Indexsortierung #= INSERT INTO foo VALUES( ä ), ( Ü ), ( Ä ), ( Ö ), ( ö ), ( ü ); #= SELECT * FROM foo ORDER BY value DESC; #= SELECT * FROM foo ORDER BY value DESC; value value ------- ------- ü Ü ö ü ä Ö Ü ö Ö Ä Ä ä (6 rows) (6 rows)

VACUUM (1) Tabellen (Heap) fragmentieren Erstellen geeigneter VACUUM-Policy, Anwendungsabhängig Manuelles VACUUM, Autovacuum, Cost-based VACUUM pg autovacuum für spezifische Tabellen Optimizerstatistiken müssen aktuell sein VACUUM und ANALYZE unbedingt notwendig!

VACUUM (2) Manuelles VACUUM #= VACUUM ANALYZE VERBOSE;... INFO: vacuuming "public.foo" INFO: "foo": found 0 removable, 6 nonremovable row versions in 1 pages DETAIL: 0 dead row versions cannot be removed yet. There were 0 unused item pointers. 1 pages contain useful free space. 0 pages are entirely empty. CPU 0.00s/0.00u sec elapsed 0.00 sec. INFO: vacuuming "pg_toast.pg_toast_16385" INFO: index "pg_toast_16385_index" now contains 0 row versions in 1 pages DETAIL: 0 index row versions were removed. 0 index pages have been deleted, 0 are currently reusable. CPU 0.00s/0.00u sec elapsed 0.00 sec. INFO: "pg_toast_16385": found 0 removable, 0 nonremovable row versions in 0 pages DETAIL: 0 dead row versions cannot be removed yet. There were 0 unused item pointers. 0 pages contain useful free space. 0 pages are entirely empty. CPU 0.00s/0.00u sec elapsed 0.00 sec. INFO: analyzing "public.foo" INFO: "foo": scanned 1 of 1 pages, containing 6 live rows and 0 dead rows; 6 rows in sample, 6 estimated... INFO: free space map contains 55 pages in 61 relations DETAIL: A total of 976 page slots are in use (including overhead). 976 page slots are required to track all free space. Current limits are: 204800 page slots, 1000 relations, using 1305 kb. VACUUM Time: 16,793 ms

VACUUM (3) Autovacuum automatisiert diese Wartungsaufgabe Standardmässig aktiviert autovacuum = on track_counts = on Ab Version 8.3 mehrere Worker möglich autovacuum_max_workers = 3 autovacuum_naptime = 60s Grenzwerte beachten: vacuum threshold = autovacuum_vacuum_threshold + autovacuum_vacuum_scale_factor * number of tuples analyze threshold = autovacuum_analyze_threshold + autovacuum_analyze_scale_factor * number of tuples Überwachungsmöglichkeiten in 8.3 erheblich verbessert

VACUUM (4) Cost-based VACUUM hilft, I/O-Ressourcen einzusparen vacuum_cost_delay = 0 # disabled vacuum_cost_limit = 200 # 200ms Delay Verlängerte VACUUM-Laufzeiten vacuum cost limit schwierig zu bestimmen vacuum cost delay sollte mit Bedacht gewählt werden

VACUUM (5) Spezielle Konfigurationen für spezifische Tabellen möglich #= \d pg_autovacuum Table "pg_catalog.pg_autovacuum" Column Type Modifiers ------------------+---------+----------- vacrelid oid not null enabled boolean not null vac_base_thresh integer not null vac_scale_factor real not null anl_base_thresh integer not null anl_scale_factor real not null vac_cost_delay integer not null vac_cost_limit integer not null -1 setzt den Systemdefault Hinweis für Backups: pg dump berücksichtigt diese Einstellungen nicht!

Free Space Map Die Free Space Map speichert fragmentierten Bereich einer Tabelle oder Index. Re-Konfigurierbar nur bei Serverneustart, Shared Memory max_fsm_pages = 204800 max_fsm_relations = 1000 Zu kleine Maps verhindern die Wiederverwendung von Speicherplatz innerhalb von Tabellen oder Indexe Monitoring durch VACUUM VERBOSE oder pg freespacemap (contrib-modul) Vorraussichtlich in 8.4 flexiblere Infrastruktur (Relation Forks)

REINDEX #= REINDEX DATABASE db; Indexe fragmentieren ebenfalls Regelmässiges REINDEX garantiert schlanke Indexe Wartungsfenster erforderlich

Überwachung (1) Überwachung von Statistiken über System-Views Schema Name Type Owner ------------+--------------------------+---------+---------- pg_catalog pg_locks Sicht postgres pg_catalog pg_stat_activity Sicht postgres pg_catalog pg_stat_user_indexes Sicht postgres pg_catalog pg_stat_user_tables Sicht postgres pg_catalog pg_statio_user_indexes Sicht postgres pg_catalog pg_statio_user_sequences Sicht postgres pg_catalog pg_statio_user_tables Sicht postgres Statistische Daten wie Anzahl INSERTs oder I/O-Auslastung von Tabellen und Indexe in pg stat*- und pg statio*-views pg stat activity und pg locks protokollieren aktuelle Tasks auf der Datenbank und assoziierte Sperren

Überwachung (2) Aktuelle Abfragen einer Datenbank #= \x Expanded display is on. #= SELECT * FROM pg_stat_activity ; -[ RECORD 1 ]-+--------------------------------- datid 16384 datname bernd procpid 16351 usesysid 10 usename bernd current_query SELECT * FROM pg_stat_activity ; waiting f xact_start 2008-08-20 00:23:26.905504+02 query_start 2008-08-20 00:23:26.905504+02 backend_start 2008-08-19 22:49:02.721159+02 client_addr 127.0.0.1 client_port 54952

Überwachung (3) Sind Abfragen als waiting=t markiert, sollte eine Analyse über pg locks erfolgen #= SELECT * FROM pg_locks WHERE granted = f ; -[ RECORD 1 ]------+-------------- locktype transactionid database relation page tuple virtualxid transactionid 691 classid objid objsubid virtualtransaction 1/926 pid 20908 mode ShareLock granted f

Überwachung (4) Protokollieren problematischer Queries log_min_duration_statement = 2min log_min_error_statement = ERROR Eckdaten der Datenbank erfassen log_checkpoints = true log_lock_waits = true log_temp_files = 32768 log_autovacuum_min_duration = 10min

Überwachung (5) EXPLAIN ANALYZE SELECT * FROM tenk1 t1, tenk2 t2 WHERE t1.unique1 < 50 AND t1.unique2 = t2.unique2; QUERY PLAN ------------------------------------------------------------- Nested Loop (cost=0.00..327.02 rows=49 width=296) (actual time=1.181..29.822 rows=50 loops=1) -> Index Scan using tenk1_unique1 on tenk1 t1 (cost=0.00..179.33 rows=49 width=148) (actual time=0.630..8.917 rows=50 loops=1) Index Cond: (unique1 < 50) -> Index Scan using tenk2_unique2 on tenk2 t2 (cost=0.00..3.01 rows=1 width=148) (actual time=0.295..0.324 rows=1 loops=50) Index Cond: ("outer".unique2 = t2.unique2) Total runtime: 31.604 ms

Hausaufgaben Identifizieren von problematischen Queries (EXPLAIN, Sperren) Index-Nutzung Anpassen der VACUUM-Policy VACUUM FULL vermeiden CLUSTER und REINDEX in separate Wartungsfenster Größenüberwachung von Tabellen/Indexe, Tablespaces und Festplatten Logfile-Auswertungen ggf. notwendig

Rules vs. Trigger Trigger oftmals besser als Rules Rules sind Makros, ursprüngliche Query wird umgeschrieben Vorsicht bei Multi-Statements-Rules Volatile Funktionen werden u.u doppelt evaluiert

Server Side Prepared Statements Privat für jede Session Kann zu suboptimalen Plänen führen Sessioneigene Prepared Statements können über pg prepared statements angezeigt werden

pl/pgsql Leistungsfähige prozedurale Sprache für Stored Procedures Parser verbesserungswürdig Pläne für Abfragen werden innerhalb pl/pgsql gecached Vor 8.3 keine Plan-Invalidierung: relation with OID 1013156 does not exist

pg dump Drei Formate verfügbar: plain (SQL), tar, custom pg dump für Dumps spezifischer Datenbanken pg_dump -Fc -E LATIN9 -U postgres yourdb pg_dump -Fp -E LATIN9 -U postgres yourdb pg dumpall für komplette Dumps (Sicherung kompletter Instanzen, Migration) # globale Objekte pg_dumpall -g -E LATIN9 -U postgres postgres # alles pg_dumpall -E LATIN9 -U postgres Problematisch bei sehr großen Datenbanken

WAL-based Backup Backups quasi nebenher Ideal für große Datenbanken mit mehreren hundert GigaByte oder mehr Base Backups über Snapshots (SAN, LVM) Wiederherstellung jedoch nur über Downtime Speicherverbrauch muß streng kontrolliert werden Einsatz von Hash Indexe erfordert Spezialbehandlung Tablespaces beachten!

Absicherung über Replikation DRBD + Heartbeat als Hochverfügbarkeitscluster Slony-I WAL-based StandBy Scale-Out erfordert meist umfangreiche Planung Replikation ist kein Backup

PQfinish(lecture);