|
статистика
|
|||
---|---|---|---|
#18+
Построил статистику по индексам и таблицам - упала производительность...как правильно строить статитсику, что принимать во внимание? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2002, 22:00 |
|
статистика
|
|||
---|---|---|---|
#18+
>как правильно строить статитсику, что принимать во >внимание? Опишите свое приложение. Какой режим оптимизатора? Используются ли хинты в запросах? Найдите наиболее медленные запросы и помотрите план выполнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2002, 22:25 |
|
статистика
|
|||
---|---|---|---|
#18+
в файле ini режим оптимизатора не прописан, значит будет выбираться RBO при отсутствии статистики? Хинтов в запросе нет, в плане выполнения запроса FTS отсутствует. Когда удалил статистику, скорость выполнения запросов увеличилась. Правильно ля я понимаю, что после создания статистики надо заново отлаживать запросы? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2002, 11:43 |
|
статистика
|
|||
---|---|---|---|
#18+
>в файле ini режим оптимизатора не прописан, значит >будет выбираться RBO при отсутствии статистики? это зависит от версии. Кажется начиная с 8-ки по дефолту (независимо от наличия статистики) CBO покажите свои параметры (вот мои, например): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
>Хинтов в запросе нет, в плане выполнения запроса FTS >отсутствует. Когда удалил статистику, скорость >выполнения запросов увеличилась. Приведите план выполнения запроса. После этого можно будет сказать определеннее в чем проблема. >Правильно ля я >понимаю, что после создания статистики надо заново >отлаживать запросы? В общем случае нет. Если статистика собирается регулярно (или когда необходимо), необходимые индесы созданы, ненужные удалены, а также хорошо подобраны параметры влияющие на работу оптимизатора. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2002, 12:55 |
|
статистика
|
|||
---|---|---|---|
#18+
По умолчанию используется CHOOSE. При этом если ни для одной таблицы в запросе не существует статистики, то используется RBO. Если хоть для одной -- то CBO с расчетом статистики для всех таблиц из запроса, не имеющих статистики. Вообще, использовать CHOOSE не рекомендуется. Лучше явно указывать оптимизатор. Ну а насчет CBO можно сказать, что это старая проблема Oracle. Им до сих пор не удалось создать хороший CBO. В системах, для которых созданы хорошие CBO (например, Informix), уже давно отказались от использования RBO. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2002, 13:54 |
|
статистика
|
|||
---|---|---|---|
#18+
>Ну а насчет CBO можно сказать, что это старая проблема >Oracle. Им до сих пор не удалось создать хороший CBO. А мне вот нравится оракловский CBO. Глупо только, что они для optimizer_index_cost_adj выбрали дефолтное значение 100. Не все ж data warehouse юзают. Вообще если вы так утверждаете, то приведите, пожалуйста примеры того, что CBO плох. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2002, 14:44 |
|
статистика
|
|||
---|---|---|---|
#18+
>Вообще если вы так утверждаете, то приведите, пожалуйста примеры того, что CBO плох. А разве данная тема не является ответом на ваш вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2002, 15:38 |
|
статистика
|
|||
---|---|---|---|
#18+
>А разве данная тема не является ответом на ваш вопрос? Нет конечно, т.к. мы все-таки не выяснили в чем причина. Я предпочитаю владеть полной информацией прежде чем делать какие-либо выводы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2002, 15:43 |
|
статистика
|
|||
---|---|---|---|
#18+
2 Noname посмотрите 9-ку. Там вопрос связных переменных решен насколько я знаю ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2002, 15:46 |
|
статистика
|
|||
---|---|---|---|
#18+
По опыту могу сказать, что для Oracle лучше использовать RBO с хинтами. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2002, 15:59 |
|
статистика
|
|||
---|---|---|---|
#18+
У меня противоположное мнение (также по опыту) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2002, 16:14 |
|
статистика
|
|||
---|---|---|---|
#18+
>По опыту могу сказать, что для Oracle лучше >использовать RBO с хинтами. Возможно это позволит вам максимально оптимизировать текущие запросы, но сам по себе этот путь тупиковый. Потому что используя хинты вы фактически используете CBO, т.е. сбор статистики в этом случае "испортит" ваш план выполнения. Т.е. вам надо самостоятельно следить за ростом базы и настраивать до 100% запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2002, 16:15 |
|
статистика
|
|||
---|---|---|---|
#18+
2 Noname А как быть в типичнейшей ситуации - приложение динамически генерирует условие для фильтра ? Генерировать хинт ? Закладываться на жесткий набор объектов БД ( индексы и их имена в хинтах ) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2002, 17:33 |
|
статистика
|
|||
---|---|---|---|
#18+
завтра покажу все данные, которые нужны..сервер на работе остался сегодня смотрел планы запросов в зависимости от наличия статистики или её отсутствия..при наличии статистики появляются FTS ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2002, 23:25 |
|
статистика
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2002, 23:32 |
|
статистика
|
|||
---|---|---|---|
#18+
2ora600: Панацеи не существует! Если-бы какой-то оптимизатор однозначно превосходил другой, то этого другого не существовало-бы. Тем не менее RBO+hint=CBO(all_rows) обычно обеспечивает немного меньшую стоимость, чем просто CBO(all_rows). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2002, 10:48 |
|
статистика
|
|||
---|---|---|---|
#18+
>сегодня смотрел планы запросов в зависимости от >наличия статистики или её отсутствия..при наличии >статистики появляются FTS Ну скорее всего то о чем я и говорил: Код: plaintext
Поставьте от 1 до 5 и посмотрите план (со статистикой естественно). Лучше сначала только для сессии в которой план смотрите. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2002, 11:48 |
|
статистика
|
|||
---|---|---|---|
#18+
а как лучше статистику собирать? там несколько параметров (SIZE, Table, Ibdex, compute, estimate.....)? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2002, 12:50 |
|
статистика
|
|||
---|---|---|---|
#18+
>а как лучше статистику собирать? там несколько >параметров (SIZE, Table, Ibdex, compute, estimate.....)? Сбор статистики связан с некоторыми накладными расходами (например FTS), поэтому если есть узкие места, а таблицы очень большие, то статистику надо собирать по минимуму - только столько, сколько необходимо для нормальной работы оптимизатора (используя estimate, samle size и т.д.) Если же не критично, то лучше всего с использованием процедуры DBMS_STATS.GATHER_SCHEMA_STATS с параметрами по умолчанию. Можно организовать job и запускать на ночь. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2002, 13:09 |
|
статистика
|
|||
---|---|---|---|
#18+
потестировал запрос стал работать несколько быстрее, но не догнал по производительности RBO. Лучше всего получилось при optimizer_index_cost_adj=1 optimizer_index_caching=90 может еще что подкрутить? какие счетчики желательно проверить? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2002, 18:02 |
|
статистика
|
|||
---|---|---|---|
#18+
>может еще что подкрутить? какие счетчики желательно >проверить? дык не видя планов выполнения запросов сказать ничего нельзя. По крайней мере я не оракУл :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2002, 18:48 |
|
статистика
|
|||
---|---|---|---|
#18+
тело запроса Код: 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.
на базе без статистики Код: 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.
на базе со статистикой Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2002, 00:42 |
|
статистика
|
|||
---|---|---|---|
#18+
на первый взгляд осталось только сделать: hash_join_enabled = false и планы выполнения станут одинаковыми. Кстате, а какой у вас hash_area_size? Возможно, достаточно его просто уменьшить. Вообще, интересно было бы услышать мнения других участников форума насчет hash join против nested loops. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2002, 19:59 |
|
статистика
|
|||
---|---|---|---|
#18+
Если сравнить статистику, то разница составляет 20 блоков. Думаю они практически одинаково отрабатывают по времени. Вся "мощь" RBO как правило сводится к нехитрому факту: "хватаю индекс если попадется на пути". Поэтому обычно план выглядит как гирлянда из NN. Такие запросы (соединение 16 таблиц!!) в совокупности со слабой подсистемой ВВ (усредненно) и сабоптимальной настройкой мультиблочного чтения как правило будут работать лучше по сценарию, описанному выше. 2dba: hash join - более эффективное соединение таблиц чем NN если на выходе достаточно большой сет строк и/или предикаты не селективны. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2002, 12:50 |
|
статистика
|
|||
---|---|---|---|
#18+
>2dba: hash join - более эффективное соединение таблиц >чем NN если на выходе достаточно большой сет строк >и/или предикаты не селективны. Насчет неселективных предикатов я согласен, а вот в случаи наличия селективных предикатов/индексов и больших таблиц, то тут по-моему hash join будет проигрывать. Вот разгребусь немного с работой - попробую примерчик сделать :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2002, 14:33 |
|
|
start [/forum/topic.php?fid=52&msg=32046882&tid=1993143]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
55ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 278ms |
total: | 438ms |
0 / 0 |