Oracleブロックの有効な使用(1)

4238 ワード

データブロック
  In an Oracle database, the block is the smallest unit of data file I/O and the smallest unit of space that can be allocated. An Oracle block consists of one or morecontiguous operating system blocks.
標準ブロックサイズ
  • データベース作成時にDB_を使用BLOCK_SIZEパラメータ設定;データベースを再作成しない限り、
  • は変更できません.
  • SYSTEMおよびTEMPORARY表領域
  • DB_CACHE_SIZE指定標準ブロックサイズのDEFAULTバッファサイズ:
  • 最小サイズ=1つの粒子群(4 MBまたは16 MB)
  • デフォルト=48 MB
  •   DB_BLOCK_SIZE初期化パラメータは、データベースの標準ブロックサイズを指定するために使用されます.ブロックサイズは、SYSTEM表領域、および任意の一時表領域に使用されます.指定しない限り、標準ブロックサイズは表領域のデフォルトブロックサイズとしても使用されます.Oracleでは、最大4つの追加の非標準ブロックサイズをサポートします.
      DB_CACHE_SIZEパラメータは、標準ブロックサイズバッファのキャッシュサイズを指定するために使用され、標準ブロックサイズはDB_BLOCK_SIZE指定です.
    注意:パーティクルグループは、連続的な仮想メモリ割り当て単位です.粒子群の大きさは推定SGAの総大きさに依存し,この総大きさはSGA_に基づいている.MAX_SIZEのパラメータ値は、推定されたSGAの大きさ<128 MBであれば4 MBである.それ以外の場合は16 MBです.
    非標準ブロックサイズ
  • 次の動的パラメータを使用して追加キャッシュ
  • を構成する.
  • DB_2K_CACHE_SIZEは2 KBブロック
  • に用いる
  • DB_4K_CACHE_SIZEは4 KBブロック
  • に用いる
  • DB_8K_CACHE_SIZEは8 KBブロック
  • DB_16K_CACHE_SIZE 16 KBブロック
  • DB_32K_CACHE_SIZE 32 KBブロック
  • nKが標準ブロックサイズの場合、DB_の使用は許可されません.nK_CACHE_SIZE
  • キャッシュあたりの最小サイズ:1つのパーティクルグループ
  • データベース・バッファ・キャッシュ初期化パラメータは、SGAデータベース・バッファ・キャッシュ・コンポーネントのサイズを決定します.これらのパラメータを使用して、データベースで使用されるさまざまなブロックサイズのキャッシュサイズを指定できます.データベースで複数のブロックサイズを使用する場合は、DB_を設定する必要があります.CACHE_SIZEと少なくとも1つのDB_nK_CACHE_SIZEパラメータ.各パラメータは、対応するブロックサイズにバッファキャッシュサイズを指定します.DB_nK_CACHE_SIZEパラメータのデフォルト値はゼロです.ブロックサイズがn KBのオンライン表領域がある場合は、このパラメータをゼロに設定しないでください.
    プラットフォーム固有のブロックサイズにはいくつかの制限があります.たとえば、プラットフォーム上の最大サイズが32 KB未満の場合は、DB_を設定できません.32K_CACHE_SIZE.また、最小ブロックサイズが2 KBより大きい場合はDB_を設定できません2K_CACHE_SIZE.
    注意:これらのパラメータは、標準ブロックサイズのキャッシュサイズを調整するために使用できません.例えば、DB_BLOCK_SIZEの値が2 KBであればDB_を設定する2K_CACHE_SIZEは違法です.標準ブロックサイズのキャッシュサイズは常にDB_CACHE_SIZEの値が確定します.
    非標準ブロックサイズの表領域の作成
    1 CREATE TABLESPACE tbs_1 DATAFILE 'tbs_1.dbf' SIZE 10M BLOCKSIZE 4K;

    --この句を指定するには、DB_を設定する必要があります.CACHE_SIZEと少なくとも1つのDB_nK_CACHE_SIZEパラメータ、この句で指定された整数は、あるDB_nK_CACHE_SIZEパラメータの設定値対応
    Small Block Size:
  • Advantages
  • Small blocks reduce block contention, because there are fewer rows per block.
  • Small blocks are good for small rows.
  • Small blocks are good for random access. If it is unlikely that a block will be reused after it is read into memory, then a smaller block size makes more efficient use of the buffer cache. This is especially important when memory resources are scarce, because the 

  • size of the database buffer cache is limited.
  • Disadvantages
  • Small blocks have relatively large overhead.
  • Depending on the size of the row you may end up storing only a small number of rows per block,. This can cause additional I/Os.
  • Small blocks can cause moreindex blocks to be read.
  • Performance:
  • For random access to a large object, as in an OLTP environment, small blocks are favored

  • Large Block Size:
  • Advantages
  • There is less overhead and thus more room to store useful data.
  • Large blocks are good for sequential reads.
  • Large blocks are good for very large rows.
  • Larger blocks improve the performance of index reads. The larger blocks can hold more index entries in each block, which reduces the number of levels in large indexes. Fewer index levels mean fewer I/Os when traversing the index branches.
  • Disadvantages
  • A large block size is not good for index blocks used in an OLTP environment, because they increase block contention on the index leaf blocks. 
  • Space in the buffer cache is wasted if you randomly access small rows and have a large block size. For example, with an 8 KB block size and a 50 byte row size, you waste 7,950 bytes in the buffer cache when doing a random access. 
  • Performance
  • Sequential access to large amounts of data, as in a DSS environment, prefers large blocks.

  •