kagamihogeの日記

kagamihogeの日記です。

2013-01-01から1年間の記事一覧

整合性制約の有無によるINSERTの速度差

(略)次のような場合は、パフォーマンス上の理由から、表の整合性制約を一時的に使用禁止にすることを検討してください。 ・表に大量のデータをロードする場合 ・表に大規模な変更を加えるバッチ操作を実行する場合(たとえば、既存の番号に1000を加えてすべ…

表の行順序とインデックス範囲スキャン

リレーショナルデータベースは論理レベルではテーブルの行順序は重要では無い。しかし、物理レベルではディスクなど順序が重要な意味を持つ媒体に格納されるのが現実である。このエントリでは、表の行の格納順序を昇順orランダムにし、それにインデックスを…

Play Frameworkさわる

環境 jdk1.7.0_21 Eclipse 4.2.0 SR2 ojdbc6.jar Oracle Database Express Edition 11g Release 2 play-2.1.1 やったこと 新規アプリケーションの作成 playを解凍したディレクトリに移動して、下記のように play new [新規アプリケーション名]と打つ。 play …

INSERT10万件をマルチスレッドで分割

20130426 追記 実行時間の計測方法がおかしかったので書き直しOracle内部の処理が並列になるパラレルクエリ等はともかく、Oracleの外部から与える複数のINSERTを分割しても意味は無い気がするが、実際にどうなるかやってみる。 環境 jdk1.7.0_17 Eclipse 4.2…

SQL*Loaderで1億件(1.6GB)ロードしてみる

ここんとこSQL*Loaderで遊んでるんで、もうちょい大きいデータファイルでもロードしてみるか、ってだけのエントリです。 環境 Oracle Database Express Edition 11g Release 2をWindows上で動作 SQL*Loaderを起動するクライアントと、Oracle Databaseは物理…

SQL*Loaderで大きい表に少量データロードするときの速度

Oracle Databaseユーティリティ11g リリース1(11.1)11 従来型パス・ロードおよびダイレクト・パス・ロードの「従来型パスを使用する場合」には、ダイレクトパスロードよりも従来型INSERTを用いた方がよいケースについての記述がある。 従来型パスを使用す…

SQL*Loader入力ファイルのソート順による実行速度とインデックスへの影響

SQL*Loaderの従来型INSERTモードを使用してインデックスが有効なテーブルへデータをロードするとき、入力ファイルがソートされているかいないかがどのような影響を及ぼすのかを確認する。 環境 Oracle Database Express Edition 11g Release 2をWindows上で…

データベースパフォーマンスアップの教科書 基本原理編

最初はOracle Databaseの実行計画の見方良くわからなんな、というのが出発点だった。ぐぐってると@IT:Databaseフォーラム全記事インデックス - Oracle SQLチューニング講座をオススメしてる人がいて、まずこれを読んだ。読んだが、もうちょっと根本的なと…

SQL*Loaderリファレンスのダイレクト・パス・ロードのパフォーマンスの最適化に書いてあることやる

Oracle Databaseユーティリティ11g リリース1(11.1)11 従来型パス・ロードおよびダイレクト・パス・ロードに、ダイレクト・パス・ロードのパフォーマンスの最適化という項目がある。OracleとSQL*Loaderの勉強ということで、ここに書いてある方法を試してい…

SQL*Loaderさわる

SQL*Loaderマッタク使ったことないんで、とりあえず使ってみる。参考: Oracle Databaseユーティリティ11g リリース1(11.1)第II部 SQL*Loader 環境 Oracle Database Express Edition 11g Release 2をWindows上で動作 Oracle SQL Developer 3.2 準備 下記の…

NOLOGGING有無によるダイレクトパスインサートの速度の差

Oracleは、NOLOGGINGを指定することでREDOログを抑制する結果としてINSERT等の速度を改善することが出来る……らしい。今回はその辺を実際にやってみることにする。参考URL: Oracle Database管理者ガイド 11g リリース2 (11.2) REDOレコードの書込みの制御 Or…

APPEND_VALUESの間違った使い方をしてみる

Oracleにはダイレクト・パス・インサートというINSERTを高速に行う機能がある。それを指示するためのオプティマイザ用のヒントは2種類あり、APPENDとAPPEND_VALUESとがある。文法上の違いだけを見ると、APPENDはINSERT 〜 SELECTに使うもので、APPEND_VALUES…

マルチテーブル・インサートで同一テーブルに複数データ挿入してみる

Oracleには、マルチテーブル・インサートという単一のINSERT文で複数のテーブルに挿入できる機能がある。参考: INSERT - Oracle Database SQL言語リファレンス 11gリリース2(11.2) SQLクリニック(12):1つのSQL文で複数の表にINSERTする絶品テクニック (1…

サブクエリの条件が悪くメインクエリがフルスキャンになる

環境 Oracle Database Express Edition 11g Release 2をWindows上で動作 起きたこととか 下記のようなSQLを実行したところ、ちょっと表現が難しいくらい猛烈な実行時間がかかってしまった。 UPDATE BILLING B SET AMOUNT = 0 WHERE B.BILLING_ID = (SELECT O…

10万件INSERTを1件ずつコミットと1回だけコミットしたときの速度比較してみた

これまたやる前から結果分かってることなんですが。ループでINSERT文を発行する処理を想定したとして、commitをループの1件ごとにするときと、ループ終了後に1回だけするとき、とではどのくらい速度に差が出るものなのかをやってみる。 環境 jdk1.7.0_17 Ecl…

SQL Developerのインポート機能でken_all.csvを読み込んでみる

SQL Developerのインポート機能を使用してファイルをテーブルにインポートする場合、その方法をいくつかの選択肢の中から選ぶことが出来る。どれも最終的にはテーブルが作られて*1、そのテーブルにSELECT文などのSQLでアクセス可能になる。ただし、どの方法…

Oracleの外部表でken_all.csvを読み込んでみる

外部表 - オラクル・Oracleをマスターするための基本と仕組みOracleの外部表という機能の存在を知ったので、試しに使ってみる。適当なcsvファイルということで、郵便番号データダウンロード - 日本郵便からダウンロードできる、住所の郵便番号一覧であるken_…

JBoss AS 7でWebSocket(Atmosphere)動かす準備するところまで

2014/06/19 追記 このエントリに書いてある内容は古くなっておりhttp://www.wildfly.org/使えば下記のソースからビルドなどの手順は不要です。 環境 jdk1.7.0_17 JBoss AS 7.2.0.Final Eclipse 4.2.0 やったこと WebSocketをJBossで動かしてみよう、と考えた…

Oracleのシーケンス・採番テーブル・MAX+1

20130426 追記 実行時間の計測方法がおかしかったので書き直しあるテーブルの列に連番が欲しいとき、Oracleではシーケンス(順序とかSEQUENCEとか)を使うのが定番。採番テーブルでも同様に連番を作れるが、シーケンスを使うのが定石と言われている。その理…

SQL Developerの表作成機能についてのメモ

CREATE TABLEのGUI。プロジェクトなどによってはテーブル定義書からSQLを生成するマクロであったり何らかのツール使って生成するのだけど、そういうのが無かったり個人の実験用途でテキトーにテーブルをこさえたいときは、文法の細かいとこまで覚えてなかっ…

FIRST_ROWSとALL_ROWS

ALL_ROWS 最高のスループットとなるように最適化される(全表スキャン、ソート/マージ結合が選択されやすくなる) FIRST_ROWS(n) レスポンスタイムを最短にするように最適化される(索引スキャンとネステッド・ループ結合が選択されやすくなる)Oracle SQL…

TimesTenにSQL Developerから接続する

環境 TimesTen 11.2.2.4.1 for Windows (32-bit) Winsows XP (クライアント・サーバ両方とも同じ) Oracle SQL Developer 3.2 やったこと TimesTenのインストール まずTimesTenをサーバ側となるWindowsマシンにインストール。インストーラにしたがってポチポ…

SQL Developerの簡易的なデータベース監視機能

SQL Developerは、本来的には開発向けのツールである。ただ、簡易ながらDB監視の、どちらかといえば運用向けの機能も備えている。といっても、V$系のビューを多少見やすくしたGUIといったところで、さすがにEnterprise Managerなどには遠く及ばないのだけど…

Clean Code アジャイルソフトウェア達人の技

読みやすく、バグのないコードとはどう書けばいいのか。この分野の名著としてはCODE COMPLETE 第2版 上が上げられるが、本書はより現代の事情に即した形で書かれている点が優れている。サンプルとして取り上げる言語はJava、対象となるシステムの分野はソー…

java.nio.file.Filesのメソッドを一通り使ってみた

2016/12/10追記 1.8で追加された主としてStreamを使うメソッド群を追加。jdk1.8.0_111を使用。 2020/03/21追記 jdk11で追加されたreadString/writeStringを追加。 Java SE 7徹底理解 第4回 New I/O 2の新しいファイルシステムインタフェース その1 | 日経ク…