|
Медленнно отрабатывает запрос к v$db_pipes, в частности к X$KGLOB
|
|||
---|---|---|---|
#18+
Выборка работает по 4-5 секунд и со временем лишь растёт Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Есть ли какая-та возможность либо ускорить данный запрос, либо как-то по другому узнать существует ли пайпа с указанным именем? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2019, 09:35 |
|
Медленнно отрабатывает запрос к v$db_pipes, в частности к X$KGLOB
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2019, 09:36 |
|
Медленнно отрабатывает запрос к v$db_pipes, в частности к X$KGLOB
|
|||
---|---|---|---|
#18+
feagorузнать существует ли пайпа с указанным именем?Зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2019, 09:59 |
|
Медленнно отрабатывает запрос к v$db_pipes, в частности к X$KGLOB
|
|||
---|---|---|---|
#18+
-2-, Если пайпа существует, необходимо вычитывать её Код: plsql 1. 2. 3. 4. 5.
Oracle docIf the pipe that you specify when you call RECEIVE_MESSAGE does not already exist, then Oracle implicitly creates the pipe and waits to receive the message. If the message does not arrive within a designated timeout interval, then the call returns and the pipe is removed ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2019, 11:30 |
|
Медленнно отрабатывает запрос к v$db_pipes, в частности к X$KGLOB
|
|||
---|---|---|---|
#18+
feagor, up, актуально ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2019, 12:40 |
|
Медленнно отрабатывает запрос к v$db_pipes, в частности к X$KGLOB
|
|||
---|---|---|---|
#18+
feagorактуальноПодход с произвольносоздаваемыми пайпами равносилен произвольному DDL. Неподходящее решение для оракла, отсюда и проблемы с временем доступа к v$db_pipes. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2019, 13:09 |
|
Медленнно отрабатывает запрос к v$db_pipes, в частности к X$KGLOB
|
|||
---|---|---|---|
#18+
Сделай свое представление, которое будет обращаться не к X$KGLOB, а к обычной табличке, которую ты будешь время от времени заполнять из X$KGLOB. Не каждую же минуту новые каналы создаются ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2019, 13:52 |
|
Медленнно отрабатывает запрос к v$db_pipes, в частности к X$KGLOB
|
|||
---|---|---|---|
#18+
kglobt03 (sql_id) не заполняется для pipe, соответственно, в X$KGLOB остается KGLNAHSH для быстрой идентификации: Код: plsql 1. 2. 3. 4. 5. 6.
kglnahsh это 4 последних байта kglnahsv: Код: plsql 1. 2. 3. 4. 5. 6. 7.
Чтобы понять, как Oracle считает хэш, я использовал debugtrace из Intel Pintools. Я искал 85b962d8: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
Соответственно, в основе алгоритм md5. Задача нахождения хэша сводится к нахождению входных параметров md5. Вывод gdb для MY_PIPE2: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
В соответствии с http://refspecs.linuxfoundation.org/elf/x86_64-abi-0.99.pdf (page 21): мной была выдвинута гипотеза, что: rdi - context rsi - message rdx - length(message) в kggmd5Update (См., например: https://dev.w3.org/libwww/modules/md5/) На основании гипотезы, я вычислял хэш: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Порядок байтов перевернут также как и для sql_id ( https://carlos-sierra.net/2013/09/12/function-to-compute-sql_id-out-of-sql_text/). 7, вероятно, KGLHDNSP. Соответственно, можно создать расширенную v$db_pipes с kglnahsh и использовать ее на свой страх и риск, до тех пор, пока Oracle не поменяет алгоритм. Тестировал на 12.2. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2019, 17:19 |
|
|
start [/forum/topic.php?fid=52&msg=39835915&tid=1882283]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 156ms |
0 / 0 |