Slide 1

Slide 1 text

Call of Postgres: Advanced Operations Alexey Lesovsky [email protected]

Slide 2

Slide 2 text

Troubleshooting: практика 05

Slide 3

Slide 3 text

План 05 dataegret.com Обзор статистики. Настройка логирования. Удаление pg_xlog. Вредные соединения. Bloat таблиц и индексов. Работа с запросами. Неравномерная производительность.

Slide 4

Slide 4 text

Обзор статистики 05 dataegret.com # psql -c "\dv pg_stat*" # psql -c "\df *xlog*"

Slide 5

Slide 5 text

План 05 dataegret.com Обзор статистики. Настройка логирования. Удаление pg_xlog. Вредные соединения. Bloat таблиц и индексов. Работа с запросами. Неравномерная производительность.

Slide 6

Slide 6 text

Настройка логирования 05 dataegret.com По-умолчанию, логирование очень бедное. Логирование запросов. Логирование прочих событий. Подробность логирования.

Slide 7

Slide 7 text

Настройка логирования 05 dataegret.com log_checkpoints = on log_temp_files = on log_lock_waits = on track_io_timings = on track_functions = pl log_min_duration_statements = 1000 log_line_prefix = '%m %p %u@%d from %h [txid: %x vxid: %v] %i ' log_timezone = 'C' log_autovacuum_min_duration = 10000

Slide 8

Slide 8 text

План 05 dataegret.com Обзор статистики. Настройка логирования. Удаление pg_xlog. Вредные соединения. Bloat таблиц и индексов. Работа с запросами. Неравномерная производительность.

Slide 9

Slide 9 text

Удаление pg_xlog 05 dataegret.com Когда нет места на диске, в первую очередь удаляют логи! Постгресовый лог – второе место куда следует смотреть если что-то не так. Не следует выключать postgres после удаления. pg_resetxlog – часть данных о транзакциях будет потеряна или повреждена.

Slide 10

Slide 10 text

План 05 dataegret.com Обзор статистики. Настройка логирования. Удаление pg_xlog. Вредные соединения. Bloat таблиц и индексов. Работа с запросами. Неравномерная производительность.

Slide 11

Slide 11 text

Вредные соединения 05 dataegret.com pg_stat_activity – первое место куда стоит смотреть когда что-то не так. Idle/waiting/long транзакции = плохо. Waiting/long запросы = относительно плохо. pg_locks – для разбора причин блокировок pg_cancel_backend(), pg_terminate_backend() – и никогда KILL -9.

Slide 12

Slide 12 text

План 05 dataegret.com Обзор статистики. Настройка логирования. Удаление pg_xlog. Вредные соединения. Bloat таблиц и индексов. Работа с запросами. Неравномерная производительность.

Slide 13

Slide 13 text

Bloat таблиц и индексов 05 dataegret.com MVCC это прекрасно, но есть и минусы. UPDATE = DELETE + INSERT. Вакуум призван наводить порядок – но есть нюансы. Pgstattuple contrib. Pgcompacttable/pg_reorg.

Slide 14

Slide 14 text

План 05 dataegret.com Обзор статистики. Настройка логирования. Удаление pg_xlog. Вредные соединения. Bloat таблиц и индексов. Работа с запросами. Неравномерная производительность.

Slide 15

Slide 15 text

Работа с запросами 05 dataegret.com И снова pg_stat_activity. pg_stat_statements contrib – следует включать всегда. Используйте отчеты. pg_stat_statements_reset().

Slide 16

Slide 16 text

План 05 dataegret.com Обзор статистики. Настройка логирования. Удаление pg_xlog. Вредные соединения. Bloat таблиц и индексов. Работа с запросами. Неравномерная производительность.

Slide 17

Slide 17 text

Неравномерная производительность 05 dataegret.com Фоновые процессы могут мешать клиентским бэкендам. Присматривайте за autovacuum и checkpointer – они любят диски.

Slide 18

Slide 18 text

Резюме 05 dataegret.com Важно знать про статистику и уметь ею пользоваться. Пишите свои stats views и запросы. Не пренебрегайте постгресовыми логами.

Slide 19

Slide 19 text

Спасибо за внимание dataegret.com [email protected]