Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
Предположим, есть БД на MSSQL2k. 4 таблицы: Время, Продукты, Клиенты, Факты, на основании которых строится OLAP куб на MSAS2k. Насколько важно для MSAS иметь в таблицах ключи и индексы? В данный момент между таблицами существуют только логические связи типа Клиент.id = Факт.Клиент, не выраженные никак ни в ключах, ни в индексах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 15:26 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
Важно для MS AS. Ещё важнее для Вас:-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 15:39 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
мне конкретно это не важно. база перевалочная, и с ней работает только MSAS. а вот для него почему важно? подробнее кто может на это тему написать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 15:46 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
профайлером посмотрите какие запросы передаёт МС АС сиквелу, а потом сравните их планы выполнения в QA Если вам лень, могу предположить результат: запросы примерно такие Код: plaintext index seek на несколько порядков быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 16:44 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
А Вы уверены, что в Вашей базе данные не дублируются и ссылочная целостность не нарушена? Как Вы это обеспечиваете? Если не ключами и индексами, то это можно делать на этапе ETL. Если делаете на этапе ETL, то, возможно, можно от них отказаться. Однако, я не уверен, что AS не использует индексы при построении куба. Таким образом, ответ такой - индексы и ключи нужны для обеспечения качества данных, нужны ли она AS, я не знаю. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 16:47 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
На мой взгляд ключи и индексы нужны ,если используешь ROLAP или HOLAP ,так как MOLAP создает собственную базу и обращение к MSSQL не осуществляет Ну а по существу в момент процессинга куба лучше иметь в наличии все возможные ключи ,так как связи которые имеются в кубе будут эффективнее генерится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 16:55 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
Dmitry Biryukovбез индекса будет table scan, с индексом - index seek index seek на несколько порядков быстрее Дмитрий, а Вы уверены, что джойн двух таблиц при наличии индексов будет обязательно быстрее? Точнее, будет ли MS SQL использовать эти индексы при джойне отаблиц? С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:01 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
2 Dmitry Biryukov Там идет inner join. Однако если схема куба полностью оптимизирована, то картина меняется. Для меня лично этот вопрос остается открытым. Я экспериментировал с различными комбинациями ключей/индексов и без них. Какой-либо ощутимой разницы я не обнаружил (это без оптимизации схемы). Возможно, плохо экспериментировал. Возможно, мои объемы просто не те. У меня не многотерабайтные базы, если честно. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:06 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
Ссылочная целостность обеспечивается в рабочей базе, а рассматриваемая база была создана только для того, чтобы обеспечить более "прозрачный" перенос данных в OLAP. Время выборки и обновления кубов не критично - 5 минут в этом случае роли не играют. А вот использует ли MSAS эту информацию (индексы и ключи) для более эффективного связывания измерений.... Копнем глубже... Скажем так: из таблицы Продукт создается 5 измерений: Категория, Марка, Производитель, Упаковка, Вес (желание заказчика и об эффективности такого подхода здесь не говорим). В таблице продукт есть все и их идентификаторы и наименования. (Таблица Продукт не что иное как денормализованная версий этих таблиц из рабочей базы). При создании куба, что все эти измерения не зависят друг от друга никак. Пример: Марка по строкам Вес по колонкам даст нам у каждой марки все возможные веса, даже в том случае если таковых нет. Или еще хуже: Производитель и Марка по строкам даст нам пересечение каждого производителя с каждой маркой (если не опускать пустоты). Так вот наличие ключей в исходных таблицах окажет какую-нибудь помощь MSAS при создании куба? В дальнейшем будет ли MSAS оптимизировать подобного рода пересечения при запросах - т.к. 90% информации отсутствует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:22 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
Константин ЛисянскийДмитрий, а Вы уверены, что джойн двух таблиц при наличии индексов будет обязательно быстрее? Точнее, будет ли MS SQL использовать эти индексы при джойне отаблиц? Чтобы получить развёрнутый ответ надо спросить в формуе по сиквелу. Я думаю что будет. LordOfSilence2 Dmitry Biryukov Там идет inner join. Просто включите профайлер и посмотрите. Джойном это называется только в теории. Cама конструкция строится через where. LordOfSilence Какой-либо ощутимой разницы я не обнаружил Дело видимо в том, что сама выборка данных из базы занимает малую долю во всём процессе создания куба. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:30 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
2 ShIgor Исходя из предыдущего поста вам помогут виртуальные измерения. Создаёте измерение Продукты со свойствами Категория, Марка, Производитель, Упаковка, Вес. А потом ещё сколько нужно виртуальных, каждое из которых основано на измерении Продукты. Тогда эта информация будет учитываться В свойствах виртуального измерения важно свойство "Depends on Dimension" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:35 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
Dmitry BiryukovДжойном это называется только в теории. Cама конструкция строится через where. Не спорю. Хотя мне почему-то мерещилось, что там именно join прописан. Возможно, я запамятовал. В общем-то, не принципиально. :-) Dmitry BiryukovДело видимо в том, что сама выборка данных из базы занимает малую долю во всём процессе создания куба. Я как раз о самой выборке и говорил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:37 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
LordOfSilence Dmitry BiryukovДело видимо в том, что сама выборка данных из базы занимает малую долю во всём процессе создания куба. Я как раз о самой выборке и говорил. А как вы отделили время выборки от общего времени процессинга куба? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:42 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
Дмитрий, ну мы с Вами что, не Кулибины, что ли? Естественно, по-расейски, на глазок! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 18:00 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
Константин ЛисянскийДмитрий, а Вы уверены, что джойн двух таблиц при наличии индексов будет обязательно быстрее? Безусловно не обязательно. Но может быть быстрее. Константин ЛисянскийТочнее, будет ли MS SQL использовать эти индексы при джойне таблиц? Зависит от оценки плана. Которая, в свою очередь, по словам довольно компетентного в MS SQL человека , зависит в том числе и от наличия constraint-ов (а не просто индексов). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 18:57 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
ShIgorПредположим, есть БД на MSSQL2k. 4 таблицы: Время, Продукты, Клиенты, Факты, на основании которых строится OLAP куб на MSAS2k. Насколько важно для MSAS иметь в таблицах ключи и индексы? В данный момент между таблицами существуют только логические связи типа Клиент.id = Факт.Клиент, не выраженные никак ни в ключах, ни в индексах. ну при таком раскладе я вас спрошу, а зачем вам ключи, PK и FK, в SQL базе. можно и без них, но с ними спокойнее, так вот это "спокойнее" стоит того чтобы их иметь. если вы "лоханетесь" в SQL скриптах (а это происходит с каждым, только с ранней вероятностью), то вы это обнаружите сразу, на этапе переноса данных, а не во время процессинга кубов, а еще чего хуже - из отчетов с "кривыми" цифрами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 18:59 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
backfire меня опередил :) Присоединяюсь. С другой стороны, вопрос здесь был не об этом. В любом случае, думаю, стоит перехватить SQL, который идёт от AS к SQL Server и посмотреть план запроса с индексами и без них. Откуда можно будет понять, используются ли они или нет. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 19:10 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
Подводя итоги: 1. Схему надо оптимизировать. При оптимизированной схеме, джойны исчезают. И эти индексы не нужны. FK нужны на мой взгляд. Не только на мой, но лечить не буду:-) 2. Индексы нужны при инкрементальном процессинге соответствующие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 19:45 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
Константин Лисянскийbackfire меня опередил :) Присоединяюсь. С другой стороны, вопрос здесь был не об этом. В любом случае, думаю, стоит перехватить SQL, который идёт от AS к SQL Server и посмотреть план запроса с индексами и без них. Откуда можно будет понять, используются ли они или нет. С уважением, Константин Лисянский http://lissianski.narod.ru Ну я отвечал только на первую часть вопроса (о ключах). А вторую DmitryS подытожил как нельзя лучше, так что даже к профайлеру ходить не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 22:18 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
Единственно, мне не очень понятно, что за оптимизированная схема такая, от которой джойны исчезают. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 22:55 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
Константин ЛисянскийЕдинственно, мне не очень понятно, что за оптимизированная схема такая, от которой джойны исчезают. С уважением, Константин Лисянский http://lissianski.narod.ru К теме топика это напрямую не относится, но так и быть поясню: оптимизированная схема это если ключ листового уровня измерения является первичным ключем таблицы измерения, а измерение плоским, тогда при процессинге куба таблица измерения не включается в запрос. Лирическое отступление: Если кому то на ум придет оптимизировать схему на связи без DRI - "гаси свет и лови тараканов". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 23:34 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
Не думал, что тема многим окажется так интересна. Спасибо за поддержку. В общем можно подвести черту. Ключи и индексы нужны для себя любимого, чтоб где-то не лопухнутся. MSASу наши ключи глубоко, мягко скажем, безразличны и влияют они только на скорость выборки при обновлении куба. При построении кубов MSAS использует собственные средства и правила (Schema Optimizing) основанные только на внутренней логике, заложенной его разработчиками. Следовательно к вопросу выборки информации из куба ни ключи, ни индексы в источнике отношения не имеют и никак на этот процесс не влияют. 2 Dmitry Biryukov Про "виртуальные измерения": я так и сделал с самого начала, начитавшись, что именно в этой ситуации они мне помогут, но как оказалось совсем не помогают (или этого не видно) т.к. несуществующие связи все-равно остались (каждый производитель имеет все марки продуктов). К тому же в BOL ясно написано, что в виртуалных измерениях свойство Depends On Dimension имеет совсем другое значение, а именно указывает только на то, на основании какого измерения построено виртуальное. Потом, для виртуальных не создается никакая агрегация и все считается во время выполнения запроса - значит будет все медленнее. Я переделал измерения с виртуальных на реальные, установил свойство Depends on... Однако ничего не получилось - все осталось на своих местах (все производители и у каждого все продукты). Если Вы внимательно перечитаете информацию из BOL, то поймете, что это свойство влияет только на расчет предварительного размера базы в процессе создания агрегатов. Да, конечно агрегат для несуществующих пересечений не создается, но при запросе информации пересечение все же имеет место, хотя и возвращает в этом случае NULL. Вот эти изыскания и натолкнули меня на мысль о возможной необходимости ключей в источнике, но как видимо, я ошибался. Неужели придется делать столько иерархий для измерения продукт сколько возможных (необходимых) комбинаций подобного рода измерений существует, т.е. вместо 5 измерений у меня будет в худшем случае 320 иерархий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 10:40 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
backfire Лирическое отступление: Если кому то на ум придет оптимизировать схему на связи без DRI - "гаси свет и лови тараканов". Я дико извеняюсь за свое ламерство, но что такое "схема на связи без DRI" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 11:30 |
|
||
|
Вопрос о ключах и индексах
|
|||
|---|---|---|---|
|
#18+
олапист backfire Лирическое отступление: Если кому то на ум придет оптимизировать схему на связи без DRI - "гаси свет и лови тараканов". Я дико извеняюсь за свое ламерство, но что такое "схема на связи без DRI" ? В дизацнере кубов вы можете строить связи между таблицой фактов и измерений как вам бог на душу положит, существование Foreign Key (DRI - декларативная сылочная целостнось) там не требуется, но и результат в этом случае - вся ответственность на том кто это делал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 11:49 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=32816785&tid=1871964]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
85ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 264ms |
| total: | 479ms |

| 0 / 0 |
