Oracleのパーティションについてまとめてみた

Published: 2016年2月6日 by tomsato

◼︎ 概要

Oracle勉強シリーズ

◼︎ パーティションについて

パーテョションとはOracleで大きな表や索引をデータベース内部で複数に領域に分割して管理するための仕組み
例えば4半期毎にパーティションを分割させた場合
通常の[1つの表]->パーティション化すると->[[1-3月][4-6月][7-9月][10-12月]]などに分割させることができる

◼︎ パーティションのメリット

  1. パーティション単位の検索ができるのでデータ量が増えてもパフォーマンスが低下しづらくなる
  2. データの更新、削除などをパーティション単位で行うことが可能
  3. 障害発生時はパーティション単位で影響がわかる

◼︎ パーティションの種類

種類 説明
レンジ 値の範囲でデータを分割する 売上日など日付データで分割
リスト 列の値が等しい行をパーティションとして分割する
複数の値を同一パーティションに割り当てることが可能
  • 地理的要素:関東というパーティションに東京, 神奈川と行を追加する
  • 日付文字列:201501など年月毎にパーティションを作ってその月に買われた商品を追加する
ハッシュ 内部的に生成されるハッシュ値を使ってデータを均等に分割する
レンジ、リスト化できない不連続なデータを均一に分割する場合に有効
顧客番号、商品番号などでデータを分割

◼︎ パーティションの確認

> select table_name,partition_name,tablespace_name,subpartition_count from user_tab_partitions order by table_name,partition_name;

// カンマ区切りで出力バージョン
> select table_name||','||partition_name||','||tablespace_name||','||subpartition_count from user_tab_partitions order by table_name,partition_name;

◼︎ パーティションの作成

yyyymmのリストパーティションを作成してみたSELECT時に「WHERE SELL_YM=’201601’」と指定すると’201601’のパーティションだけ見に行くのでテーブルフルスキャンしなくなるので早くなる

// テーブルの作成
CREATE TABLE TEST_TABLE (
 SELL_YM CHAR(6) NOT NULL,
 USER_ID VARCHAR2(12)
)
PARTITION BY LIST (SELL_YM)
(
    PARTITION B201601 VALUES ('201601'),
    PARTITION B201602 VALUES ('201602'),
    PARTITION B201603 VALUES ('201603'),
    PARTITION B201604 VALUES ('201604'),
    PARTITION B201605 VALUES ('201605'),
    PARTITION B201606 VALUES ('201606')
);
// データの追加
INSERT INTO TEST_TABLE (SELL_YM, USER_ID) VALUES ('201601', 'tomsato');

コメントを書く

※ 個別に返信が必要な時のみご記入ください

※ Emailは公開されません

※ 承認されると名前・コメントが下記に表示されます

コメント一覧

最近の投稿

ビジュアルリグレッションテストについてまとめ、ネットで調べると数多くのライブラリがありどれがどんな立ち位置なのか全体像がわかりずらかったのでどんな種類があるのか入門の入門としてまとめます、またPlaywrightを使って実際に触ってみました

社内ツールなどの超小規模なAPIをGolangで実装する際にフレームワークを使うべきかを、実際にnet/httpを使った実装とフレームワークを使った実装を比較することでどれだけ優位性があるかを見ていきたいと思います。今回はフレームワークにはシンプルで使いやすそうなEchoを使うことにします。

vue-pdfを使ってNuxt.jsで作成しているアプリケーションに pdfスライドを表示させるサンプルを作成しました README.md通りに実装してもうまくいかないところがあったのでそのあたり含めてまとめます

Vue.js / Nuxt.jsにおけるログインの実装方法をまとめる Auth0やNuxt.jsのAuth Moduleとmiddlewareについて調べつつサンプルを作成することで理解を深める

コンポーネント設計について考える Atomic DesignやPresentational Component, Container Componentについてまとめつつ 自分だったらVue.js / Nuxt.jsでどういうコンポーネント設計にするかについてまとめます

カテゴリ一覧

タグ一覧