powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Проблемы с индексом типа bitslice
9 сообщений из 9, страница 1 из 1
Проблемы с индексом типа bitslice
    #35718398
Hisbreht Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть класс с полем Flags, определенные биты которого означают определенный статус записи.
Данное поле имеет индекс типа bitslice (выбор не мой, менять пока не могу).
Пока записей было мало, при запросе количества записей с участием поля Flags использовался данный индекс.
Когда число записей перевалило через миллион индекс перестал работать, в результате чего запрос исполняется фантастически медленно. Запрос с условием по другим полям, имеющим индексы типа bitmap работает с выбором соответствующих индексов.
Запрос простой, примерно такого вида -
SELECT Count(*) FROM TableClass WHERE Flags=2

Какие могут быть гипотезы на предмет причины такого поведения?
Не может ли стать причиной повреждение индекса при выключении машины обрубанием питания (было сообщение об ошибке журнала, пришлось принимать меры, чтобы Cache вообще загрузился)?

Попутно серия связанных вопросов

Как быстрее всего создать или пересоздать один индекс типа bitmap или bitslice?

Как заставить Cache при исполнении запроса использовать определенный индекс? С исключением конкретного индекса понятно, но перечислять все индексы, кроме нужного, как-то не улыбается, да и не факт, что он не будет в этом случае проигнорирован.

Как быстрее всего преобразовать индекс bitslice в bitmap?

Речь идет о классе (таблице) с числом записей в несколько миллионов.

Виктор
...
Рейтинг: 0 / 0
Проблемы с индексом типа bitslice
    #35719949
Maksim UM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно удалить индекс через метод класса:
Код: plaintext
%PurgeIndices(idxlist As %List = "") returns %Status
а потом создать снова - %BuildIndices()
...
Рейтинг: 0 / 0
Проблемы с индексом типа bitslice
    #35721018
Hisbreht Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А разве это не пересоздаст все индексы?
Хотелось бы только один индекс обновить.
...
Рейтинг: 0 / 0
Проблемы с индексом типа bitslice
    #35721036
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hisbreht VictorА разве это не пересоздаст все индексы?
Хотелось бы только один индекс обновить.
%BuildIndices индексы пересоздаст те, которые укажите и даже может удалить их перед этим.
...
Рейтинг: 0 / 0
Проблемы с индексом типа bitslice
    #35723966
Hisbreht Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. самый быстрый способ пересоздания индексов - штатный.

Возвращаясь к вопросу о работе индекса bitslice в запросе.
Оказывается, когда оно работало, индекс был еще bitmap, а потом зачем-то его поменяли на bitslice и он вообще перестал участвовать в любых запросах.

В доке написано, что индекс типа bitslice используется для "определенных" (certain) запросов и в будущих версиях они будут использоваться оптимизатором для дополнительных запросов.

[quote]A bitslice index is a specialized form of index that enables very fast evaluation of certain expressions, such as sums and range conditions. Bitslice indices are currently automatically used in certain Cache SQL queries. Future versions of Cache SQL will make further use of bitslice indices to optimize additional queries.[/quote]

Хотелось бы узнать, в каких таких запросах индексы типа bitslice участвуют? Или я что-то не так перевел?
...
Рейтинг: 0 / 0
Проблемы с индексом типа bitslice
    #35725356
Maksim UM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно там и написано: например для SUM и ранжирования.
Попробуйте на медленном запросе не count, а sum ради интереса.
Если не сработает, то, возможно, баг.
...
Рейтинг: 0 / 0
Проблемы с индексом типа bitslice
    #35725372
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HyperindexIf you wish to be able to sum, maximum, minimum or average a property, or calculate median or standard deviation values (all much faster than the equivalent SQL functions can do), then you need to add some BitSlice indices.
Скорее всего для этих же целей используются стандартные bitslice-индексы в Caché.
...
Рейтинг: 0 / 0
Проблемы с индексом типа bitslice
    #35725660
Hisbreht Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Действительно, для суммы и ранжирования. Я почему-то подумал, что это автоматом распространяется на все векторные функции, включая и COUNT. Надо попробовать, как оно будет для суммы.

А вот еще вопрос.
В документации я обнаружил, что bitmap индексы при выполнении запросов складываются, чтобы получить что-то вроде общего индекса. Есть ли стандартные и быстрые средства, которые позволяют проделать то же самое, но средствами COS?
...
Рейтинг: 0 / 0
Проблемы с индексом типа bitslice
    #35726974
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.

> В документации я обнаружил, что bitmap индексы при выполнении запросов
> складываются, чтобы получить что-то вроде общего индекса. Есть ли
> стандартные и быстрые средства, которые позволяют проделать то же самое,
> но средствами COS?
Конечно, ведь SQL запросы в конечном счете выполняются на том же COS.

$BITLOGIC evaluates a bit-wise operation on one or more bitstring values, as
specified by bitstring_expression, and returns the resulting bitstring.

=Сергей Шутов
ООО Димас, Хабаровск
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Проблемы с индексом типа bitslice
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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