在表上更新/刪除操作並不會將表放在 In-Memory 資料庫中 (文件 ID 2179002.1)

mosdoc發表於2016-12-04

適用於:

Oracle Database - Enterprise Edition - 版本 12.1.0.2 和更高版本
本文件所含資訊適用於所有平臺

目標

無論何時我們想放置表到 in-memory 中,我們需要訪問整個表以把表放入 in-memory。

這篇文件將提供資訊說明,一個表上更新/刪除語句將不會像查詢語句一樣把表放置到 in-memory 中。

解決方案

已經使用 In-Memory 的配置資訊:

SQL> show parameter inmemory

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
inmemory_clause_default              string
inmemory_force                       string      DEFAULT
inmemory_max_populate_servers        integer     2
inmemory_query                       string      ENABLE
inmemory_size                        big integer 200M
inmemory_trickle_repopulate_servers_ integer     1
percent
optimizer_inmemory_aware             boolean     TRUE


連線到 sales 使用者實施測試:

SQL> conn sh/oracle
Connected.


SQL> SELECT segment_name, inmemory_size, bytes FROM V$IM_SEGMENTS;

no rows selected


SQL> alter table times inmemory priority critical;

Table altered.


SQL> select TABLE_NAME,INMEMORY_PRIORITY,INMEMORY_DISTRIBUTE,INMEMORY_COMPRESSION from user_tables where table_name='TIMES';

TABLE_NAME                INMEMORY INMEMORY_DISTRI INMEMORY_COMPRESS
------------------------- -------- --------------- -----------------
TIMES                    CRITICAL AUTO            FOR QUERY LOW


SQL> SELECT segment_name, inmemory_size, bytes FROM V$IM_SEGMENTS;

no rows selected


SQL> update times times set END_OF_CAL_YEAR=sysdate;

1826 rows updated.


SQL> commit;

Commit complete.


SQL> SELECT segment_name, inmemory_size, bytes FROM V$IM_SEGMENTS;

no rows selected


上面的更新語句沒有把表放置到 in-memory:

用簡單查詢比較:

SQL> select count(*) from times;

  COUNT(*)
----------
      1826

1 row selected.


SQL> SELECT segment_name, inmemory_size, bytes FROM V$IM_SEGMENTS

SEGMENT_NAME                   INMEMORY_SIZE      BYTES
------------------------------ ------------- ----------
TIMES                                1179648     524288

1 row selected.


上面的查詢語句把表放置到 in-memory 中。


透過上面的測試結果,我們可以看出更新/刪除語句不會把表放入到 in-memory 資料庫,除非我們訪問整個表的所有行。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31393455/viewspace-2129700/,如需轉載,請註明出處,否則將追究法律責任。

相關文章