タグ

SQLに関するsosukのブックマーク (8)

  • JBOSSにおけるコネクションのバリデーション - Qiita

    JBossにおけるコネクションのバリデーション JBossを起動したままDBセッションを強制切断してみたら、コネクションプールを自動で再接続してくれなかった。 JBossの再起動は運用上やりたくないので色々と調べてみた。 どんな機能か コネクションプール中のアイドル状態のコネクションに対して、定期的、もしくはアプリケーションスレッドのコネクション取得直前のタイミングで、コネクションの有効性検証(バリデーション)を行うことができる。 アプリケーションスレッドからのリクエストによってアイドルコネクションを貸し出すんだけど、貸し出す直前にコネクションの有効性チェックを行ってくれる便利機能。 無効になってたら、そのコネクションを破棄して再接続を行ってくれる。 コネクションが無効になるケース JBossは稼働したまま、DBだけ再起動した場合 一定時間そのコネクションを使用しなかった場合 KILL文で

    JBOSSにおけるコネクションのバリデーション - Qiita
  • SQLで羃等にDBスキーマ管理ができるツール「sqldef」を作った - k0kubun's blog

    sqldefのリポジトリ github.com これは何か Ridgepoleというツールをご存じでしょうか。 これはRubyのDSLでcreate_tableやadd_index等を書いてスキーマ定義をしておくとそれと実際のスキーマの差異を埋めるために必要なDDLを自動で生成・適用できる便利なツールです。一方、 で言われているように、Ridgepoleを動作させるためにはRubyやActiveRecordといった依存をインストールする必要があり、Railsアプリケーション以外で使う場合には少々面倒なことになります。*1 *2 そこで、Pure Goで書くことでワンバイナリにし、また別言語圏の人でも使いやすいよう、RubyのDSLのかわりに、誰でも知ってるSQLCREATE TABLEやALTER TABLEを書いて同じことができるようにしたのがsqldefです。 使用例 現時点ではMy

    SQLで羃等にDBスキーマ管理ができるツール「sqldef」を作った - k0kubun's blog
  • SQLトランザクション分離 実践ガイド | POSTD

    (注:2017/10/16、いただいたフィードバックを元に翻訳を修正いたしました。) (注:2017/10/11、いただいたフィードバックを元に翻訳を修正いたしました。) データベースのドキュメントで分離レベルを目にして、軽く不安を感じつつ、あまり考えないようにしたことはないでしょうか。トランザクションの日常の使用例できちんと分離について言及しているものはほとんどありません。多くはデータベースの初期設定の分離レベルを利用しており、後は運頼みです。しかし、来、理解しておくべき基的なトピックであり、いくらか時間を投入してこのガイドの内容を学習すれば、もっと快適に作業できるようになるでしょう。 私はこの記事の情報を学術論文、PostgreSQLドキュメンテーションから集めました。分離レベルの 何たる かだけでなく、適用の正確さを保持しつつ最大速度で使うにはいつ使うべきか、という疑問に答えるべ

    SQLトランザクション分離 実践ガイド | POSTD
  • SQLチューニング~お手軽に使えるヒント句まで - Qiita

    ORACLEでの経験を元に書いていますがコストベースのリレーショナルデータべースなら全般的に共通の考え方で対応できると思います。 SQLのチューニングといえば比較的容易に済むインデックスをとりあえず作成する。といった対応を取られがちですが、数万レコード程度でのデータ量ではあまり効き目がなく、またインデックスを乱立すると複数の条件がある時などにオプティマイザが誤作動を起こす要因ともなります。よって当にインデックスがないことが原因なのか?を熟考する必要があります。 基的にルールベースと違いコストベースになるのでオプティマイザによって作成される実行計画が望み通りの計画になっているのかを見ながらチューニングしていく必要があります。 今まで見てきた遅いSQLはとんでもない結合順や使用されるインデックスがなんでここから?といった実行計画になっていた事が大半でした。 そういう時に正しい実行計画をオプ

    SQLチューニング~お手軽に使えるヒント句まで - Qiita
  • N行のデータを「区切り文字を使って1列1行」にして返すクエリ - お だ のスペース

    大分前にこんなの書いてました 1列N行のデータを「区切り文字を使って1列1行」にして返すアドホックなクエリ - お だ のスペース が、Oracle で良いのを見つけました。 LISTAGG(集計関数) - オラクル・Oracle SQL 関数リファレンス 11gR2 から使える LISTAGG で実現できるようです。 Oracle だけではアレなので SQL Server のも紹介します。 カラムの値からカンマ区切り (CSV) の文字列を生成する - SQL Server 入門 XML型を経由するのは思いつかなかったですね~。 2014/12/23追記: コメントにて教えてもらいました。LISTAGG より XMLAGG の方が良いようです。 Listagg function excdding 4000 characters | Oracle Community LISTAGG だと

    N行のデータを「区切り文字を使って1列1行」にして返すクエリ - お だ のスペース
    sosuk
    sosuk 2015/12/02
  • OracleのSQLのアンチパターンの問題集1

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    OracleのSQLのアンチパターンの問題集1
  • 日常用語でnullを理解する(2) - 極北データモデリング

    SQLにおけるnullは「値があることは分かっているが、それが何なのかはわからない」という意味だ。 「値がない」という意味ではない、ということに注意しなくてはならない。 nullは「値がない」ではない nullを「値がない」という意味だと考えてしまうと、 'a'と'b'とnullを連結した結果が、nullになる 1 + nullがnullになる といったSQLの挙動の意味が理解できなくなる。 nullが「値がない」という意味なら select 'a' || 'b' || null の結果には少なくとも'ab'が含まれているはずあって、「値なし」になってしまうのはおかしい。 また select 1 + null の結果が「値なし」になってしまうのも何だかよくわからない。 つまりSQLは、nullを「値がない」という意味のものとしては扱わない。 が、「値がない(まだない or あり得ない)」と

    日常用語でnullを理解する(2) - 極北データモデリング
    sosuk
    sosuk 2009/07/18
    NOT INのサブクエリが1行でもNULLを返すと、メインクエリはNULLになる。
  • 日常用語でnullを理解する(1) - 極北データモデリング

    セルコのなんかには、nullを参照するSQLが直感に反する結果を返すことがあると書いてあるのだが、3値論理は「論理」というぐらいだから人間にとって*常に*不可解なものであるはずがないし、だったらnullがらみのSQLの挙動を直感的・日常的な用語だけで(=ドモルガンの法則とか使わないで)説明することができるはずだ... と思って新人研修で試してみたところ良好な結果を得られたので、ブログにも書く。 どこが直感的ではないか nullが何かすごくやばいものだとされる根拠のひとつに、 NOT INのサブクエリがnullを1行でも返すと、メインクエリの結果が常に0件になる という現象がある。 たとえば「3値論理とNULL」には、サブクエリがnullを1つ返したために「Bクラスの生徒と年齢が一致しないAクラスの生徒」が特定できない、という例が挙げられている。 この結果が直感に反するように思われるのは、

    日常用語でnullを理解する(1) - 極北データモデリング
    sosuk
    sosuk 2009/07/18
    3値論理式。ほほぅ、改めて納得しました
  • 1