Переиграй тплог в кдбб - PullRequest
       6

Переиграй тплог в кдбб

0 голосов
/ 26 ноября 2018

Я попытался воспроизвести tplog в kdb.Данные занимают около 1 ГБ, но они занимают целый день и по-прежнему не могут завершить воспроизведение.

В одной из таблиц есть два ключа, и оба имеют значение string.Я не уверен, является ли это причиной, почему это занимает вечность.Я также использую upsert вместо insert.Что я должен изменить, чтобы ускорить его воспроизведение?

Что я думаю, это изменить функцию upd.поэтому при загрузке в память эти два столбца сначала изменяются на symbol.

1 Ответ

0 голосов
/ 28 ноября 2018

Как обсуждалось в комментариях, если целью использования таблицы с ключами при использовании upserting было создание уникальной строки для каждого ключа (ключей), то может быть более эффективно (когда речь идет о воспроизведении журнала) начать с таблицы без ключей иустановите upd на insert, а когда воспроизведение завершено, сгруппируйте таблицу по ключам, например,

`keyCol1`keyCol2 xkey select from replayedTable where i=(last;i) fby ([]keyCol1;keyCol2)

Обратите внимание, что insert нельзя использовать с таблицей с ключами, поскольку она не позволяетвставить, когда ключ уже существует в таблице.

Причина, по которой оригинал upsert в таблице ключей был медленной, возможно, была связана с количеством ключей и неэффективностью поиска списка ключей (в частности, строк) в каждом upsert.Хотя это всего лишь предположение

...