Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Производительность сортировки. / 25 сообщений из 57, страница 1 из 3
24.12.2008, 22:32
    #35733674
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Есть такая загвоздочка.
Есть некий класс, содержащий кучу полей и среди них поля Flag и Field.
На оба поля созданы Bitmap индексы.
Есть запрос вида
SELECT Id FROM Class WHERE Flag=2 OR Flag=3
Первая запись получается почти мгновенно.
Если же его задать с правилом ORDER BY Field, то при большом количестве записей этого класса с большим разнообразием значений поля Field время получения первой записи иногда больше на порядки.
SELECT Id FROM Class WHERE Flag=2 OR Flag=3 ORDER BY Field,

Как можно это дело ускорить?
Множить число индексов на всевозможные сочетания полей, участвующих в сортировке и фильтрации представляется нецелесообразным, поскольку это неизбежно ухудшит время вставки записи.
Или в данном случае тоже следует переходить на COS?
Для задач подсчета количества записей разного рода это уже позволило получить очень хороший выигрыш в производительности по сравнению с обычным SQL.
...
Рейтинг: 0 / 0
25.12.2008, 04:36
    #35733872
logist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Тут конечно надо посмотреть планы запросов, однако почти наверняка окажется, что
в первом случае перебор идет по исходной глобали, а во втором случае - делается
временная глобаль с верхним индексом Field. Можно ли это оптимизировать как-то -
знают наверняка только разработчики SQL движка в Интерсистемсе. Попробуй сделать
по Field не-bitmap индекс. А вообще лучше это в WRC спрашивать.

На COS, наверное, можно написать более производительный алгоритм, побитово
складывающий два индекса по flag а потом последовательно перемножающий их со
всеми индексами field. Опять таки, я не уверен, что это уже не делается SQL
движком - надо смотреть план запроса.

=Сергей Шутов (logist)
ООО Димас, Хабаровск
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
25.12.2008, 09:02
    #35733985
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Hisbreht Victor
Есть запрос вида
Код: plaintext
SELECT Id FROM Class WHERE Flag= 2  OR Flag= 3 


У меня "шкурный" интерес... А запрос

Код: plaintext
SELECT Id FROM Class WHERE Flag IN ( 2 ,  3 )

как будет выполняться? Быстрее или медленнее? Что будет с оценкой запроса?
...
Рейтинг: 0 / 0
25.12.2008, 09:37
    #35734065
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Caché 2008.2.526
Сгенерировал 1000000 записей со случайными значениями Flag и Field.
Код: plaintext
1.
2.
Index iFlag On Flag [ Type = bitmap ];
Index iField On Field;
Сделал тюнинг таблицы.
Запросы вида
Код: plaintext
1.
2.
select ID from Class where Flag in ( 2 , 3 ) order by Field
select ID from Class where Flag= 2  or Flag= 3  order by Field
дали одинаковый план и соответственно стоимость.
На моих данных:
Код: plaintext
Относительная стоимость = 1857.9 Количество строк: 27    Быстродействие: 0.002 Секунд  292 глобальных ссылок
...
Рейтинг: 0 / 0
25.12.2008, 11:44
    #35734429
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
servitдали одинаковый план и соответственно стоимость.
Вот и верь после этого в оптимизацию запросов!
...
Рейтинг: 0 / 0
25.12.2008, 13:32
    #35734759
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Чем же тут не угодил оптимизатор? Условия в запросах и вправду эквивалентны: IN по определению - лишь краткая форма OR, не более.
...
Рейтинг: 0 / 0
25.12.2008, 13:48
    #35734806
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Alexey MaslovIN по определению - лишь краткая форма OR, не более.
Как раз всегда утверждалось другое. Типа более оптимален и все такое...
...
Рейтинг: 0 / 0
25.12.2008, 14:07
    #35734888
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Кем утверждалось и что именно? IN, как известно, может выступать как предикат в условиях равенства (equality comparisons) и в подзапросах (subquery comparisons). Наш случай - первый. По определению:Док-яThe IN predicate can serve as shorthand for the use of multiple equality comparisons linked together with the OR operator.Т.е. имеем
Код: plaintext
x IN ( 2 , 3 ) <=> x= 2  OR x= 3 
IN в данном случае - лишь краткая форма OR (shorthand). Что здесь можно соптимизировать? в COS, кроме ! и ||, других операторов для OR в общем случае нет.
Более сложный случай - второй (Subquery Comparison), и насколько помню, как раз с этим были проблемы в Cache 5.0 и произошли серьезные подвижки в последних версиях.
...
Рейтинг: 0 / 0
25.12.2008, 14:15
    #35734925
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Alexey MaslovКем утверждалось и что именно?
Кем-то из ИС... Цитат и ФИО привести уже не могу...
Alexey MaslovЧто здесь можно соптимизировать?
Панятия не имею... Вот и прошу время от времени потестиль тех, у кого большое количество даных, индексов и т.п...
Пока разницы не наблюдалось.
...
Рейтинг: 0 / 0
25.12.2008, 15:09
    #35735134
ceshka-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
krvsa
Вот и прошу время от времени потестиль тех, у кого большое количество даных, индексов и т.п...
Пока разницы не наблюдалось.
так было выведено, что $O(,-1) рабоатет медленне, чем просто $O() ?
...
Рейтинг: 0 / 0
25.12.2008, 15:16
    #35735157
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Про разницу с ордером я не знал...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
25.12.2008, 16:18
    #35735409
ceshka-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
krvsaПро разницу с ордером я не знал...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
я джо некоторого времени тоже))))
...
Рейтинг: 0 / 0
26.12.2008, 08:26
    #35736349
Sergei Obrastsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
ceshka-krvsa
Вот и прошу время от времени потестиль тех, у кого большое количество даных, индексов и т.п...
Пока разницы не наблюдалось.
так было выведено, что $O(,-1) рабоатет медленне, чем просто $O() ?
А что, появилась левосторонняя ссылка в блоках? Вроде не замечал еще.
...
Рейтинг: 0 / 0
26.12.2008, 12:52
    #35736929
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Сергей, не удивляйтесь: для некоторых форумчан Cache - черный ящик, им возможно и не интересно знать "что под капотом" (но надеюсь, что таких меньшинство, иначе здесь станет совсем грустно :). Отчасти в этом виновата и ИнтерСистемз: интерес к "внутренностям" не приветствуется, даже по каналам WRC нелегко что-то разузнать. Последнее описание формата БД, которым я располагаю, 10 летней давности, и, конечно, это 2К-формат БД. Некое понимание устройства 8К-БД приходит после ремонта оных с помощью ^RECOVER, но не все опции этой утилиты понятны. ИМХО, не хватает книги "Inside Cache" или "Cache Internals".
...
Рейтинг: 0 / 0
26.12.2008, 13:14
    #35736982
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Имел в виду, конечно, ^REPAIR :)
...
Рейтинг: 0 / 0
26.12.2008, 13:15
    #35736989
Ahil79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Во истину чтото скрытое но ценное. Вот толи MSM была
...
Рейтинг: 0 / 0
26.12.2008, 13:39
    #35737048
ceshka-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Sergei Obrastsov
А что, появилась левосторонняя ссылка в блоках? Вроде не замечал еще.
тут имеется в виду, что идти вперёд естественно, и структура блока заточена только под это?
...
Рейтинг: 0 / 0
26.12.2008, 15:01
    #35737269
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Если в двух словах, то да.
1) В блоках используется сжатие ключей, т.е. хранится изменение полной индексной ссылки по отношению к предыдущему узлу.
2) Хранится Right Link - ссылка на следующий блок на том же уровне.
...
Рейтинг: 0 / 0
26.12.2008, 15:40
    #35737373
ceshka-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Alexey MaslovЕсли в двух словах, то да.
1) В блоках используется сжатие ключей, т.е. хранится изменение полной индексной ссылки по отношению к предыдущему узлу.
2) Хранится Right Link - ссылка на следующий блок на том же уровне.
это многое объясняет)))
а откуда информация? мне вот давно интересно как и что происходит на системном уровне, например механизм транзакций, механизм создания журнала, что происходит при появлении новой записи между двумя соседними...
или это всё закрытая информация?
...
Рейтинг: 0 / 0
26.12.2008, 16:03
    #35737442
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Информация почерпнута из очень старой док-ии (10 лет назад она была еще бумажной :) и еще из столь же старого учебного пособия ИнтерСистемз, в переводе которого я участвовал. Если ISC не возражает, я могу вырезать главу про структуру БД (2К-блоки!) и выложить сюда. Но это, наверное, уже после праздников.
Кроме того, некоторое знакомство с алгоритмами работы B-дерева помогает найти ответы на многие вопросы :) Здесь источников - море.
...
Рейтинг: 0 / 0
26.12.2008, 16:16
    #35737482
ceshka-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Alexey MaslovИнформация почерпнута из очень старой док-ии (10 лет назад она была еще бумажной :) и еще из столь же старого учебного пособия ИнтерСистемз, в переводе которого я участвовал. Если ISC не возражает, я могу вырезать главу про структуру БД (2К-блоки!) и выложить сюда. Но это, наверное, уже после праздников.
Кроме того, некоторое знакомство с алгоритмами работы B-дерева помогает найти ответы на многие вопросы :) Здесь источников - море.
да, конечно, лишним не будет, выкладывайте, с радостью почитаю
ничо, если я еще спрошу?
в оракле принцип работы с В-деревьями такой же, как в М-системах?
...
Рейтинг: 0 / 0
29.12.2008, 03:45
    #35739016
=Dimon=
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Alexey MaslovИнформация почерпнута из очень старой док-ии (10 лет назад она была еще бумажной :) и еще из столь же старого учебного пособия ИнтерСистемз, в переводе которого я участвовал. Если ISC не возражает, я могу вырезать главу про структуру БД (2К-блоки!) и выложить сюда. Но это, наверное, уже после праздников.
Кроме того, некоторое знакомство с алгоритмами работы B-дерева помогает найти ответы на многие вопросы :) Здесь источников - море.
Алексей, может выложите на writeimagejournal, там и База Знаний имеется.
...
Рейтинг: 0 / 0
29.12.2008, 12:19
    #35739462
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
cheshkaв оракле принцип работы с В-деревьями такой же, как в М-системах?Не знаток Оракла, но подозреваю, что нет. В традиционных РСУБД В-деревьями могут быть индексы, а данные хранятся в таблицах. Cache (и М-системы), напротив, хранят данные на нижнем уровне B-дерева. Чтобы подчернуть этот факт, его обычно называют "B*-дерево". Это по классике :) я многого не знаю про Оракл, и он, возможно, тоже умеет нечто подобное.
...
Рейтинг: 0 / 0
29.12.2008, 12:36
    #35739519
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Dimonможет выложите на writeimagejournalУвы, Copyright мне этого не позволяет :( Выходные данные документа такие:
INTERSYSTEMS' EDUCATIONAL SERVICES. Руководство для студентов по системному и сетевому администрированию Caché. InterSystems Corporation Copyright, 1998, C52898
Глава, которую имел в виду, называется "Module 5. Основные понятия".
Может быть, я что-то свое про это напишу, когда будет время (в Новом году :).
...
Рейтинг: 0 / 0
29.12.2008, 12:51
    #35739553
ceshka-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность сортировки.
Alexey Maslovcheshkaв оракле принцип работы с В-деревьями такой же, как в М-системах?Не знаток Оракла, но подозреваю, что нет. В традиционных РСУБД В-деревьями могут быть индексы, а данные хранятся в таблицах. Cache (и М-системы), напротив, хранят данные на нижнем уровне B-дерева. Чтобы подчернуть этот факт, его обычно называют "B*-дерево". Это по классике :) я многого не знаю про Оракл, и он, возможно, тоже умеет нечто подобное.
спасибо
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Производительность сортировки. / 25 сообщений из 57, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]