本篇文章对DB In-Memory涉及到的参数进行介绍:
首先看一下DB In-Memory相关的所有参数:
SQL> show parameter INMEMORY
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
inmemory_clause_default string
inmemory_force string DEFAULT
inmemory_max_populate_servers integer 1
inmemory_query string ENABLE
inmemory_size big integer 1G
inmemory_trickle_repopulate_servers_ integer 1
percent
optimizer_inmemory_aware boolean TRUE
1.INMEMORY_SIZE参数:
这个参数控制了SGA中In-Memory Area的大小。默认值为0,代表DB In-Memory功能不启用。如果要启用DB In-Memory功能需要将这个值置为非0且必须大于100M的值。
在多租户环境中,如果在CDB级别下对于该参数的设置代表了整个CDB的In-Memory Area的大小。同时这个参数也可以在每个PDB下进行设置,对于所有PDB设置的值的和可以小于、等于或大于整个CDB的设置,但是CDB的INMEMORY_SIZE的值是包括CDB$ROOT和所有PDB可以使用的值的上限。在默认情况下PDB的INMEMORY_SIZE的值和CDB下参数值大小相同,代表改PDB可以使用所有CDB下的In-Memory Area。
2.INMEMORY_FORCE参数:
这个参数用来控制是否允许表和物化视图使用In-Memory store。
默认值为DEFAULT,代表可以实现在对象级别设置INMEMORY和NO INMEMORY。
如果设置为OFF,代表表和物化视图无法使用In-Memory。
3.INMEMORY_QUERY参数:
这个参数用来控制是否允许In-Memory查询,默认为ENABLE。默认值代表查询可以访问存储在In-Memory中的数据库对象,该参数还可以设置为DISABLE来禁止访问In-Memory中存储的数据库对象。
4.INMEMORY_CLAUSE_DEFAULT参数:
这个参数用来对新表和新物化视图指定一个默认的In-Memory设置。
该参数默认设置为空,代表对于新表和新的物化视图默认不启用In-Memory,效果等同于设置该值为NO INMEMORY。
如果指定了改参数为INMEMORY,则新创建的表和物化视图在创建时如果没有指定INMEMORY条件,则默认对该表或物化视图启用In-Memory。只对该参数设置后创建的表和物化视图生效。
5.INMEMORY_MAX_POPULATE_SERVERS
该参数控制了后台负责将数据库对象放入到In-Memory column store的server数量,默认为系统的core的数量。该参数根据系统负载情况进行调整,防止系统过载。
6.INMEMORY_OPTIMIZER_AWARE
该参数控制了数据库优化器在计算cost时是否考虑In-Memory。默认为TRUE,即考虑。在设置为FALSE时,优化器在对SQL语句进行优化时将忽略In-Memory的性能。
7.INMEMORY_TRICKLE_POPULATE_SERVERS_PERCENT
该参数控制了对于In-Memory column store中的数据进行重新载入时最多允许的载入进程占总载入进程的比例,比如INMEMORY_MAX_POPULATE_SERVERS设置为10,INMEMORY_TRICKLE_POPULATE_SERVERS_PERCENT设置为10,则最多用于重新载入的servers数量为10*10%=1。