Monday, November 22, 2021

In-Mempory@Oracle. Part 4: IM Aggregation

Part 1 Introduction: http://exadata-dba.blogspot.com/2021/11/in-memoryoracle.html
Part 2 IM Scan:   http://exadata-dba.blogspot.com/2021/11/in-memoryoracle_22.html
Part 3 IM Join:    http://exadata-dba.blogspot.com/2021/11/in-memoryoracle-part-3-im-join.html
Part 4: IM Aggregation http://exadata-dba.blogspot.com/2021/11/in-memporyoracle-part-4-im-aggregation.html


In-Memory Aggregation

In-Memory Aggregation возникает в процессе выполнения GROUP BY. Исторически первым способом был SORT GROUP BY, затем в версии 10g появился HASH GROUP BY, а с появлением In-Memory появился способ VECTOR GROUP BY. VGB использует SIMD-инструкции, т.е. аппаратные возможности процессоров, поэтому на разных поколениях процессоров Intel, а также на процессорах разных производителей будут разные результаты. VGB возможен только при использовании IM, без IM VGB невозможен. VGB работает для HJ equi-join, аггрегация выполняется в PGA. VGB полезен для OLAP, STAR query aggregations, multi-dimentional aggregation.

Как это выглядит применительно к IM:

 

На первом шаге сканируется первая таблица запроса (обычно таблица измерений), применяются условия фильтрации и создаётся таблица/вектор ключей, которая используется при доступе к второй таблице. Признаком VGB является строка KEY VECTOR USE :KV0000.

Функционально VGB похож на Bloom Filter. Отличие в том, что Bloom Filter не использует SIMD-инструкции процессора и IM-представление данных. Существует хинт NO_VECTOR_TRANSFORM, отключающий VGB, в этом случае вместо :KV0000 возникает Bloom Filter :BF0000

https://antognini.ch/papers/BloomFilters20080620.pdf

Если в запрос добавить хинт NO_VECTOR_TRANSFORM, отключающий VGB, то в плане выполнения получим Bloom-фильтр:

 

 

Youtube:  In-Memory Aggregation

 

 

How to disable/setup autostart parameters for specified instance ?

Q: We have a 4-node RAC. I need to disable autostart of the DB on one node only.    How to do it and how to see autostart parameters, confir...