Presentation is loading. Please wait.

Presentation is loading. Please wait.

 Overview  Smart Scan  Predicate Filtering  Column Projection  Join Filtering  Storage Indexes  Hybrid Columnar Compression  Flash Cache.

Similar presentations


Presentation on theme: " Overview  Smart Scan  Predicate Filtering  Column Projection  Join Filtering  Storage Indexes  Hybrid Columnar Compression  Flash Cache."— Presentation transcript:

1

2  Overview  Smart Scan  Predicate Filtering  Column Projection  Join Filtering  Storage Indexes  Hybrid Columnar Compression  Flash Cache

3

4

5  Predicate Filtering  Column Projection  Function Offload  Simple Joins Filtering  Storage Indexes Данные приходят в PGA не в привычном формате Oracle блока, а в виде пакетов, содержащих только необходимые данные. Всегда осуществляется параллельными процессами на storage cell layer. Как следствие степень (degree) of parallelism уменьшена для запросов использующих параллелизм по сравнению с не-Exadata environments.

6  Full Scan Full Table Scan Full MatView Scan Index [Bitmap] Fast Full Scan  Direct Path Read Происходит при  parallel processing влияют: св-во CACHE объекта, parallel_degree=AUTO  serial Direct Path Reads влияют: _small_table_trashold, cache_size, кол-во блоков объекта в кеше и т.д.  Stored on the Exadata Storage Function performed Smart scan executed from function performed Direct Path Read, performed from Full Scans. Может быть отключен на system/session/statement levels: Пример: alter session set cell_offload_processing=FALSE, select --+ opt_param(‘cell_offload_processing’, ‘false’)

7  Возвращаются только необходимые столбцы  Бенефит в уменьшении объема передаваемых данных со Storage Cells на DB tier

8  Позволяет проталкивать предикаты на уровень Storage Cells. Возвращаются строки удовлетворяющие предикатам  SQL функции могут быть offloaded. Почти все одно строчные и почти никакие аггрегатные и аналитические.  select * from v$sqlfn_metadata where offloadable = 'YES'  Бенефит в уменьшении объема передаваемых данных со Storage Cells на DB tier

9 Query: select * from T where id = 'A10000000'; Plan: ----------------------------------------------- | Id | Operation | Name | ----------------------------------------------- | 0 | SELECT STATEMENT | | |* 1 | TABLE ACCESS STORAGE FULL| T | ----------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - storage(“ID"='A10000000') filter(“ID"='A10000000') “STORAGE” в операции TABLE ACCESS STORAGE FULL говорит о том, что объект будет читаться со storage cell. storage(“ID"='A10000000') в секции Predicate Information говорит о том, что Smart Scan с predicate filtering возможен Note: Перед миграцией на Exadata планы запросов можно смотреть установив CELL_OFFLOAD_PLAN_DISPLAY = ALWAYS (default AUTO, включается только когда работает на Exadata)

10 SQL> alter session set "_serial_direct_read"=always; Session altered SQL> alter session set cell_offload_processing=false; Session altered SQL> select count(*) 2 from t; COUNT(*) ---------- 613858416 Executed in 36,375 seconds

11 SQL> alter session set "_serial_direct_read"=always; Session altered SQL> alter session set cell_offload_processing=false; Session altered SQL> select count(*) 2 from t; COUNT(*) ---------- 613858416 Executed in 36,375 seconds SESSION EVENTS EVENT TOTAL_WAITS ------------------------------ ----------- direct path read 3002 SESSION STATS NAME VALUE ------------------------------------------------------------ --------------- cell physical IO interconnect bytes 7 971 905 536 cell physical IO bytes eligible for predicate offload 0 cell physical IO interconnect bytes returned by smart scan 0 cell scans 0

12 SQL> alter session set "_serial_direct_read"=always; Session altered SQL> alter session set cell_offload_processing=true; Session altered SQL> select count(*) 2 from t; COUNT(*) ---------- 613858416 Executed in 10,297 seconds

13 SQL> alter session set "_serial_direct_read"=always; Session altered SQL> alter session set cell_offload_processing=true; Session altered SQL> select count(*) 2 from t; COUNT(*) ---------- 613858416 Executed in 10,297 seconds SESSION EVENTS: EVENT TOTAL_WAITS ------------------------------ ----------- cell smart table scan 124 SESSION STATS NAME VALUE ------------------------------------------------------------ --------------- cell physical IO bytes eligible for predicate offload 7 971 905 536 cell physical IO interconnect bytes returned by smart scan 130 279 456 cell physical IO interconnect bytes 130 279 456 cell scans 1

14 SQL> alter session set "_serial_direct_read"=always; Session altered SQL> alter session set "_kcfis_storageidx_disabled"=true; Session altered SQL> select count(*) 2 from t 3 where ACCT_ID = 'A10000000 '; COUNT(*) ---------- 14359963 Executed in 4,703 seconds

15 SQL> alter session set "_serial_direct_read"=always; Session altered SQL> alter session set "_kcfis_storageidx_disabled"=true; Session altered SQL> select count(*) 2 from t 3 where ACCT_ID = 'A10000000 '; COUNT(*) ---------- 14359963 Executed in 4,703 seconds SESSION EVENTS EVENT TOTAL_WAITS ------------------------------ ----------- cell smart table scan 170 SESSION STATS NAME VALUE ------------------------------------------------------------ ------------- cell physical IO bytes eligible for predicate offload 7 971 905 536 cell physical IO interconnect bytes 38 148 952 cell physical IO interconnect bytes returned by smart scan 38 148 952 cell scans 1

16  Bloom Filters используются в Oracle начиная с 10.2  Позволяет проталкивать bloom filters на Storage Cells уровень  Бенефит в уменьшении передачи ненужных данных со storage на DB level  Отключается параметром “_bloom_predicate_pushdown_to_storage“=false  Статистика фильтрации в представлении v$sql_join_filter

17 select --+ parallel(t1 2) parallel(t2 2) count(*) from t1, t2 where t1.id = c.id and t1.col1 = 'A'; ------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | TQ |IN-OUT| PQ Distrib | ------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 3812G| | | | | 1 | PX COORDINATOR | | | | | | | 2 | PX SEND QC (RANDOM) | :TQ10002 | 3812G| Q1,02 | P->S | QC (RAND) | |* 3 | HASH JOIN BUFFERED | | 3812G| Q1,02 | PCWP | | | 4 | JOIN FILTER CREATE | :BF0000 | 6182M| Q1,02 | PCWP | | | 5 | PX RECEIVE | | 6182M| Q1,02 | PCWP | | | 6 | PX SEND HASH | :TQ10000 | 6182M| Q1,00 | P->P | HASH | | 7 | PX BLOCK ITERATOR | | 6182M| Q1,00 | PCWC | | |* 8 | TABLE ACCESS STORAGE FULL| T1 | 6182M| Q1,00 | PCWP | | | 9 | PX RECEIVE | | 13G| Q1,02 | PCWP | | | 10 | PX SEND HASH | :TQ10001 | 13G| Q1,01 | P->P | HASH | | 11 | JOIN FILTER USE | :BF0000 | 13G| Q1,01 | PCWP | | | 12 | PX BLOCK ITERATOR | | 13G| Q1,01 | PCWC | | |* 13 | TABLE ACCESS STORAGE FULL| T2 | 13G| Q1,01 | PCWP | | ------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 3 - access("T1"."ID"="T2"."ID") 8 - storage("T1"."COL1"='A') filter("T1"."COL1"='A') 13 - storage(SYS_OP_BLOOM_FILTER(:BF0000,"T2"."ID")) filter(SYS_OP_BLOOM_FILTER(:BF0000,"T2"."ID"))

18 -------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | TQ |IN-OUT| PQ Distrib | -------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | | | | | 1 | SORT AGGREGATE | | 1 | | | | | 2 | PX COORDINATOR | | | | | | | 3 | PX SEND QC (RANDOM) | :TQ10001 | 1 | Q1,01 | P->S | QC (RAND) | | 4 | SORT AGGREGATE | | 1 | Q1,01 | PCWP | | |* 5 | HASH JOIN | | 2132 | Q1,01 | PCWP | | | 6 | PX RECEIVE | | 2132 | Q1,01 | PCWP | | | 7 | PX SEND BROADCAST | :TQ10000 | 2132 | Q1,00 | P->P | BROADCAST | | 8 | PX BLOCK ITERATOR | | 2132 | Q1,00 | PCWC | | |* 9 | TABLE ACCESS STORAGE FULL| T3 | 2132 | Q1,00 | PCWP | | | 10 | PX BLOCK ITERATOR | | 1464M| Q1,01 | PCWC | | |* 11 | TABLE ACCESS STORAGE FULL | T4 | 1464M| Q1,01 | PCWP | | -------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 5 - access(“T3".“ID"="T4".“ID") 9 - storage(“T4"."JRNL_QTY"=(-1360000)) filter("T4"."JRNL_QTY"=(-1360000)) 11 - storage(SYS_OP_BLOOM_FILTER(:BF0000,“T3".“ID")) filter(SYS_OP_BLOOM_FILTER(:BF0000,"T3".“ID")) select --+ full(t3) full(t4) parallel(t3 2) parallel(t4 2) count(*) from t3, t4 where t3.id = t4. id and t4.jrnl_qty = -1360000;

19 SQL> alter session set "_bloom_predicate_pushdown_to_storage"=false; Session altered SQL> select --+ full(t3) full(t4) parallel(t3 2) parallel(t4 2) 2 count(*) 3 from t3, t4 4 where t3.id = t4.id and t4.jrnl_qty = -1360000; COUNT(*) ---------- 0 Executed in 101,141 seconds SQL> alter session set "_bloom_predicate_pushdown_to_storage"=true; Session altered SQL> select --+ full(t3) full(t4) parallel(t3 2) parallel(t4 2) 2 count(*) 3 from t3, t4 4 where t3.actg_trn_id = t4.ant_hold_jrnl_id and t4.jrnl_qty = -1360000; COUNT(*) ---------- 0 Executed in 13,61 seconds

20 SQL> select decode(qc_session_id, 793, 1, 2) execution, filtered, probed, probed - filtered as sent from v$sql_join_filter where qc_session_id in (793, 886); EXECUTION FILTERED PROBED SENT ---------- ---------- 1 1417311837 1493485510 76173673 2 41564 44024 2460

21  Бенефит в уменьшении читаемого объема данных  Строится для сегмента (например, партиция таблицы)  Во время SmartScan, при условии, что есть  Единственное средство мониторинга : статистика “ cell physical IO bytes saved by storage index”  Лучший эффект достигается на хорошо кластеризованных данных или около минимумов/максимумов любой кластеризации  Работает с простыми операторами сравнения =,, =, BETWEEN, IN, IS NULL, IS NOT NULL. Работает с bind variables  Не работает с != и %  Хранится только в памяти, а не на диске  Поддерживаются автоматически  Можно отключить alter session set "_kcfis_storageidx_disabled"=true;

22 SALES (TABLE) SALE_IDTYPESHIP_DATE 300DVD04.03.2011 301GIFT12.03.2011 302BOOK08.03.2011 ……… 790BOOK02.05.2011 791DVD18.06.2011 792BOOK21.06.2011 Storage index on the column SHIP_DATE region Idx MinMaxNull 104.03.201112.03.2011N ……….. 602.05.201121.06.2011Y ……….. 1 Mb region 1 Mb region

23 SALES (TABLE) SALE_IDTYPESHIP_DATE 300DVD04.03.2011 301GIFT12.03.2011 302BOOK08.03.2011 ……… 790BOOK02.05.2011 791DVD18.06.2011 792BOOK21.06.2011 Storage index on the column SHIP_DATE region Idx MinMaxNull 104.03.201112.03.2011N ……….. 602.05.201121.06.2011Y ……….. 1 Mb region 1 Mb region select * from sales where ship_date = ‘15.06.2011’ Сканироваться будет регион 6, регион 1 будет пропущен

24  Доступ только к необходимым партициям блягодаря partition pruning  С помощью Full Scan  В режиме direct path read (либо parallel processing, либо serial direct path read)  Соединение таблиц с помощью HJ, чтобы способствовать проталкиванию bloom filters

25  Compression always performed on DB tier  Decompression could be offloaded only if Smart  Хранится в Compression Units (обычно 32К или 64К). CU может занимать несколько Oracle блоков Compression Unit Block Header CU header Column 1 Column 2 Block Header Column 2Column 3 Column 4 Column 5 Block Header Column 6Column 7 Column 8 Column 9

26  Призван уменьшать время одно/мульти-блочных чтений  Может быть использован для SmartScan тех объектов, для которых CELL_FLASH_CACHE = KEEP  alter table test storage (cell_flash_cache keep)

27 1.Запрос на чтение блока 2.Одновременно посылается запрос на чтение с диска и с FlashCache 3.Тот ответ, который быстрее пришел выдается в DB Имеет возможность одновременно посылать запрос на чтение с диска и с FlashCache

28 1.Запрос на запись блока 2.Запись блока на диск 3.Подтверждение успешной записи 4.Помещение блока в кеш при условии, что данные оцениваются как необходимые для кеширования Запись происходит на диск, минуя FlashCache


Download ppt " Overview  Smart Scan  Predicate Filtering  Column Projection  Join Filtering  Storage Indexes  Hybrid Columnar Compression  Flash Cache."

Similar presentations


Ads by Google