Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблемы с индексом типа bitslice
|
|||
|---|---|---|---|
|
#18+
Есть класс с полем Flags, определенные биты которого означают определенный статус записи. Данное поле имеет индекс типа bitslice (выбор не мой, менять пока не могу). Пока записей было мало, при запросе количества записей с участием поля Flags использовался данный индекс. Когда число записей перевалило через миллион индекс перестал работать, в результате чего запрос исполняется фантастически медленно. Запрос с условием по другим полям, имеющим индексы типа bitmap работает с выбором соответствующих индексов. Запрос простой, примерно такого вида - SELECT Count(*) FROM TableClass WHERE Flags=2 Какие могут быть гипотезы на предмет причины такого поведения? Не может ли стать причиной повреждение индекса при выключении машины обрубанием питания (было сообщение об ошибке журнала, пришлось принимать меры, чтобы Cache вообще загрузился)? Попутно серия связанных вопросов Как быстрее всего создать или пересоздать один индекс типа bitmap или bitslice? Как заставить Cache при исполнении запроса использовать определенный индекс? С исключением конкретного индекса понятно, но перечислять все индексы, кроме нужного, как-то не улыбается, да и не факт, что он не будет в этом случае проигнорирован. Как быстрее всего преобразовать индекс bitslice в bitmap? Речь идет о классе (таблице) с числом записей в несколько миллионов. Виктор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2008, 20:58 |
|
||
|
Проблемы с индексом типа bitslice
|
|||
|---|---|---|---|
|
#18+
Можно удалить индекс через метод класса: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2008, 13:52 |
|
||
|
Проблемы с индексом типа bitslice
|
|||
|---|---|---|---|
|
#18+
А разве это не пересоздаст все индексы? Хотелось бы только один индекс обновить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2008, 19:23 |
|
||
|
Проблемы с индексом типа bitslice
|
|||
|---|---|---|---|
|
#18+
Hisbreht VictorА разве это не пересоздаст все индексы? Хотелось бы только один индекс обновить. %BuildIndices индексы пересоздаст те, которые укажите и даже может удалить их перед этим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2008, 19:45 |
|
||
|
Проблемы с индексом типа bitslice
|
|||
|---|---|---|---|
|
#18+
Т.е. самый быстрый способ пересоздания индексов - штатный. Возвращаясь к вопросу о работе индекса 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 участвуют? Или я что-то не так перевел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2008, 10:38 |
|
||
|
Проблемы с индексом типа bitslice
|
|||
|---|---|---|---|
|
#18+
Собственно там и написано: например для SUM и ранжирования. Попробуйте на медленном запросе не count, а sum ради интереса. Если не сработает, то, возможно, баг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2008, 17:45 |
|
||
|
Проблемы с индексом типа bitslice
|
|||
|---|---|---|---|
|
#18+
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é. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2008, 17:52 |
|
||
|
Проблемы с индексом типа bitslice
|
|||
|---|---|---|---|
|
#18+
Действительно, для суммы и ранжирования. Я почему-то подумал, что это автоматом распространяется на все векторные функции, включая и COUNT. Надо попробовать, как оно будет для суммы. А вот еще вопрос. В документации я обнаружил, что bitmap индексы при выполнении запросов складываются, чтобы получить что-то вроде общего индекса. Есть ли стандартные и быстрые средства, которые позволяют проделать то же самое, но средствами COS? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2008, 23:57 |
|
||
|
Проблемы с индексом типа bitslice
|
|||
|---|---|---|---|
|
#18+
Привет. > В документации я обнаружил, что 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2008, 07:20 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=35723966&tid=1558621]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 368ms |

| 0 / 0 |
