|
|
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
В таблице был составной индекс для полей ФИО, он состоял срезу из трех полей. Поиск по имени+фамилии выполнялся махом. Разбил этот индекс на три отдельных bitmap-индекса. Теперь поиск идет минуту. Посмотрел план выполнения - при поиске по имени+фамилии задействуется только индекс на фамилию, а имя уже ищется без индекса. Почему так? Куда копать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 09:42 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Chukis, "Работает? Не трогай!"(с) верните все в зад ... или объясните, зачем были сделаны все ваши манипуляции? чего не устраивало при старом раскладе и что хотели получить при новом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 09:45 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, Хотелось экономии места на диске за счет bitmap ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 09:49 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Chukis, почему вы решили, что три битмапа будет меньше по месту на диске, чем один b-tree? другие способы уменьшения размера индекса пробовали (compressб pctfree)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 09:53 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Chukis, кроме того, "побочные эффекты" битмапов изучили? в том, что они не будут вам мешать больше, чем помогать - удостоверились? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 09:54 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Chukis, на всякий случай - почитайте ... может подчерпнете что-то новое, полезное и интересно для себя... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 09:58 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, Если данные малоселективные, то использование битмапа экономит место ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 09:58 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
ChukisЕсли данные малоселективныеТебе следует сперва понять, что это значит, прежде чем становится "архитектором". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 10:11 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Chukis, гипотетически может быть многое, практически - гораздо меньше. вы размер исходного индекса и сумму размеров трех "новоиспеченных" индексов - сравнивали? желаемый профит по экономии дискового пространства получили? этот профит стоит того геммора, что вы выхватили с производительностью? кроме того, совокупность трех малоселективных полей может дать вполне себе высокую селективность, если что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 10:14 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
ChukisВ таблице был составной индекс для полей ФИО, он состоял срезу из трех полей. Поиск по имени+фамилии выполнялся махом. Разбил этот индекс на три отдельных bitmap-индекса. Теперь поиск идет минуту. Посмотрел план выполнения - при поиске по имени+фамилии задействуется только индекс на фамилию, а имя уже ищется без индекса. Почему так? Куда копать? а голову включить? при поиске по фамилии у вас останется сколько строк? 1? 2? а при поиске по имени (например, Алексей) останется процентов 5 по которым потом будет искаться фамилия... я так понимаю, если поиск идёт минуту, строк у вас там хватает, чтобы 5% столько искало а в запросе наверное ещё и сортировка есть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 10:41 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Похоже, автор расчитывал на BITMAP-AND Но надо бы, как обычно указать версию, когда и как собиралась статистика и нет ли параметров, запрещающих использования таких операция Ну и да -- битмэп индекс на [часто]изменяемых таблицах -- зло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 10:50 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Oracle 10g. Делаю изменения в архивной таблице за пару лет. Данные там не будут меняться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 10:58 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Chukis....bitmap-индекса.... А что это такое и зачем используется - знаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 11:00 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevChukis....bitmap-индекса.... А что это такое и зачем используется - знаешь?Ну а как же! Вот же - всё написано:ChukisЕсли данные малоселективные, то использование битмапа экономит место ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 11:03 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, Индекс на основе битовых карт, устроен иначе, нежели B-дерево ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 11:04 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
ChukisИндекс на основе битовых карт, устроен иначе, нежели B-дерево Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 11:08 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Но он действительно устроен сильно иначе И в этом проявляются как его плюсы -- побитовые OR/AND операции между картами нескольких индексов, (возможно) меньший размер, хранение NULL и т.д, так и минусы -- изменение значения блокирует все строки, в которых это значение было или будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 12:35 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Но использовать его для экономии места? Наверное, только в очень вырожденных случаях ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 12:36 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
ChukisOracle 10g. Просто не используйте bitmap на этой версии. Они там только появились и еще не переболели всеми теми детскими болезнями, которыми традиционно болеют все новые багофичи oracle. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 14:13 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Так с 7.3.4 и болел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 14:33 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
На самом деле, в добавок к индексу фамилия+имя есть еще индекс фамилия+дата рождения . И начиная эксперимент с разделением, в случае удачного разделения первого индекса, я хотел сделать еще индекс просто по дате рождения. Думал, что для таких полей bitmap должен помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 15:19 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Битмап индекс по дате - это сильно. IMHO Особенно умиляет "Если данные малоселективные" ( C ) Chukis я так понимаю, у Вас все люди малоселективно в один день рождаются.... Т.е., как известно, с 1 по 13... национальная идея... бухаем... жрем салатики... тр#$%ся... и ровно через 9 месяцев население страны "малоселективно" рождается ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 15:33 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Предположение не подтвердилось ((( Наша страна очень плохо поддерживает национальную идею (((( Или при кол-ве алкоголя, которое можно употребить за 13 дней, рождаемость не получается https://alldates.ru/statistics/alldates.shtml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 15:37 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Вот ты сейчас о чем? Битмэп индекс именно по дате (без времени) рождения вполне себе неплохо например на десятки-сотни тысяч клиентов Ну такие индексы обычно лепят в DWH, где именно битмэп индексы наиболее потребны На самом деле аффтор умолчал про статистику (в 10g она автоматом сразу не собирается) и примеры запросов (если там LIKE, то, насколько помню, с битмэп индексам оно тоже плохо себя ведет) А просто так хаять -- ну какой смысл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 15:42 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Спасибо за понимание. Like довольно часто применяется в поиске по фамилии и имени в этой базе. Про этот ньюанс не слушал. А про статистику - на таблице свежесобранная статистика. Таблица партиционинная. Базу проектировал не я, но я хочу её малость улучшить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 15:57 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
ChukisА про статистику - на таблице свежесобранная статистикаГлавное, чтоб статистика при этом была еще и на индексах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 15:59 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Так статистика должна пересчитываться при создании индекса. авторDatabase now automatically collects statistics during index creation and rebuild. This clause is supported for backward compatibility and will not cause errors. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 16:19 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
ChukisТак статистика должна пересчитываться при создании индекса.авторDatabase now automatically collects statistics during index creation and rebuild. This clause is supported for backward compatibility and will not cause errors.У табя версия now ? Вячеслав ЛюбомудровБитмэп индекс именно по дате (без времени) рождения вполне себе неплохо например на десятки-сотни тысяч клиентов10 тысяч дат на каждый день это 27+ лет. Этак и на высокую селективность можно наступить. Кроме того, если разговор про DWH, то по датам часто используется диапазон, но не равенство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 16:24 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
-2-Вячеслав Любомудров....именно по дате (без времени) рождения вполне себе неплохо.... ...по датам часто используется диапазон, но не равенство. Слабо представляю себе запрос: Найти всех людей которые родились 31.03.1977 Поиск же по ФИО + дата (как принято например в органах правопорядка) - вполне себе селективен. Использование же __чисто__ даты рождения.... ну я могу представить себе только два варианта: в каких нибудь DWH для продажи, поиск всех покупок совершенных в день рождения - но тут ни bitmap, ни любой другой индекс не поможет в какой нибудь статистики, сколько людей родились в указанный день - но опять таки, осмысленно тогда делать запрос сразу по всем дням. Т.е. будет full table scan + group by... индекс даром не нужен В любых других случаях, поиск составного условия по составному же индексу - выглядит как-то разумнее. И, да, я не админ, мне на статистику и селективность - пофиг ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 16:34 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
p.s. ну или рассылка поздравительных открыток в день рождения, но как-бы врят ли это частая операция, в худшем случае, запрос раз в день ))) странно его оптимизировать до уровня "bitmap лучше чем b-tree" ))). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 16:36 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
ChukisТак статистика должна пересчитываться при создании индекса.в вашей версии оракла она ничего никому не должна. вы ладу-шестерку тоже по сервис-мануалу от весты-кросс обслуживать будете? так-то и то и другое суть есть "жигули". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 16:41 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
ChukisБазу проектировал не я, но я хочу её малость улучшить.вам не кажется, что у вас пока плохо получается? З.Ы. сорри за наезды, просто настроение такое... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 16:42 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsevp.s. ну или рассылка поздравительных открыток в день рождения, но как-бы врят ли это частая операция, в худшем случае, запрос раз в день ))) странно его оптимизировать до уровня "bitmap лучше чем b-tree" ))).Наоборот, здесь для большой БД выигрыш в объеме весьма существеннен, а ведь скорее всего этот индекс больше не для чего и не будет нужен -- просто жалко на него тратить место ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 16:43 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Щукина Аннавы ладу-шестерку тоже по сервис-мануалу от весты-кросс обслуживать будете? так-то и то и другое суть есть "жигули".это, если что, было к тому, что документацию читать нужно к своей версии СУБД, а не к 18C ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 16:45 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Щукина АннаЗ.Ы. сорри за наезды, просто настроение такое... + ну а я видел в продакшен базе данных, когда в продакшене OLTP биллинга, дату счета сделали bitmap index'ов... а что? он же вполне себе "малоселективен" по статистике... пара сотен тысяч счетов в месяц, а дата у всех 31-ое число.... p.s. сначала "прибежал" junior с горящими глазами, я про такую шутуку вычитал в документации, bitmap индекс называется, давайте у нас его включим.... его отправили читать дальше, про разницу между OLTP и DWH а через месяц, на проде, появился bitmap index от senior'а, который уже по офису не бегал ))), а просто взял и создал... поле то малоселективно ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 16:49 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev-2-пропущено... ...по датам часто используется диапазон, но не равенство. Слабо представляю себе запрос: Найти всех людей которые родились 31.03.1977Ну так это ж не есть диапазон. Тебе намекали про выборку возрастных групп от и до, например, в маркетинговых акциях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2018, 17:39 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
А можно глупый вопрос? Если цель экономить место почему не использовать композитные компрессированные индексы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2018, 00:13 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
и самое главное? А кто пожаловался на место? Преждевременная оптимизация без понимания это как-то смело мне так кажется... p.s. про компресс увидел от Анны сообщение вначале, которое вопрощающий проигнорировал. Ей бы ещё от стиля Элика избавиться, цены бы не было её советам... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2018, 00:16 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
ShtockЕй бы ещё от стиля Элика избавиться, цены бы не было её советам...Дураков отстреливать нужно ещё на взлёте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2018, 08:01 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevЩукина АннаЗ.Ы. сорри за наезды, просто настроение такое... + ну а я видел в продакшен базе данных, когда в продакшене OLTP биллинга, дату счета сделали bitmap index'ов... а что? он же вполне себе "малоселективен" по статистике... пара сотен тысяч счетов в месяц, а дата у всех 31-ое число.... p.s. сначала "прибежал" junior с горящими глазами, я про такую шутуку вычитал в документации, bitmap индекс называется, давайте у нас его включим.... его отправили читать дальше, про разницу между OLTP и DWH а через месяц, на проде, появился bitmap index от senior'а, который уже по офису не бегал ))), а просто взял и создал... поле то малоселективно )))На oltp битмап индексы вешают намертво базу блокировками был случай, что вешали уже при двух одновременных сессиях в общем, на практике он применим только в dwh для star transformation ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2018, 14:46 |
|
||
|
Разделение составного индекса на отдельные
|
|||
|---|---|---|---|
|
#18+
казинакLeonid Kudryavtsevпропущено... + ну а я видел в продакшен базе данных, когда в продакшене OLTP биллинга, дату счета сделали bitmap index'ов... а что? он же вполне себе "малоселективен" по статистике... пара сотен тысяч счетов в месяц, а дата у всех 31-ое число.... p.s. сначала "прибежал" junior с горящими глазами, я про такую шутуку вычитал в документации, bitmap индекс называется, давайте у нас его включим.... его отправили читать дальше, про разницу между OLTP и DWH а через месяц, на проде, появился bitmap index от senior'а, который уже по офису не бегал ))), а просто взял и создал... поле то малоселективно )))На oltp битмап индексы вешают намертво базу блокировками был случай, что вешали уже при двух одновременных сессиях в общем, на практике он применим только в dwh для star transformation точнее, база не вешалась, и процы и память свободны, просто приложение висит на блокировке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2018, 14:50 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1883550]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 497ms |

| 0 / 0 |
