找了一台Exadata X8M-2 1/4配,安装了一个单实例的19c数据库。
安装了标准的SSB Schema,事实表lineorder近4亿行,近42GB:
NUM_ROWS BLOCKS AVG_ROW_LEN TABLESPACE_NAME
---------- ---------- ----------- ------------------------------
384016850 5476760 98 USERS
PARTITION_NAME SEGMENT_TYPE SIZE(MB)
---------------- ------------------ ----------
TABLE 42787.1875
在做基线测试的时候,发现性能比上一次慢了很多。
怀疑Smart Scan没起作用,咨询了一下同事,果然,原来是我的SGA使用了默认值,即200多G。SGA值设太大,导致Smart Scan没有启用。可以调整这个参数 _small_table_threshold tips。
但我还是直接把SGA调小了,然后需要重启实例。
alter system set sga_max_size=47616M scope=spfile;
果然,这一次测试就快多了。
从106秒到4秒。Smart Scan过滤掉了98%的数据。
在Smart Scan默认启用的情况下,就可以使用一些参数或hint来控制Smart Scan了:
SQL> show parameter cell
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cell_offload_compaction string ADAPTIVE
cell_offload_decryption boolean TRUE
cell_offload_parameters string
cell_offload_plan_display string AUTO
cell_offload_processing boolean TRUE
cell_offloadgroup_name string
例如:
SQL> alter session set cell_offload_processing=false;
Session altered.
SQL> alter system flush buffer_cache;
System altered.
SQL> set timing on
SQL> @4_3
...
361 rows selected.
Elapsed: 00:00:31.40
禁用后确实是慢了,但还是没有慢到最初那种程度,所以模拟还是模拟。
以上所有性能测试前,均执行了以下。测试语句用的是SSB 4_3
alter system flush buffer_cache;
- Storage Indexes vs Database Indexes IV: 8 Column Limit (Eight Line Poem)
- Monitoring Smart Scans in Oracle Exadata
- Top Two Parameters in Oracle Exadata
- What Is Smart Scan?
- Smart Scans Meet Storage Indexes
- Partitioning and/or/with Exadata?
- Ten Tips for Database Performance Tuning (on Exadata, and in general) from Performance Expert Cecilia Grant
- How to Determine if Columnar Format on Exadata Flash Cache is Being Used
- Protect your Data with Oracle’s MAA and MSA (Part I)
- Protect your Data with Oracle’s MAA and MSA (Part II)