kagamihogeの日記

kagamihogeの日記です。

DB

Docker for WindowsでOracle Database 18c XEうごかす

環境 Docker for Windows Version 2.0.0.0-win81 (29211) https://docs.docker.com/docker-for-windows/ Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production - https://www.oracle.com/technetwork/database/database-technologies/expre…

FlywayのdocumentationのConceptsを読んだ

https://flywaydb.org/documentation/ を読んだ。 Overview Flywayはデータベースマイグレーションをやりやすくします。 Tip: すぐに読み終えられるのでGet Startedセクションを先に目を通すことをオススメします。 Flywayはオープンソースのデータベースマ…

Flywayのチュートリアル読んだ

flyway使ってるの初めて見て良く分からん感じだったのでとりあえずチュートリアル https://flywaydb.org/getstarted/ を読んで訳した。 ※画像はすべて本家のものです。 Why database migrations? まず最初にShinyというプロジェクトを仮定し、ここでの成果物…

Spring Framework Reference Documentation 4.1.xのV. Data Access 18. Data access with JDBCをテキトーに訳した

http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#jdbc をテキトーに訳した。※途中で飽きたので一部抜けあり。 18. Data access with JDBC 18.1 Introduction to Spring Framework JDBC Spring Framework JDBCの抽象化が…

DbSetupというJavaのユニットテスト用のDBデータ作成ツールのUser Guidをテキトーに訳した

JavaでのDBのテストデータ作成はDbSetupが楽 - Qiita を見て DbSetup をちょっと試してみた。 それで、中々良さげだったのでユーザーガイド(http://dbsetup.ninja-squad.com/user-guide.html)をテキトーに翻訳してみた。 User Guide Don't clean up, prepa…

SQL Developer 4.1の新機能Multi-Cursor Editing, SQL Logging, Import Data Wizardを試す

環境 DB CentOS-6.5-x86_64 Oracle Database 11g Release 2(11.2.0.1.0) Enterprise Edition Java Java SE Development Kit 8u51 ツール Oracle SQL Developer 4.1.1(4.1.1.19) General Enhancments SQL Developer 4.1 New FeaturesによるとBy popular deman…

SQL Developer 4.1の新機能Instance Viewerを試す

環境 DB CentOS-6.5-x86_64 Oracle Database 11g Release 2(11.2.0.1.0) Enterprise Edition Java Java SE Development Kit 8u51 ツール Oracle SQL Developer 4.1.1(4.1.1.19) Instance Viewerの公式の説明 データベースの状態をグラフィカルに表現する新し…

SQL実践入門──高速でわかりやすいクエリの書き方

俺は実務経験をある程度こなしたあと、RDBの知識不足を認識したクチである。改めてRDBを勉強し始めて困ったことの一つは、実行計画の読み方がよくわからないことだった。もちろん、ぐぐればNESTED LOOP JOINが何かとかは出てくるし、公式のマニュアルも参考…

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

10万件のUPDATEをマルチスレッドで分割した場合、実行時間にどのような影響があるか。実際にやってみる。 環境 DB CentOS-6.5-x86_64 Oracle Database 11g Release 2(11.2.0.1.0) Enterprise Edition Java Java SE Development Kit 8u31 Eclipse Luna(4.4.1)…

インデックスがタクサンあるときのINSERTとUPDATEの速度

一般的に、インデックスを作りすぎるとINSERTやUPDATEのパフォーマンスに影響を与えるため、よろしくないとされている。今回は実際にはどういう現象を発生させるのか、を見てみる。 やること 100列のテーブルを作り、INSERTとUPDATEの速度を、インデックス数…

UPDATEのINSERT SELECT置換から学ぶ

概要 シバタツ流! DWHチューニングの極意 第4回 SQL書き換えテクニックによると、DWHにおけるUPDATEをダイレクトパスインサートを用いたINSERT /*+ APPNED */ INTO ... SELECT ...に置き換えることで高速化を見込める、というテクニックが紹介されている。…

Oracle Flashback QueryをSQL Developerでつかう

Oracle Flashback Technologyという機能は、たとえばついうっかりDELETEしちゃった行を元に戻すのに使える。EE以上で使用可能。SQL Developerに依存する機能ではないが、SCNの確認程度には便利なので、せっかくなので使う。 環境 DB CentOS-6.5-x86_64 Oracl…

Oracleのビットマップインデックスのロックを学ぶ

Oracleのビットマップインデックスを学ぶ - kagamihogeのblogでは、基本的な使い方とその構造について学習した。次に、一般的な解説として、ビットマップインデックスは更新時にビットマップ全体をロックするのでオンライン向けの機能では無い、とされること…

Oracleのビットマップインデックスを学ぶ

@kagamihoge ppは基本的にOracleサイトから落とせますよ( ^ω^) 商用利用せずに個人で実験するレベルであれば、製品版と同じ物を使用できますよ☆ xeは機能制限が多くて、、、— かーりん (@curry9999) August 5, 2014 OTN開発者ライセンス付きのソフトウエア…

jBatchでデータロードしてみる

やること jBatchを使用してテキストファイルの中身をOracleにロードする。 とはいえ、単なるデータロードであればワザワザjBatchを使うのはオーバーヘッドがかさむだけである。OracleでSQL*Loaderや、手動ならSQL DeveloperやA5:SQL等各種のツールを使うのが…

一回のSQLで明細・小計・総計を集計する

やりたいこと 下図のイメージのように、左側のデータを基に、右側の集計表を作りたい、とする。ポイントは、テーブル全体の販売個数だけでなく、種類ごとの小計、種類と名前ごとの小計も出力する。さらに加えて、明細行も一緒に出す、というのをやりたい。 …

PostgreSQLのfunction修正でsyntax error at or nearに悩んだ

環境 PostgreSQL 8.1.23 A5:SQL Mk-2 2.10.0 やったこと こんな感じにファンクションをPostgreSQLに作成したとする。 create or replace function gettest1(numeric) returns varchar as ' declare test_char varchar := ''AAA''; begin return test_char; e…

Oracleの空コミットは別セッションのトランザクションに影響を与えるか

Oracleの空コミット負荷はどのくらいか - kagamihogeの日記の続き。これを書いたときに芽生えた疑問があった。それは、あるセッションがDMLを伴うトランザクションをしているとき、それとは別のセッションが空コミットをしたら前者のトランザクションに影響…

Oracle Database 11g Release 2 Client (11.2.0.1.0) for Microsoft Windowsのインストール

環境 Windows7 64bit 手順とか まずはブツを手に入れる。 64bit:Oracle Database 11g Release 2 for Microsoft Windows (x64)からwin64_11gR2_client.zipをダウンロードする。 32bit:Oracle Database 11g Release 2 for Microsoft Windows (32-bit)からwin32…

Oracleの空コミット負荷はどのくらいか

空コミットとは、あるトランザクションでDMLの実行は無いがコミットする、ことを指す。一般的に通用する用語かどうかは謎だが、ひとまずこのエントリ内ではそういうもんとして話を進める。Oracleでコレがどういう時に現れるかというと、たとえばFOR UPDATE句…

OracleからのCSV出力を考える

軽くぐぐっただけなので間違っているかもしれないが、OracleにはCSV出力の機能なりAPIなりは備わっていない。ただし、SQL*PlusのコマンドであるとかPL/SQLを使うとかでCSV出力は実現出来る。今回のエントリでは、自分が調べられた範囲内でCSV出力の方法を色…

Oracle11gのPL/SQLのネイティブコンパイル

Oracle11gのPL/SQLのネイティブコンパイルを試す。 環境 DB CentOS-6.4-x86_64 Oracle Database Express Edition 11g Release 2 ツール Oracle SQL Developer 4.0(4.0.0.13.80) RLogin Version 2.14.7 やったこと 検証用プログラム どういう速度計測プログラ…

SQLトレースさわる

環境 DB CentOS-6.4-x86_64 Oracle Database Express Edition 11g Release 2 ツール Oracle SQL Developer 4.0(4.0.0.13.80) RLogin Version 2.14.7 SQLトレースの取得 Oracle Database PL/SQLパッケージおよびタイプ・リファレンス11g リリース2(11.2) DBMS…

SQL DeveloperのSVN機能のメモ

環境 Oracle SQL Developer 4.0(4.0.0.13.80) RLogin Version 2.14.7 TortoiseSVN 1.8.4.24972 やったこと りポジトリのチェックアウトと編集 チーム -> Subversion -> チェックアウトと進む。初回のみSubversion関連のプラグインと思しきものの調整でやや時…

コミットせずINSERTし続ける

OracleのPL/SQLを使い無限ループでINSERTをし続けると何が起きるのか、をやる。実際には適当なところでキャンセルをかけたが、その理由も含めて表領域の状態やstatspackレポートの中身を見て何が起きるのかを確認していく。 環境 DB CentOS-6.4-x86_64 Oracl…

ライブラリキャッシュにヒットしないSQLを流し続けたときのstatspackを見る

statspackの使用例としてしばしば見かけるものの一つに、ライブラリキャッシュのヒット率がある。Oracleでは同一と見なされないSQLの書き方とかバインド変数の効果とかについての記述と共に記されることが多い。また、ヒット率はおおむねどの文献でも95%~9…

どのようにOracleを勉強してきたか

一昨年から去年にかけては、リレーショナルデータベースの分野の学習に注力すべく活動を続けてきた。具体的なRDBMSのプロダクトはそのときの仕事で使っていたという理由でOracleを選んだ。学習内容としてブログでまとめたものは、主に実行速度に影響を与える…

JPAからフェッチサイズを変更したかった

JPAだけで完結するのはさすがにムリがあったのでこういうタイトルにした。が、JPAプロバイダ固有のAPIのレベルではフェッチサイズを変更する効果を確認できた。JDBCのsetFetchSize変更時の動きをstatspackで見てみる - kagamihogeの日記ではJDBCを直接使用し…

JPAからJDBCのバッチ更新を使う

JDBCのaddBatchとexecuteBatchの頻度変更時の動きをstatspackで見てみる - kagamihogeの日記は、JDBCを直接使用していた。が、JPAから同じことをするにはどういう設定などをすればよいのか。それをやってみて、ついでに実行速度の違いも計測する。実際には、…

JDBCのaddBatchとexecuteBatchの頻度変更時の動きをstatspackで見てみる

JDBCのsetFetchSize変更時の動きをstatspackで見てみる - kagamihogeのblogに引き続いてstatspackの学習を続ける。昔書いたJDBC経由で100万件取得・追加してみた - kagamihogeのblogでは、JDBCのjava.sql.Statement#addBatch(String sql)とjava.sql.Prepared…