db
pd_dump は、PostgreSQL のデータバックアップを取得するためのコマンドラインツールです。 どういう形でバックアップするのかは、まずは実例を見て頂けるとわかりやすい。 $ pg_dump -h 127.0.0.1 -U postgres dvdrental | less -- -- PostgreSQL database …
PostgreSQL で遊ぶときのテストデータを簡単につくりましょうという話です。 PostgreSQL にはDocker 公式のイメージがあるので、それを立ち上げればまずは PostgreSQL 環境はできあがりです。 $ docker run --name postgres -d -p 5432:5432 postgres:9.6.1 …
GitBucket 上で Pull Req とかやりとりしているんだけど、いろいろと評価をするために、これらのレビュー情報を定量化する必要に駆られました。 こういうのを手で数えたりしていると日が暮れるし、何が生産性だ腹を切って死ねということになる。GitBucket で…
あなたへ贈るメッセージ このFAQを読めや!!!!! 背景 DBUnit を使ったテストをしていてふとログを見てみると、以下のような WARN ログが出力されることがあります。 [main] WARN org.dbunit.dataset.AbstractTableMetaData - Potential problem found: T…
DBUnit の思想について - 理系学生日記 の記事の続きです。DBUnit では、基本的にデータセット単位、あるいはテーブル単位で比較するので、このカラムの値がこういうときにはテストを OK としたい、というようなカラム値単位でのテスト制御を行うためにはち…
DBUnit というと、JUnit 徹底入門だったり、現場で使える Java ライブラリだったりで紹介されていることからも分かるように、それなりにユーザベースも広く、"DB 関連のテストをするにあたってそういうライブラリがある" という認識はわりと多くの方が持たれ…
MHA を検証する、という話で最初に「どうしよう」と思ったのは MHA Manager をどこに置き、どう信頼性を確保するか、という点だった。 MHA Manager 自身は、MySQL のサービスには一切介在しないので、MHA Manager が例え落ちていたところでサービス影響はな…
諸々の事情により MHA を検証・導入しようという流れがあり、イマイチまだ全体像が見えていないのでまとめてみた。 MHA とは MySQL のマスタを failover させスレーブをマスタに昇格させるという面倒な作業を短時間(10-30 秒と言われている)で行わせることを…
もろもろ悲しい目にあったので、もろもろまとめないといけないという使命感に駆られています。 Oracle Database に限らず DBMS というのは、SQL をいかに速く実行したろかと粘着しまくるようにできていて、アクセスパス解析だったりを駆使しまくります。その…
取った。 ご褒美にシュタゲの一挙放送見ることができたから、全体としては有意義な一日でした。
なんか 1 週間で Oracle Silver 取らざるを得ない状況になってきたので大変に精神的によろしくなくなった。 資格試験、最近は特に意味ないと思ってるのだけど、今回ばっかりはぼくが悪い状況を作ったのでなんとかしたい。 とりあえず、黒本と呼ばれる教本お…
読んだ。SQLアンチパターン作者: Bill Karwin,和田卓人(監訳),和田省二(監訳),児島修出版社/メーカー: オライリージャパン発売日: 2013/01/26メディア: 大型本購入: 9人 クリック: 698回この商品を含むブログ (40件) を見るタイトルに珍しい感じの題がつけら…
Oracle の仕組みマジメに調べてたらよく Ask Tom っていうサイトが引っ掛かる。 Ask Tom Home謎のQAサイトここの Q&A を読み込むと分かるんだけど、Answer してる Tom、異常に Oracle の内部構造に詳しい。 一方で、Q&A と言ったら「教えて!goo」とか「Yaho…
導入 Oralce の SGA には共有プールの領域がある。共有プールと言っても、実態はメモリ領域であり、その中には色んな要素が格納される。親・子カーソルはその一例だし、SQL Text や、オブジェクトの情報、PL/SQL の情報など、本当に多岐に渡る。 ポイントは …
Oracle に同時接続できるユーザプロセス数の最大数は processes という初期化パラメータによって制御されるのだけれど、これを増やす段になって気をつけないとならないのが「増やすことによる弊害」だと思う。 processes を増やすということは、DB サーバか…
このエントリでは、Oracle DB についての挙動理解の整理をしたいとおもいます。 ヒストグラム統計 SQL の実行計画を作成するのはオプティマイザであるわけですが、Oracle のオプティマイザが実行計画を立てるとき、基本的には列値は一様分布に従うという仮定…
Oracle にはシーケンスオブジェクトというものがあって、これを使えばシステムグローバルなシーケンス値が取得できます。 順序疑似列 この値を使って主キーを生成するとかよくあるパターンですね。 select sequence_name.nextval from dual; -- これを連続で…
先に断っておくと、Oracle ベースの話。 SQL インジェクション云々の問題を除いても、実行する SQL にはバインド変数を使うのが正しい、という命題は OLTP に限っていえばほぼ真と言って良いと思う。ここで "限って"という限定を用いているのは、一部にはバ…
Oracle は 10 g 以降、基本的には CBO (Cost Base Optimizer) で実行計画を定めるようになる。では、何を基準としてコストを図るのかというとそれは統計情報で、Oracle のデフォルトだと、統計情報収集ジョブが日夜統計情報を収集・更新するという動作になっ…
ここで Java を使うのは諸事情のためなのだけど、Cassandra に対するアクセスは Thrift 経由となる。じゃぁ Thrift って何よというと、公式では以下のように説明されている。 Thrift is a software framework for scalable cross-language services developm…
諸事情で Cassandra で遊ぶことになった。 Cassandra とは何なのか 一言で言えば、非中央集権型で単一故障点のない(という触れ込みの)、カラム指向分散データベースといったところだと思う。Facebook によって作成され、今は Apache のトッププロジェクトに…
1 つの SQL に同じ問い合わせブロックが何度も何度も出現するときは、それを出現回数分 DBMS に検索させるのマジでムダだしパフォーマンス悪くなるから、with 文で一時的なビューを作るようにした方がいいです。 以下は、Oracle の公式ドキュメントに記載さ…
時刻をキーとしているログテーブルを insert するロジックを組んでいるケースで、このログテーブルにバースト的な insert が走ると、パフォーマンスが悪化するという事象が散見されました。 調査した結果、インデックス競合によって後段の insert が待ちにな…
猛烈に忙しかった仕事も若干落ち着いてきて、久しぶりに土日はゆっくり休養することができたので、積んでたこの本を読んだりしました。SQLクックブック ―データベースエキスパートのための実践レシピ集作者: Anthony Molinaro,木下哲也,有限会社福龍興業出版…
RMI でスレッド起動されるロジックにおいて、数十万程度の処理対象レコードを DB から一度に読みこむ形でプログラムを実装してたのだけれど、あんまり RMI が呼ばれすぎるとメモリが枯渇してヤベーみたいな話になったので、ページングさせて小分けに処理する…
CDTV のランキングデータを DB に突っ込むバッチ的プログラムを走らせておりましたところ、主キー制約違反でバッチが死にました。 元凶は 2010/08/07 付のランキングで、92 位がなぜか 2 つある。 ランキング用テーブルの主キーは日付 + 順位だったので、同…
SQL を実行する際は、SQL 実行用のバッファが確保された後、解析処理が行われる。解析にはハード解析とソフト解析があり、解析済みの SQL に対しては負荷の低いソフト解析が用いられる。両者の大きな違いは、ハード解析ではオブジェクトの定義チェック、オブ…
RAC (Oracle Real Application Clusters) は Shared Disk、Active/Active 構成のクラスタ。構成するには 2 台以上のノード、アプリケーションとの通信用のパブリック、ノード間通信用のプライベート(インターコネクト)、共有ディスクが必要。RAC 上の各イン…
相関サブクエリというと、内部クエリから外部クエリのテーブル(カラム)を参照するってヤツで、みなさん毎日相関サブクエリのことばかり考えていらっしゃることでしょうけど、そういうのキモいかもしれないからよくかんがえたほうがいいです。 ちなみにですけ…
数百万レコードを含むテーブルをいくつか JOIN する SELECT 文が数十分かかっても返ってこないという事象が時々発生する。bind 変数の値以外は同じ SQL を流しても、遅いときと早いときがあり、ちょっとした問題になる。 実行計画を見る限りでは、遅いときと…