|
|
|
Фактор кластеризации - перестройка таблицы
|
|||
|---|---|---|---|
|
#18+
Уважаемые коллеги, добрый день. В журнале "Форс" в статье про оптимизацию подзапросов в разделе 5 "Индекс имеет большой фактор кластеризации CLUSTERING_FACTOR" прочитал такую фразу: Валерий МихеичевПервое решение при большом ФК является убрать существующий индекс как не эффективный. Второе решение, если данный индекс наиболее часто применяется в запросах и он нужен, то перестроить структуру таблицы таким образом, чтобы строки в блоках таблицы были упорядочены в том же порядке, в котором расположена информация по данным строкам в индексе, т.е. сделать кластерными блоки таблицы, уменьшив таким образом число перемещений от одного блока к другому при работе индекса. А может ли кто-нибудь показать пример такой перестройки? Так сказать для полноты картины? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 14:33 |
|
||
|
Фактор кластеризации - перестройка таблицы
|
|||
|---|---|---|---|
|
#18+
Тока надо не забывать, что если по одному индексу CF улучшается, то, как правило, по другим портится Код: 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. 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 15:20 |
|
||
|
Фактор кластеризации - перестройка таблицы
|
|||
|---|---|---|---|
|
#18+
Вячеслав, спасибо огромное! Пошел внимательно изучать.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 16:21 |
|
||
|
Фактор кластеризации - перестройка таблицы
|
|||
|---|---|---|---|
|
#18+
Desert_Nomadвнимательно изучать....В статье озвучено, для каких способов обращения к индексу стоит переживать за "ФК"? (ох уж эти изобретатели провокационных аббревиатур) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 16:48 |
|
||
|
Фактор кластеризации - перестройка таблицы
|
|||
|---|---|---|---|
|
#18+
-2-В статье озвучено, для каких способов обращения к индексу стоит переживать за "ФК"? Ну тогда поделюсь линком, да не сочтут меня достойные модераторы за рекламщика сторонних ресурсов и не буду я за это больно бит, может даже ногами (с): http://www.fors.ru/upload/magazine/07/http_text/russia_mihjeichev_plan_recomendations.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 00:06 |
|
||
|
Фактор кластеризации - перестройка таблицы
|
|||
|---|---|---|---|
|
#18+
Desert_Nomad, начал было комментировать, но отвлекли по работе и теперь уже просто лень. В общем, читайте лучше Льюиса, а то так даже правильно читать планы не научитесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 01:55 |
|
||
|
Фактор кластеризации - перестройка таблицы
|
|||
|---|---|---|---|
|
#18+
У Льюиса в книжке был даже запрос которым можно посчитать фактор кластеризации. Может показаться бессмысленной вещью, но может пригодится, если например, у вас будет подозрение, что цифры резко завысил какой-то определенный кусок таблицы - можно будет его найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 15:44 |
|
||
|
Фактор кластеризации - перестройка таблицы
|
|||
|---|---|---|---|
|
#18+
Из статьи по ссылке: авторИмеются сильные индексы, но они соперничают между собой. Это происходит тогда, когда в условии where имеется строка, в которой столбец одной таблицы равен столбцу другой таблицы. При этом на обоих столбцах построены сильные или уникальные индексы. Например, в условии Where имеется строка AND A.ISN=B.ISN. При этом оба столбца ISN разных таблиц имеют уникальные индексы. Однако, эффективно может работать индекс только одного столбца (левого или правого в равенстве). Индекс другого столбца, в лучшем случае, даст FAST FULL SCAN. В этой ситуации, чтобы эффективно заработали оба индекса, потребуется вести дополнительное условие для одного из столбцов. Очень странная манера изложения, как по мне. Если я понял смысл этого текста, то он заключается в том что "не забудьте вставить в запрос все необходимые предикаты". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 15:48 |
|
||
|
Фактор кластеризации - перестройка таблицы
|
|||
|---|---|---|---|
|
#18+
можно еще добавить, что CF не имеет значение для индексов доступ, к которым происходит по "INDEX UNIQUE SCAN" и в примере Вячаслава, скорее всего имело бы смысл пересоздать таблицу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 21:06 |
|
||
|
Фактор кластеризации - перестройка таблицы
|
|||
|---|---|---|---|
|
#18+
Desert_NomadНу тогда поделюсь линком, да не сочтут меня достойные модераторы за рекламщика сторонних ресурсов и не буду я за это больно бит, может даже ногами (с): http://www.fors.ru/upload/magazine/07/http_text/russia_mihjeichev_plan_recomendations.html все равно лень комментировать все ошибки там, поэтому отвечу только по поводу популярного заблуждения http://www.fors.ru/upload/magazine/07/http_text/russia_mihjeichev_plan_recomendations.html При анализе план просматриваетcя снизу вверх . Читай тут: 19813880 Продублирую с небольшой правкой и дополнением: Проще всего объяснять, что каждая строка плана - это вызов некой функции. Собственно, V$SQL_PLAN.OPERATION - это название функции, а V$SQL_PLAN.OPTIONS - это параметр, определяющий ее алгоритм/подфункцию. чуть подробнееНапример, операция "TABLE ACCESS" имеет следующие варианты: BY GLOBAL INDEX ROWID BATCHED BY INDEX ROWID BY INDEX ROWID BATCHED BY LOCAL INDEX ROWID BATCHED BY USER ROWID CLUSTER FULL SAMPLE А у INDEX: FAST FULL SCAN FULL SCAN FULL SCAN (MIN/MAX) RANGE SCAN RANGE SCAN (MIN/MAX) RANGE SCAN DESCENDING SAMPLE FAST FULL SCAN SKIP SCAN UNIQUE SCAN Т.к. алгоритмы совершенно разные, то и смысла называть только OPERATION без OPTIONS не имеет, поэтому DBMS_XPLAN как и другие инструменты их конкатенируют, например TABLE ACCESS FULL, TABLE ACCESS BY INDEX ROWID. И мы говоря о FULL TABLE SCAN имеем ввиду функцию TABLE ACCESS с параметром FULL. Соответствие названий некоторых операций и реальных сишных функций можно увидеть в скрипте у Танела Подера: http://blog.tanelpoder.com/files/scripts/tools/unix/os_explain Короткий пример из os_explain Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. При необходимости каждая строка плана запускает, останавливает и обрабатывает дочерние операции. А каким именно образом и сколько раз она их запускает зависит от самой операции и ее параметров. пара примеровНапример, HASH JOIN сначала вычитывает все результаты первой дочерней операции(build table) и только потом запускает вторую (prob table), a NESTED LOOPS получает строку из первой дочерней и для нее запускает вторую дочернюю, затем запускает снова первую, чтобы получить очередную строку и для нее снова вторую и тд... Или еще более простой пример с select * from dual where 1=0 Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. В данном случае операция FILTER не запускает дочерний TABLE ACCESS FULL, т.к. условие ложно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 21:26 |
|
||
|
Фактор кластеризации - перестройка таблицы
|
|||
|---|---|---|---|
|
#18+
Коллеги, всем спасибо за комментарии, xtender - у отдельно - за ссылки и дополнительные сведения. Уважаемый Вячеслав уже дал то, что меня конкретно интересовало, фактически тему можно закрывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 10:00 |
|
||
|
Фактор кластеризации - перестройка таблицы
|
|||
|---|---|---|---|
|
#18+
мне одному показалось, что статья по ссылке, мягко говоря, "никакая" ? Больше похоже на подборку "наиболее частых заблуждений в области оптимизации запросов".... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 11:36 |
|
||
|
Фактор кластеризации - перестройка таблицы
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эхмне одному показалось, что статья по ссылке, мягко говоря, "никакая" ? Больше похоже на подборку "наиболее частых заблуждений в области оптимизации запросов".... Да нет, просто некий разработчик с опытом 2-5 года поделился своими мыслями. Понятно что с высоты 10-летнего и более опыта многие из этих мыслей выглядят неверными, а то и глупыми. Это нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 12:17 |
|
||
|
Фактор кластеризации - перестройка таблицы
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эхмне одному показалось, что статья по ссылке, мягко говоря, "никакая" ? Больше похоже на подборку "наиболее частых заблуждений в области оптимизации запросов"....Большая часть - это не то, чтобы прямо совсем заблуждения, а просто эдакая полуправда - они применимы только в очень узком диапазоне очень специфических проблем: чуть-чуть другие условия и это превратится во "вредные советы". Это как приметы: красный безоблачный закат - значит погода завтра будет теплая и ветреная Собственно, это то за что так ругают Бурлесона. В целом, у нас у всех, независимо от опыта и знаний, есть какие-то свои "приметы", например, я недавно траблшутил "ORA-01483: invalid length for DATE or NUMBER bind variable" после апгрейда на 12.2 - казалось бы типичная проблема приложения, но начал разбираться и оказалось, что проблема не в приложении, а оракловом баге (он тупо перемешивал порядок биндов при определенных условиях) зы. В принципе, я очень уважаю тех, кто генерирует свой уникальный контент, а не копипастит и не пересказывает чужое с добавлением ошибок, вызванных непониманием оригинальной статьи. Вообще не понимаю, зачем пересказывать статьи топовых спецов... А ведь большинство оракловых конференций и блогов из этого и состоят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 13:31 |
|
||
|
Фактор кластеризации - перестройка таблицы
|
|||
|---|---|---|---|
|
#18+
xtenderне понимаю, зачем пересказывать статьи топовых спецов...Школьная привычка писать контрольную после изучения материала. Только оценки ставит не один учитель, а множество учеников. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 13:52 |
|
||
|
Фактор кластеризации - перестройка таблицы
|
|||
|---|---|---|---|
|
#18+
xtenderВообще не понимаю, зачем пересказывать статьи топовых спецов... Статьи топовых спецов обычно ориентированы на специалистов и потому нередко требуют заметного бэкграунда просто для понимания написанного... и нередко там "многабукф". Потому трансляция статьи top-спеца middle-спецом для future-спеца в виде краткого резюме "гражданочка, ты туда не хады, ты сюда хады, снег башка попадет - савсем мертвый будэшъ" (с) смысл имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 14:55 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39592255&tid=1884518]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
35ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 303ms |

| 0 / 0 |
