Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
/* Oracle 9.2.0.5 */ У меня образовалось два измерения, times и clients которые нельзя отнести к редко меняющимся справочникам, clients растет примерно так же как таблица фактов, times помедленнее на порядок(детализация до часов), но с остальными измерениями не сравнить. У меня есть идея включить справочник клиентов в таблицу фактов(из справочника сделать обычный btree индекс), а для times выделить отдельный tablespace. Расскажите, как решали аналогичную задачу вы в своих проектах? Да, кстати, в примере Oracle таблица фактов имеет на time_id bitmap индекс. Простым расчетом получаем что в год times имеет 24*365=8760 различных time_id. Что-то мне показывает, что btree порвет этот bitmap как тузик грелку, как сделано у Вас? (партицирование по месяцам уменьшит эту цифру в 12 раз, но все равно большая). В возможном измерении clients ситуация будет еще плачевней(еще один довод против измерения clients) "The CBO without stats is like a morning without coffee." T.Kyte ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 11:27 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
Да, кстати, в примере Oracle таблица фактов имеет на time_id bitmap индекс А зачем? bit-map, насколько я понимаю, лучше применять на столбцах с низкой кардинальностью. Что-то мне показывает, что btree порвет этот bitmap как тузик грелку Мне, почему-то, тоже так кажется. Я не уверен, что Oracle использует bit-map при выполнеии джойнов. А, скорее всего, поле time_id у Вас исползуется для соединения с отдельной таблицей фактов. Я бы рассмотрел ещё измерение time как два отдельных - одно для дат, другое для часов. В производительности, скорее всего, сильно выиграете. У меня есть идея включить справочник клиентов в таблицу фактов Сделаете ошибку, на мой взгляд. У вас сколько полей в таблице клиентов? С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 11:47 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
Константин Лисянский А зачем? bit-map, насколько я понимаю, лучше применять на столбцах с низкой кардинальностью. В принципе они правы. Используя partitioning и индексы на раздел в их случае получается 29-31 различных time_id в индексе Константин Лисянский Мне, почему-то, тоже так кажется. Я не уверен, что Oracle использует bit-map при выполнеии джойнов. А, скорее всего, поле time_id у Вас исползуется для соединения с отдельной таблицей фактов. Oracle использует bitmap joins. В моем случае да, измерение имеет time_id = date с точностью до часов(у Oracle до дней) Константин Лисянский Я бы рассмотрел ещё измерение time как два отдельных - одно для дат, другое для часов. В производительности, скорее всего, сильно выиграете. Хм. Весьма здравая идея. Получим кардинальность 24 для часов и 31 для дней, это нормально) Спасибо за интересную идею. Константин Лисянский У меня есть идея включить справочник клиентов в таблицу фактов Сделаете ошибку, на мой взгляд. У вас сколько полей в таблице клиентов? 1 поле - его номер. Посмотрел данные за вчера. Фактов - 13200, клиентов - 13000, за месяц картина примерно такая - (кол(клиенты) = кол(факты)/2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 11:59 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
1 поле - его номер. Что-то тут не так. Неужели номер клиента несёт какую-то смысловую аналитическую нагрузку? Кто-то помнит всех клиентов по номерам? Какой вообще анализ ведётся в разрезе клиентов? Хм. Весьма здравая идея. Получим кардинальность 24 для часов и 31 для дней, это нормально) Спасибо за интересную идею. Не за что. Единственное - таблица фактов станет шире. На каких-то запросах станет работать медленнее. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 15:11 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
Согласен, что разбив время на часы и дни можно получить выигрыш. С другой стороны, как ни парадоксально, bitmap дают прирост производительности даже при условно говоря большом разбросе значений. Главное как этот разброс соотносится с таблицей фактов. Если у вас миллион записаей в таблице и 8760 часов - то в этой ситуации битмап будет работать нормально. Другое дело, что битмапы не любят вставок-удалений-апдейтов, но в DWH это нехарактерно. Еще в Oracle есть полезная штука, называется STAR SCHEME TRANSFORMATION (по дефолту выключена), которая позволяет использовать существующие BITMAP индексы на таблице фактов, даже если запрос идет по неключевому полю словаря. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 15:31 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
Другое дело, что битмапы не любят вставок-удалений-апдейтов, но в DWH это нехарактерно. Всё зависит от того, что это за DWH. Если это Active Data Warehouse, то, оно может обновляться постоянно. Еще в Oracle есть полезная штука, называется STAR SCHEME TRANSFORMATION А что за зверь? Не расскажете вкратце, как работает? А ещё - не расскажете, как Oracle использует bitmap-индекс для джойнов? С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 15:50 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
Константин Лисянский Еще в Oracle есть полезная штука, называется STAR SCHEME TRANSFORMATION А что за зверь? Не расскажете вкратце, как работает? А ещё - не расскажете, как Oracle использует bitmap-индекс для джойнов? http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96520/indexes.htm#98463 Это про bitmap-join, вкратце это индекс на таблице 1 по полю в таблице 2 :-) Про star schema transformation: http://download-east.oracle.com/docs/cd/A81042_01/DOC/server.816/a76994/schemas.htm#11685 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 16:15 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
2 Константин Лисянский Насчет Active Data Warehouse поправка принимается. Конечно все зависит от реальных условий. Но в этом случае желательно часто перестраивать bitmap индексы, иначе все начнет работать медленно. А насчет как это работает. В Oracle есть такой функционал, называется Query Rewrite. То есть в некоторых случаях, оптимизатор Oracle умеет переписывать запрос на эквивалентный, но более производительный. Например на этом основаны запросы к материализованным представлениям. Group by запрос пишется к таблице, а оптимизатор определяет, что существует мат. представление, создержащее те же, но агрегированные данные, и переписывает запрос на другой, например Код: plaintext Код: plaintext В случае star transformation применяется тоже технология QR, но по-другому. Пример из документации. Допустим, у нас есть запрос Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Обратите внимание, что на times тоже стоит BITMAP индекс. Так вот, этот запрос будет переписан на такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. То есть, теперь сначала обсчитываются подзапросы, из которых выпадает список ID из словарей, а по этим ID теперь легко использовать BITMAP индексы в таблице фактов. Если же использовать первоначальный запрос, то использовать битмап индекс будет сложно. Ну, плюс к этому, в Oracle есть еще BITMAP JOINED INDEX-ы, которые позволяют построить индекс между несколькими таблицами и таким образом еще ускорить время выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 16:20 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
А этот Query Rewrite надо включать что ли? Или он всегда включён? Так вот, этот запрос будет переписан на такой Поскольку во втором запросе отсутствуют предложения FROM и GROUP BY не очень понятно, как он соответствует первому. Вроде бы в списке столбцов упоминается несколько таблиц, а условий джойна нету. Есть подзапросы, но в этом случае список после SELECT должен включать столбцы только из одной таблицы. Но тогда непонятно, по каким полям будет группировка, поскольку в исходном запросе группировка выполняется по кварталам, а это поле в таблице измерения, а не в таблице фактов. Может, приведёте более правильный вариант второго запроса? То есть, теперь сначала обсчитываются подзапросы, из которых выпадает список ID из словарей, а по этим ID теперь легко использовать BITMAP индексы в таблице фактов И, всё равно, не очень понятно, как они используются. По каким полям в Вашем примере построены индексы в таблице фактов и в таблицах измерений? И как они используются при джойнах? На мой взгляд, строить bitmap по time_id в таблице измерения бессмысленно, поскольку все значения уникальны, если только, Oracle как-то умеет использовать этот битмап для джойна. По calendar_quarter_desc, по-моему, лучше иметь btree-индекс, поскольку значения тоже полностью уникальные. В общем, вопросов больше, чем ответов. Просветите окончательно, пожалуйста, уж очень интересная тема. Конечно, интересно было бы посмотреть на план запроса, если это, конечно, возможно. Спасибо. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 17:13 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
Константин Лисянский Конечно, интересно было бы посмотреть на план запроса, если это, конечно, возможно. http://lissianski.narod.ru Короче, я приводил линк, приведу текст с линка Код: 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. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 17:46 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
Константин ЛисянскийА этот Query Rewrite надо включать что ли? Или он всегда включён? QR по умолчанию включен, и используется для работы с мат. представлениями, но его можно отключить. А что касается функционала QR для STAR TRANSFORMATION, то он выключен. Константин Лисянский Так вот, этот запрос будет переписан на такойПоскольку во втором запросе отсутствуют предложения FROM и GROUP BY не очень понятно, как он соответствует первому. Дело в том, что запрос как там и написано будет отрабатываться в два прохода - на первом, для которого используется переписывание из таблицы фактов достаются нужные записи, а на втором этапе будет делаться уже GROUP BY, он в данном случае не приведен, так как это все внутри Oracle происходит В списке столбцов несколько таблиц быть не должно, это я тормознул, их туда напечатал, но не стоило. В оригинале в доке там троеточие стоит :) Я поправил уже в сообщении. Спасибо за замечание. Лучшее - враг хорошего :) Константин ЛисянскийИ, всё равно, не очень понятно, как они используются. По каким полям в Вашем примере построены индексы в таблице фактов и в таблицах измерений? И как они используются при джойнах? Индексы построены по полям в таблице фактов. CHANNEL_ID, TIME_ID и так далее. Константин ЛисянскийНа мой взгляд, строить bitmap по time_id в таблице измерения бессмысленно, поскольку все значения уникальны, если только, Oracle как-то умеет использовать этот битмап для джойна. По calendar_quarter_desc, по-моему, лучше иметь btree-индекс, поскольку значения тоже полностью уникальные. В том случае, если в качестве времени используется timestamp, то смысла в BITMAP нет, но если используется день или даже час - как в этом примере, то BITMAP подходит. Так как важен разброс значений относительно количсества записаей в таблице фактов. К тому же STAR трансформация работает только при наличии BITMAP индексов. Даже если в таблице продаж 1 миллион фактов, а в словаре товаров 100 000 записей номенклатуры - BITMAP и в этом случае дает преимущество по скорости выборки. Ну а если в фактической таблице их больше, то тем более. Константин Лисянский Конечно, интересно было бы посмотреть на план запроса, если это, конечно, возможно. В моем случае план выглядит так. (hell привел пример из доки по 9i, а я по 10g. Но суть от этого не меняется.) Код: 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.01.2005, 18:20 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
Константин Лисянский 1 поле - его номер. Что-то тут не так. Неужели номер клиента несёт какую-то смысловую аналитическую нагрузку? Кто-то помнит всех клиентов по номерам? Какой вообще анализ ведётся в разрезе клиентов? Может иметь. Например представьте, что компания предоставляет сервис по переводу денег на счет получателя. Есть только одна достоверная информация - счет получателя. В основном деньги в день идут на разнве счета, но можно выделиь например группы счетов, на которые приходятся 50% платежей, 10ку самых больших сумм перевода на клиента за год итп ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 19:19 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
Ну, если так, то можно его определить и в таблицу фактов. По Кимбалу получится degenerate dimension. Однако всё равно странно выглядит. Обычно про клиента довольно много известно. Когда она появится, придётся опять строить нормальную таблицу для измерения Клиент. 2 Birkhoff, Hell. Спасибо за разъяснения. Я понял как эта штуковина работает. Единственный момент - не очень понятно, как это распараллеливается. И ещё, этот ваш план запросов в Оракле невозможно читать. Не могли они его что ли человеческим языком написать, как, например, в Терадате? Ну, и оптимизатору, очевидно, довольно сложно приходится такой план выбирать. Очевидно, он не во всех случаях оптимален. Интересно, а почему они через декартово произведение не захотели реализовывать star join? Bitmap-индексы, всё-таки поддерживать надо. А если внешних ключей много в таблице фактов, то это, наверняка, достаточно обременительно. Удачи! С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 23:18 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
Константин Лисянский2 Birkhoff, Hell. Спасибо за разъяснения. Я понял как эта штуковина работает. Единственный момент - не очень понятно, как это распараллеливается. В каком смысле как это распараллеливается? Ну например селекты по словарям могут быть распараллелены. Чтение различных частей таблицы фактов тоже. Или я не понял вопроса? Константин ЛисянскийИ ещё, этот ваш план запросов в Оракле невозможно читать. Не могли они его что ли человеческим языком написать, как, например, в Терадате? А можно привести план запроса из Терадаты? Никогда не видел. Константин ЛисянскийНу, и оптимизатору, очевидно, довольно сложно приходится такой план выбирать. Очевидно, он не во всех случаях оптимален. В Oracle используется так называемый cost based optimizer (CBO). Он для каждого запроса строит несколько планов и по каждому плану вычисляет его стоимость (cost) Тот план, который имеет меньшую стоимость и будет выполняться. Поэтому для одного и того же запроса в разное время может использоваться разный план. Например для маленькой таблицы фактов может быть использовано полное сканирование (full scan), а потом, по мере ее увеличения может получиться, что дешевле использовать индексы. Очевидно что оптимизатор иногда может ошибаться :) В Терадате это не так? Интересно, как там это работает? Константин ЛисянскийИнтересно, а почему они через декартово произведение не захотели реализовывать star join? Bitmap-индексы, всё-таки поддерживать надо. А если внешних ключей много в таблице фактов, то это, наверняка, достаточно обременительно. А как тут может помочь декартово произведение? Не совсем понял. Преимущества битмапов еще в том, что на часть запросов можно получить ответы читая только индексы и не залезая в таблицу. (например count-ы различные) Потом накладывать условия на таблицу фактов удобно, например, сделав операцию AND между двумя или большим числом битовых карт - в результате это будет очень быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2005, 11:29 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
Константин Лисянский Ну, и оптимизатору, очевидно, довольно сложно приходится такой план выбирать. Очевидно, он не во всех случаях оптимален. Для того, чтобы наиболее корректно выбрать план, собирается регулярно статистика по данным. Еще вопрос по измерению время, Вы предлагаете создавать данные в измерении загодя, например на год? Я то думал, что проще это делать для каждой записи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2005, 12:53 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
hellЕще вопрос по измерению время, Вы предлагаете создавать данные в измерении загодя, например на год? Я то думал, что проще это делать для каждой записиПочему проще? Или вы о том, что можно вообще не создавать измерение времени? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2005, 12:58 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
Я предлагаю загодя. Просто раз в год загружаете данные на год вперёд и горя не знаете целый год (два года, пятилетку, десять лет... сколько загрузите, в общем). Единственное, по ходу эксплуатации могут возникать новые потребности в атрибутах времени (например, в розничной торговле интересно знать, когда какие праздники, сколько дней осталось от текущего дня до конца недели, месяца, до ближайшего праздника). Таких атрибутов может быть сотни. На мой взгляд, добавлять их нужно по мере необходимости. При этом могут возникать проблемы с тем, что таблицы (таблицы) измерения ВРЕМЯ становятся слишком широкими (у меня есть проект с таблицей уровня дней, имеющей более ста столбцов), тогда надо дальше думать, как с ними работать (вертикальный и горизонтальный партишионинг, индексация и т.д.). Всё это решается. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2005, 13:24 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
2 Константин Лисянский Похоже, что комментариев на тему как работает Терадата я не дождусь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2005, 16:56 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
Извините, меня долго не было. А пост с вопросами про Терадату я как-то пропустил. Сначала про план запроса. Допустим, есть такой запрос: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Если перед ним вписать слово EXPLAIN и запустить, получим вот что: Код: 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. Все шаги, где есть фраза all-AMPs выполняются параллельно (AMP - это единица параллелизма в Терадате). В дополнении к этому на 5 шаге параллельно выполняются два подэтапа (которые в свою очередь тоже выполняются параллельно внутри себя). Надеюсь, это несколько сумбурное объяснение понятно. Ну, и раз уж я привёл текст плана запроса, надо отметить, что оптимизатор в Терадате тоже cost-based. Он был таким с самого появления Терадаты. Можно сказать, что это самый старый и зрелый оптимизатор РСУБД. В плане запроса можно видеть оценку стоимости выполнения шагов запроса. Она выражается в условных временн ы х единицах. BirkhoffВ каком смысле как это распараллеливается? Ну например селекты по словарям могут быть распараллелены. Чтение различных частей таблицы фактов тоже. Или я не понял вопроса? В приведённом выше плане запроса, как я уже упомянул, все шаги выполняются параллельно. Это, вообще, отличительная черта СУБД Терадата - она практически все операции выполняет параллельно. Соответственно, вопрос был о том, как Оракл параллелит шаги запроса в обсуждаемом случае. Очевидно, таблицы и индексы должны быть секционированные (я имею в виду партишионинг). Ну, и план запроса должен показывать какие шаги выполняются параллельно и с какой степенью параллелизма. Вот это я имел в виду, когда задавал вопрос. BirkhoffВ Oracle используется так называемый cost based optimizer (CBO). Он для каждого запроса строит несколько планов и по каждому плану вычисляет его стоимость (cost) Тот план, который имеет меньшую стоимость и будет выполняться. Поэтому для одного и того же запроса в разное время может использоваться разный план. Например для маленькой таблицы фактов может быть использовано полное сканирование (full scan), а потом, по мере ее увеличения может получиться, что дешевле использовать индексы. Очевидно что оптимизатор иногда может ошибаться :) В Терадате это не так? Интересно, как там это работает? Естественно, всё так, помимо этого Терадата всегда знает конфигурацию сервера на котором она работает (частота процессоров, количество узлов, скорость и объём жёстких дисков, количество единиц параллелизма, скорость коммутатора, и ещё множество других параметров, описывающих систему). Соответственно, для одного и того же запроса на одних и тех же данных, но на двух разных системах оптимизатор выберет различные планы запросов. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2005, 15:41 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
авторА как тут может помочь декартово произведение? Не совсем понял. Это ещё одна техника оптимизации star-join. Сначала делается локальная выборка из таблиц измерений (если есть условия WHERE на них), потом вычисляется их декатрово произведение (CROSS JOIN в терминах SQL). Получаем таблицу, которую нужно однократно приджойнить к таблице фактов. Суть в том, чтобы не делать последовательные джойны огромной таблицы фактов с маленькими таблицами измерений. В результате джойн только однократный. При этом, если на таблице фактов есть составной индекс, состоящий из внешних ключей, то он может использоваться при джойне. Надеюсь, объяснил. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2005, 15:49 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
Мда, такой план надо читать на вечер, вместо "Войны и мира". Насчет производительности - в Oracle это зовется cpu costing "The CBO without stats is like a morning without coffee." T.Kyte ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2005, 15:49 |
|
||
|
Измерение times
|
|||
|---|---|---|---|
|
#18+
hellМда, такой план надо читать на вечер, вместо "Войны и мира". Читается, кстати, нормально. Хоть немного и громоздко, зато всё понятно. Для особо эстетствующих есть графическая утилита Teradata Visual Explain со всяческими визуальными наворотами и сервисами типа сравнения планов запросов. hellНасчет производительности - в Oracle это зовется cpu costing Не понял, что зовётся cpu costing. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2005, 16:10 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=32894486&tid=1871826]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 322ms |
| total: | 480ms |

| 0 / 0 |
