172 похожих чатов

Всем привет. Выполняю один и тот же запрос на мастере,

синк реплике и асинк реплике.

explain (analyse, verbose, buffers)
select count(*), state
from megapm.transactions
where state in (1, 2, 5)
group by state;
Результаты:

Мастер
GroupAggregate (cost=0.38..5.37 rows=1 width=10) (actual time=13.695..14.307 rows=3 loops=1)
Output: count(*), state
Group Key: transactions.state
Buffers: shared hit=4053
-> Index Only Scan using transactions_state_updated_at_idx_not_final on megapm.transactions (cost=0.38..5.35 rows=1 width=2) (actual time=4.206..14.268 rows=94 loops=1)
Output: state, updated_at
Index Cond: (transactions.state = ANY ('{1,2,5}'::integer[]))
Heap Fetches: 214
Buffers: shared hit=4053
Planning:
Buffers: shared hit=28
Planning Time: 1.155 ms
Execution Time: 14.394 ms

синк реплика:
GroupAggregate (cost=0.38..5.37 rows=1 width=10) (actual time=2563.073..2569.132 rows=2 loops=1)
Output: count(*), state
Group Key: transactions.state
Buffers: shared hit=619674
-> Index Only Scan using transactions_state_updated_at_idx_not_final on megapm.transactions (cost=0.38..5.35 rows=1 width=2) (actual time=1197.508..2569.044 rows=75 loops=1)
Output: state, updated_at
Index Cond: (transactions.state = ANY ('{1,2,5}'::integer[]))
Heap Fetches: 630564
Buffers: shared hit=619674
Planning:
Buffers: shared hit=186
Planning Time: 10.355 ms
Execution Time: 2569.679 ms

асинк реплика:
GroupAggregate (cost=0.38..5.37 rows=1 width=10) (actual time=678.281..680.183 rows=3 loops=1)
Output: count(*), state
Group Key: transactions.state
Buffers: shared hit=619963
-> Index Only Scan using transactions_state_updated_at_idx_not_final on megapm.transactions (cost=0.38..5.35 rows=1 width=2) (actual time=344.970..680.140 rows=100 loops=1)
Output: state, updated_at
Index Cond: (transactions.state = ANY ('{1,2,5}'::integer[]))
Heap Fetches: 630820
Buffers: shared hit=619963
Planning:
Buffers: shared hit=145
Planning Time: 1.686 ms
Execution Time: 680.223 ms
Вижу существенные различия в Heap Fetches и shared hit.
Как так получилось? И как этого избежать?

2 ответов

18 просмотров

Я вот вижу существенные различия в результате (rows=3 vs rows=2) — вот это и смотрите, как там получилось. Но, на самом деле, по дефолту синк реплика только принимает WAL синхронно (чтобы потом догнаться), отставать она можэт на сколько угодно.

Ilya Anfimov
Я вот вижу существенные различия в результате (row...

Я их не одновременно запускал, но с разницей не больше минуты. Эти записи меняются активно и в какой-то момент со state = 1 вполне могло быть 0 строк. Но в то же время общее количество строк не больше 100, и отставание реплики не объясняет почему на мастере Heap Fetches: 214 Buffers: shared hit=4053 а на репликах Heap Fetches: 630564 Buffers: shared hit=619674 Вакуум же только на мастере должен работать?

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта