|
Explain при отсутствии физического доступа к серверу - как?
|
|||
---|---|---|---|
#18+
Требуется: получить планы нескольких запросов средствами чисто клиентских программ. Informix-сервер физически находится у заказчика в другом городе и удаленного доступа к компьютеру нет. В наличии имеется только SQLSquirrel и возможность подсоединиться к серверу и выполнять SQL-statements/queries. С Informix не знаком. Гугление принесло - директиву SET EXPLAIN, что позволяет получить план в файле на компьютере сервера, что не подходит по ограничениям безопасности у заказчика. - ссылки на утилиту SQL Trace (вроде бы входит в поставку Информикса?) но доступа к штатным средствам администрирования у нас нет. Возможно ли получить планы через SQLSquirrel? или какие-то дополнительные утилиты, не требующие доступа к компьютеру сервера? Для сравнения, в Оракле команда EXPLAIN PLAN записывает план в таблицу, из которой его можно прочитать обычным SELECT ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2011, 13:23 |
|
Explain при отсутствии физического доступа к серверу - как?
|
|||
---|---|---|---|
#18+
Sergey Balter, В новых версиях Информикса можно использовать встроенную функцию EXPLAIN_SQL(). Ниже ее пример использования через JDBC, использовал copy/paste сам не проверял, возможны ошибки: Код: plaintext 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. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2011, 14:49 |
|
Explain при отсутствии физического доступа к серверу - как?
|
|||
---|---|---|---|
#18+
Sergey Balter, версию Информикс-сервера скажи, а? А то Оракл 5 тоже не очень план запроса в таблички писал... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2011, 14:50 |
|
Explain при отсутствии физического доступа к серверу - как?
|
|||
---|---|---|---|
#18+
Informix 11 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2011, 15:12 |
|
Explain при отсутствии физического доступа к серверу - как?
|
|||
---|---|---|---|
#18+
Sergey BalterInformix 11 11.10, 11.50, 11.70? :) Вобщем, копать в сторону вариантов: 1. Запросы к БД sysmaster, таблица syssqexplain. 2. Установить у себя OpenAdmin Tool 3. параметр конфигурации SQLTRACE, task('set sql tracing on'); EXECUTE FUNCTION task(“set sql user tracing on”,47), таблицы syssqltrace... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2011, 15:46 |
|
Explain при отсутствии физического доступа к серверу - как?
|
|||
---|---|---|---|
#18+
АнатоЛой, я могу ошибаться, но по-моему с помощью sysmaster:syssqexplain и конфигурационного параметра SQLTRACE нельзя получить план запроса, который нужен топик-стартеру, да и судя по исходному сообщению админы закрыли доступ к серверу , я думаю, в том числе и к sysmaster :) С уважением, Виктор ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2011, 18:58 |
|
Explain при отсутствии физического доступа к серверу - как?
|
|||
---|---|---|---|
#18+
victor16АнатоЛой, я могу ошибаться, но по-моему с помощью sysmaster:syssqexplain и конфигурационного параметра SQLTRACE нельзя получить план запроса, который нужен топик-стартеру, да и судя по исходному сообщению админы закрыли доступ к серверу , я думаю, в том числе и к sysmaster :) С уважением, Виктор По скудной информации от ТС (ибо "С Informix не знаком") наши предположения друг-друга стоят :). ТС не сказал: 1. для чего ему нужен "план запроса". Предположение: для оптимизации. Вывод: если мозги на месте, то и syssqexplain пригодится. 2. что sysmaster точно закрыта... У ТС нет "удалённого доступа" (в моём понимании это RDP, ssh и прочее из этой категории :). Не понял только, почему решили, что SQLTRACE не поможет? Параметр доступен админу, не сказано что к админу "нет доступа". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2011, 20:15 |
|
Explain при отсутствии физического доступа к серверу - как?
|
|||
---|---|---|---|
#18+
АнатоЛойНе понял только, почему решили, что SQLTRACE не поможет? Потому что конфигурационный параметр SQLTRACE позволяет управлять трассировкой SQL, т.е. кто когда во-сколько какой SQL-оператор выполнил, какие таблицы при этом были затронуты, и какие ресурсы были выделены, вплоть до того какие значения имели переменные при исполнении хранимых процедур, но план запроса он не позволяет получить, впрочем я могу ошибаться. Также мне кажется, что не стоит включить трассировку SQL для всех запросов на сервер ради получения плана запроса всего одной выборки, поскольку это может снизить производительность сервера. Я пока знаю только 2 легальных пути получения плана запроса клентом: 1) выполнить SET EXPLAIN и просить админа достать файл с сервера 2) использовать встроенную функцию explain_sql(), я привел пример с JDBC, поскольку необходимый топикстартеру инструмент SQuirreL SQL is an open-source Java SQL Client program for any JDBC compliant database. Кстати, вопрос к Sergey Balter: удалось ли получить план запроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2011, 20:54 |
|
Explain при отсутствии физического доступа к серверу - как?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2011, 22:01 |
|
Explain при отсутствии физического доступа к серверу - как?
|
|||
---|---|---|---|
#18+
victor16АнатоЛойНе понял только, почему решили, что SQLTRACE не поможет? Потому что конфигурационный параметр SQLTRACE позволяет управлять трассировкой SQL, т.е. кто когда во-сколько какой SQL-оператор выполнил, какие таблицы при этом были затронуты, и какие ресурсы были выделены, вплоть до того какие значения имели переменные при исполнении хранимых процедур, но план запроса он не позволяет получить, впрочем я могу ошибаться. 1. Да, syssqltrace* не полноценная замена SET EXPLAIN..., это даже больше , ибо для проведения оптимизации может дать то, чего не даст SET EXPLAIN. SQLTRACE включает и трассировку запросов. Информация о трассировке осаждается в таблицах syssqltrace, syssqltrace_info, syssqltrace_iter, syssqltrace_hvar. onstat -g his, который выводит информацию "из этих таблиц", в том числе выводит следующее: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
victor16Также мне кажется, что не стоит включить трассировку SQL для всех запросов на сервер ради получения плана запроса всего одной выборки, поскольку это может снизить производительность сервера. Трассировку можно включить SQLTRACE "глобально" либо для "сеансов". Кроме того, даже включенную можно отключить через SQL-запрос. Кроме того, включать и выключать можно через SQL отдельно для каждого сеанса . victor16Я пока знаю только 2 легальных пути получения плана запроса клентом: 1) выполнить SET EXPLAIN и просить админа достать файл с сервера 2) использовать встроенную функцию explain_sql(), я привел пример с JDBC, поскольку необходимый топикстартеру инструмент SQuirreL SQL is an open-source Java SQL Client program for any JDBC compliant database. Про "легальные пути" - не понял. Есть вариант "не просить админа и взломать сервак"? :) Так я же поэтому и рассказываю про другие варианты :). Я, например, про explain_sql() ужо забыл, поскольку ни IBM Data Studio, ни Java, ни даже OAT активно не пользую. Хотел даже на досуге привести пример с получением файла типа EXPLAIN на основании syssqltace*, но чувствую, что будет это не скоро. Поэтому даю только что найденную ссылку для ищущих . Чтобы привести в свою пользу ещё формальные аргументы, вот цитата из этого источника: авторThe syssqltrace_iter table is yet another pseudo table that sqltracing creates and uses for the tracing mechanism. The syssqltrace_iter tables stores the SQL query plan and iterators information that is also used by onstat -g his to display the iterators and explain portion of the onstat output. This table also allows you to run SQL statements to query the table data. This is extremely useful if you just want to know the iterator plan and explain information for a specific SQL, which you need to obtain by running a query using the sql_id on this table instead of using onstat, which prints all of the tracing information together. Вкратце: "в таблице syssqltrace_iter хранится план запроса и " даже больше :). "Можете с помощью SQL поиметь любимую информацию в удобной позе удобном виде"... Отаке... victor16Кстати, вопрос к Sergey Balter: удалось ли получить план запроса? Да-да-да... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2011, 22:20 |
|
Explain при отсутствии физического доступа к серверу - как?
|
|||
---|---|---|---|
#18+
AndronSergey Balter, План запроса? Легко! Sergey Balter, как не очень знакомого с Informix, предупреждаю - решения Andron не заточено под Винду, о чём написано в статье и видно из текста ХП, а также нужен Informix 11.50xC6+... Andron, это пять (поскольку готовое и работающее решение, пусть и с упомянутыми ограничениями...). Но всё равно в syssqltrace больше информации для оптимизации :). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2011, 22:31 |
|
Explain при отсутствии физического доступа к серверу - как?
|
|||
---|---|---|---|
#18+
AndronSergey Balter, План запроса? Легко! Справедливости ради надо отметить, что это то же самый SET EXPLAIN. В статье приведен способ доставки файлов с сервера клиенту через EXTERNAL TABLEs. Могу предложить дополнительно: создать буферную таблицу и вставить содержимое файла через команду SYSTEM, которая в свою очередь вызывает dbaccess с соответствующей командой, примерно так: Код: plsql 1. 2. 3.
может использоваться практически во всех версиях INFORMIX. Недостаток - необходимо как-то экранировать неалфавитные символы в файле. использование пары filetoblob(...,"SERVER") / blobtofile(...,"CLIENT") может использоваться без ограничения на всех версиях Informix, имеющих поддержку BLOB. Оба способа предполагают наличие у юзера прав на чтение или запись файлов из файловой системы, что у обычного пользователя бывает не всегда. Правда, по-моему, топик-стартеру это уже не нужно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2011, 15:16 |
|
Explain при отсутствии физического доступа к серверу - как?
|
|||
---|---|---|---|
#18+
victor16Правда, по-моему, топик-стартеру это уже не нужно :) Зато сколько нового для себя открыли участники обсуждения! :). Я, в частности, не задумывался о полезности использования external table, а тут как раз проект по интеграции систем, в одной из систем используется Informix. Муссируется тема bulk insert для повышения производительности. Стоит проверить и вариант с create external :). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2011, 12:07 |
|
Explain при отсутствии физического доступа к серверу - как?
|
|||
---|---|---|---|
#18+
мечта: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2011, 16:16 |
|
Explain при отсутствии физического доступа к серверу - как?
|
|||
---|---|---|---|
#18+
АнатоЛойМуссируется тема bulk insert для повышения производительности. Стоит проверить и вариант с create external :). Проверил... Нравицца! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2011, 16:26 |
|
|
start [/forum/topic.php?fid=44&msg=37572520&tid=1607218]: |
0ms |
get settings: |
8ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
43ms |
get topic data: |
2ms |
get forum data: |
0ms |
get page messages: |
249ms |
get tp. blocked users: |
0ms |
others: | 278ms |
total: | 587ms |
0 / 0 |