PostgreSQL - dlaczego moje zapytania są takie wolne?

0087864bbb6d6834c688052d6ab33781?s=47 Adam Okoń
January 18, 2017

PostgreSQL - dlaczego moje zapytania są takie wolne?

0087864bbb6d6834c688052d6ab33781?s=128

Adam Okoń

January 18, 2017
Tweet

Transcript

  1. PostgreSQL - Dlaczego moje zapytania są takie wolne? Adam Okoń

    Elegant Code
  2. None
  3. None
  4. None
  5. Przykładowy EXPLAIN

  6. W jaki sposób możemy poprawić wrażenia z korzystania z psql?

    W jaki sposób możemy zlokalizować wolne zapytania? Jak podejść do tematu analizy i optymalizacji zapytań? Rozkład jazdy
  7. W jaki sposób mogę poprawić wrażenia z korzystania z psql?

  8. Pimp my psql przy pomocy .psqlrc https:/ /github.com/thoughtbot/dotfiles/blob/ master/psqlrc

  9. pgcli https:/ /github.com/dbcli/pgcli

  10. W jaki sposób zlokalizować wolne zapytania?

  11. None
  12. pg_stat_statements Wymagane: postgresql-contrib

  13. Przykładowa konfiguracja w pliku postgresql.conf

  14. None
  15. SELECT (total_time / 1000 / 60) as total_minutes, (total_time/calls) as

    average_time, query FROM pg_stat_statements ORDER BY 1 DESC LIMIT 100; http:/ /www.craigkerstiens.com/2013/01/10/more-on-postgres- performance/
  16. Jak podejść do tematu analizy i optymalizacji?

  17. Przykładowy EXPLAIN

  18. Czy możemy wyciągnąć więcej informacji na temat zapytania przy pomocy

    EXPLAIN?
  19. None
  20. Dla nieprzekonanych EXPLAIN z poziomu ActiveRecord https:/ /github.com/bradurani/pg-eyeballs

  21. Analiza zapytania - counting

  22. Analiza zapytania - filtrowanie

  23. Analiza zapytania - sortowanie

  24. Optymalizacja zapytania przez dodanie indeksów

  25. Indeksy warunkowe SELECT * FROM events WHERE user_id = 1

    AND active = TRUE; CREATE INDEX index_events_on_created_at ON events USING btree (user_id) WHERE active = TRUE;
  26. https:/ /coderwall.com/p/9hxejg/advanced-rails- indexing-where-clause-postgresql Jak dodać indeks warunkowy w migracji ActiveRecord

  27. Co możemy zrobić kiedy mamy duży zbiór danych i chcemy

    dodać indeks na bazie produkcyjnej?
  28. Jak dodać indeks współbieżnie w migracji ActiveRecord https:/ /robots.thoughtbot.com/how-to-create- postgres-indexes-concurrently-in

  29. Zrozumieć wykorzystanie indeksów SELECT relname, 100 * idx_scan / (seq_scan

    + idx_scan) percent_of_times_index_used, n_live_tup rows_in_table FROM pg_stat_user_tables WHERE seq_scan + idx_scan > 0 ORDER BY n_live_tup DESC; http:/ /www.craigkerstiens.com/2012/10/01/understanding-postgres- performance/
  30. Przydatne linki https:/ /www.postgresql.org/docs/current/static/using-explain.html https:/ /robots.thoughtbot.com/reading-an-explain-analyze-query-plan http:/ /www.craigkerstiens.com/2012/10/01/understanding- postgres-performance/ https:/

    /devcenter.heroku.com/articles/postgresql-indexes http:/ /blog.redpanthers.co/optimising-postgresql-database-query- using-indexes/ http:/ /tatiyants.com/pev/#/plans/new https:/ /www.amazon.com/gp/product/184951030X
  31. Dzięki! Adam Okoń (@adamokon) https:/ /github.com/aokon