Разница в количестве сообщений между RDB и TP при воспроизведении файла журнала из TP в kdb - PullRequest
0 голосов
/ 17 марта 2020

Ссылка - https://code.kx.com/q/wp/rt-tick/#tickerplant -log-replay

The second argument to .u.rep is simpler and would look like:


q)y
11995
`:C:/OnDiskDB/sym2014.08.23
In other words, y is a pair where the last element is the TP logfile and the first element is the number of messages written to this logfile so far.     
This is the number of messages which the RDB will replay. Given the single-threaded nature of this process, the RDB will neither miss nor duplicate any of these messages.

В случае, если RDB не работает почти в конце дня, и мы перезапускаем его, RDB подписывается на TP с использованием .u .rep и получите количество сообщений в файле журнала TP и расположение файла журнала как

q) y
10000000 /-  10 million
`:/location

Скажем, RDB потребовалось 5 минут, чтобы воспроизвести 10 миллионов сообщений из файла журнала, но за эти 5 минут TP получает 1000 сообщений от FeedHandler.
Что будет с этими 1000 сообщениями, где будут жить эти 1000 сообщений и как RDB будет получать сообщения после 10 миллионов сообщений?

1 Ответ

2 голосов
/ 17 марта 2020

Во время воспроизведения RDB сообщение 1000 сохраняется в очереди вывода в процессе установки тикера. Вы можете увидеть очередь вывода с .z.W.

Как только RDB завершит воспроизведение 10-минутного сообщения, он, наконец, начнет получать записи из очереди вывода TP, пока полностью не будет истощен, к тому времени, когда RDB будет полностью захвачен и синхронизирован c с тикантом

...