|
|
|
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
|
|||
|---|---|---|---|
|
#18+
Добрый день коллеги. Имеется табличка. 200 Гб. Непартицированная. Что-то типа. Код: plsql 1. 2. 3. 4. 5. 6. 7. Есть еще куча других полей но в данном контексте они не суть важны. Необходимо оптимизировать поиск вида. SELECT * FROM msg_log WHERE dt BETWEEN :d1 AND :d2 AND msg LIKE '%'||:text||'%'; Msg внутри себя хранит текст формата FIX ( https://ru.wikipedia.org/wiki/Financial_Information_eXchange). Например. С той-же вики Код: plsql 1. Теоретически кастомер может лупить в поле текст все что угодно. Но предположительно он будет искать ордеры за вчерашний день d1=trunc(sysdate - 1), и по определенному номеру заявки 11=ATOMNOCCC9990900. Не исключено что он может просто поискать всё по подстроке "%8=FIX.4.2 | 9=178%". Тоесть для сверки чего-либо. Query работает 1 минуту в типичном юзкейсе. По SLA - должно быть несколько секунд. Ну там 2-3. Oracle 11g R2. Oracle Text - не установлен. В рамках мозгового штурма мы рассматривали самые разные варианты вплоть до ElasticSearch, и выноса этой таблички в уровень NoSQL. Но пока нет четкого понимания размеров (сколько), цены апдейта, и лага между обновлением лога и текстового индекса. Ничего с PROD копи-пастить не могу. Сорян. Ограничен NDA. Буду отвечать на словах. Надеюсь на ваше понимание. Рад выслушать ваши советы и узнать как сделать подобный поиск у вас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 14:52 |
|
||
|
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
|
|||
|---|---|---|---|
|
#18+
Сколько записей всего? Сколько записей обычно выводится пользователю? Каково распределение :d1 AND :d2 ? Есть ли индекс по полю dt ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 14:58 |
|
||
|
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
|
|||
|---|---|---|---|
|
#18+
90 млн records. За сутки ~ 600 000 Индекс по дате есть. SYS_EXTRACT_UTC(dt). Распределение очень равномерное. Каждый день - примерно одно и то-же количество записей. Обычно пользователю выдается первые 25 записей из ... хер ево знает сколько возможных. Приложение сделано так что сначала делается count(*) по всей выборке. Оценивается размер для pagination. Потом вторым запросом выводится первые 25 rows. Оба запроса работают одинаковое время (~90 sec). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 15:54 |
|
||
|
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
|
|||
|---|---|---|---|
|
#18+
Распарсить и нормализовать в другую табличку msg. Деномализовать туда же дату. Изменить форму ввода кастомерских запросов на формализованную с парами параметр=значение. Правильные индексы на второй табличке должны позволить свести время поиска до миллисекунд. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 16:13 |
|
||
|
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovРаспарсить и нормализовать в другую табличку msg. На след. неделе я посчитаю количество тегов которые мы используем. Актуальных там будет с пол-сотни. По протоколу их намного больше + еще есть кастомные расширения. Изменить форму ввода кастомерских запросов на формализованную с парами параметр=значение. Это исключено. Кастомер не пойдет на такое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 16:18 |
|
||
|
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
|
|||
|---|---|---|---|
|
#18+
maytonЭто исключено. Кастомер не пойдет на такое. Они всерьёз заставляют пользователей вводить "8=FIX.4.2 | 9=178"? Пофиг: распарсить такой ввод точно так же как msg перед перековыванием параметров в запрос и задача сводится к уже решённой. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 16:21 |
|
||
|
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
|
|||
|---|---|---|---|
|
#18+
Ввести могут 90% тела сообщения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 16:31 |
|
||
|
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
|
|||
|---|---|---|---|
|
#18+
maytonИзменить форму ввода кастомерских запросов на формализованную с парами параметр=значение. Это исключено. Кастомер не пойдет на такое.Парсить пользовательский ввод тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 17:37 |
|
||
|
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
|
|||
|---|---|---|---|
|
#18+
maytonВвести могут 90% тела сообщения. Ну и парсите эти 90% сообщения. Формат то стандартный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 18:46 |
|
||
|
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
|
|||
|---|---|---|---|
|
#18+
Сделайте свой кастомный доменный индекс и не ломайте никому мозг эластиками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 19:39 |
|
||
|
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
|
|||
|---|---|---|---|
|
#18+
как минимум от каунта можно освободиться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 19:44 |
|
||
|
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, Я думал об этом. Не укладываюсь в estimation. Я готов поднять отдельный топик об этом и тихонько кодить с тестами перформанса. Но в рамках данной задачи я поскипаю этот пункт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2018, 10:00 |
|
||
|
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
|
|||
|---|---|---|---|
|
#18+
По топику. Я смигрировал clob =>varchar2(4000). Благо длина сообщений позволяет и я имею еще двукратный запас. Время уменьшилось 10 кратно. Прошу тех кому не лень проверить мою версию. Параметры enable storage in row Basic file Nocaching Nologging. Все остальные по дефолту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2018, 10:06 |
|
||
|
Поиск LIKE по тексту биржевых сообщений FIX-протокола.
|
|||
|---|---|---|---|
|
#18+
По задаче пока отбой. Постановку изменим. LIKE уберем. Поиск вообще пойдет по отдельным полям. Будет композитный индекс который включит в себя набор искомых атрибутов. От темы индексирования фиксов я не отказываюсь но она будет фоновая и долгоиграющая. Чуть позже я сделаю форк на тему Domain Indexes. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 22:31 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39671042&tid=1883738]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
152ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 510ms |

| 0 / 0 |
