タグ

dbに関するkiririmodeのブックマーク (222)

  • 敢えてDBIx::Connectorを紹介してやろうじゃないか - Articles Advent Calendar 2011 Dbix

    わりと古くからDBIx::Connector使ってるんで、DBIx::Handlerマンセーなこのadvent calendarでDBIx::Connectorをどう使ってるのかを軽く話したいと思います。 使いどころ DBIx::ConnectorにしろDBIx::Handlerにしろ、DBIの面倒くさいところを簡単にしてくれるツールですよね。でも僕のスタンスとしては「どちらにしろ帯に短したすきに長しじゃねーの?」と思ってます。もちろん便利なんだけど、別に全てのかゆいところまで手が届くわけじゃないし・・・やってほしくないことをする事もあるし・・・というわけで当に当にコントロールが必要な部分では今でも自分で制御できるように自分で細かい所まで書く事にしています。 じゃあDBIx::Connectorをどこで使ってるかというと、「DBへの接続が切れるかもしれないぐらい長く走るスクリプトで、気

    敢えてDBIx::Connectorを紹介してやろうじゃないか - Articles Advent Calendar 2011 Dbix
  • 第25回 MongoDB最前線! 効果的なシャーディングとバックアップ:サイバーエージェントを支える技術者たち|gihyo.jp … 技術評論社

  • DBIx::QueryLog でクエリの実行計画も丸見えにする! - Articles Advent Calendar 2011 Dbix

    好きって言葉は最高さーー!!!!kamipoです!!今日はAKB48の紅白対抗歌合戦があるので急いでいきたいと思います!! DBIx::QueryLog で EXPLAIN の結果もロギングしたい xaicron さんの9日目のエントリ、[/articles/advent-calendar/2011/dbix/9:title=DBIx::QueryLogDBI で実行された SQL を丸見えにする!]でおなじみの神モジュール DBIx::QueryLog 便利ですよね!? でもEXPLAINの結果もロギングできたらもっと便利だと思いませんか?僕は思いました!! そこで、EXPLAIN の結果もロギングできるパッチを取り込んでもらったので、新しいのが出たら使えるようになると思います!(いまはまだMySQLだけですが…) つかいかた とくにクエリに意味はないですが、こういうクエリを投げる

    DBIx::QueryLog でクエリの実行計画も丸見えにする! - Articles Advent Calendar 2011 Dbix
  • クエリキャッシュは切ったほうがいいんじゃなイカ? : DSAS開発者の部屋

    KLab Advent Calendar 2011 「DSAS for Social を支える技術」の2日目は、昨日に引き続き、MySQLを骨までしゃぶるためのテクニックです。 ソーシャルゲームは一般サイトよりもDBへの更新クエリの割合が多くなりがちです。更新クエリが多いMySQLでは、通常は有益なクエリキャッシュが無益どころか有害になります。 そもそもキャッシュヒット率が低い。20%以下なんてこともザラにある しかもクエリキャッシュの更新はグローバルなロックを取得する からです。特に後者は問題です。ただの参照クエリもクエリキャッシュを更新する上に、更新クエリはクエリキャッシュの全エントリをチェックして、更新したテーブルに影響がありそうな全キャッシュをdiscardしていくためです。たとえばユーザーの行動力のようなパラメータを格納した参照も更新も多いテーブルでクエリキャッシュが有効になって

    クエリキャッシュは切ったほうがいいんじゃなイカ? : DSAS開発者の部屋
  • MySQL 5.1のスロークエリログ

    MySQL 5.1で追加されたメジャーな機能の影に隠れた、地味だが便利な改善がある。それがスロークエリログに関する仕様である。MySQL 5.0まではスロークエリログは1秒未満のクエリを捕捉することが出来なかった。が、MySQL 5.1では1マイクロ秒までのクエリを記録できるようになっている。従って、0.5秒かかるけど大量に実行されてパフォーマンスに大きな影響を与えている!というようなクエリの発見が出来るようになった。1秒未満のクエリを追跡したい場合、例えば以下のような設定をする。 [mysqld] slow_query_log=ON slow_query_log_file=mysql-slow.log long_query_time=0.1 MySQL 5.0まではlog_slow_queryというオプションだったのが、MySQL 5.1ではslow_query_logというオプション名

    MySQL 5.1のスロークエリログ
  • latch cache buffers chains - 日本エクセム株式会社 Oracle待機イベント情報

    バッファ・キャッシュを使うためハッシュ・チェーンを探索したり変更を加えようとするセッションは、 必ずそのチェーンを管理しているcache buffers chainsラッチ(以降、CBCラッチ)を獲得しなければなりません。 このラッチを獲得する時に、競合が発生するとlatch:cache buffers chains待機イベントで待機します。 Oracle9i以降からは読み取り専用を保護するため、チェーンを探索する場合にはCBCラッチを 共有モードで獲得し、競合を減らせるようになっています。これには一つ注意すべきことがあります。 理論的にはSELECT文が同時に発行された場合は、CBCラッチを共有できるため、 CBCラッチ競合が発生してはいけませんが、実際テストをしてみるとラッチ競合は相変らず発生します。 その理由は、バッファ・ロックと関連があります。読み取り専用で作業を行うために共有モー

    latch cache buffers chains - 日本エクセム株式会社 Oracle待機イベント情報
  • Perl Hackers Hub:第9回 高速なWeb APIの実装とテスト―Mobage APIを支えるノウハウ(2)|gihyo.jp … 技術評論社

    大量にあるサーバへのアクセスを効率的に扱う Mobage APIでは、接続するDBサーバやmemcachedサーバなどが大量にあります。サーバが増えても、アプリケーションの変更は最低限にしたいものです。ここでは、複数のサーバへのアクセスを簡単に記述する方法を紹介します。 DBへのアクセスを隠蔽する DBは一般的な、マスタ/スレーブ構成を採用しています。INSERT/UPDATE/DELETEのような更新系のクエリはマスタへ、SELECTなどの参照系のクエリはスレーブへいくようにしています。また、Sharding[11]をしているDBの系統もあります。 このように大量にあるDBへのアクセスを簡単に行うために、Mobage APIではDeNAの有澤高介さんが開発したDBIx::DBHResolver(現在のメンテナは同じくDeNAの山口徹さん)を利用してDBへのアクセス情報を隠蔽(いんぺい)し

    Perl Hackers Hub:第9回 高速なWeb APIの実装とテスト―Mobage APIを支えるノウハウ(2)|gihyo.jp … 技術評論社
  • 作るプログラムの機能や性能で勝負したい。そうだ、データベースを勉強しよう - きしだのはてな

    さて、アルゴリズムの勉強のしかたと、ラムダ計算の勉強のしかたの目星をつけました。 アルゴリズムの勉強のしかた - きしだのはてな ラムダ計算の勉強のしかた、プログラム意味論 - きしだのはてな これでここで書いたプログラムの理論の基礎は勉強できたことになるんじゃないかと思います。 プログラムの理論とはなにか - きしだのはてな ところで、プログラムの勉強地図としてこういう図を書きました。 で、ハードウェアまわりについても、プロセッサを支える技術やネットワークはなぜつながるのかでひととおり勉強したとしましょう。 じゃあ次は、アジャイルか?テストか?UIデザインか?となるわけですが、やはりプログラマなら、プログラムの作り方や使いやすさの前に、作るプログラムの機能や性能で勝負したいじゃないですか。 いい感じに関数が分割できるよとか、読みやすい名前がつけれるよとか、効率よく仕事して定時に帰れるよと

    作るプログラムの機能や性能で勝負したい。そうだ、データベースを勉強しよう - きしだのはてな
  • パフォーマンス劣化はインデックスのせいなのか!? をみっちり検証

    リーフブロックの中に格納されている値とは? それでは、実際にリーフブロック-1と0にはどのような値が格納されているのか、ブロックの中身を確認してみることにしましょう。 ブロックの中身は、以下コマンドで確認できます。 SQL> SELECT DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(16831123) as "FILE_ID(LEAFBLOCK-1)", 2 DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(16831123) as "BLOCK_ID(LEAFBLOCK-1)", 3 DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(16831262) as "FILE_ID(LEAFBLOCK0)", 4 DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(16831262) as

    パフォーマンス劣化はインデックスのせいなのか!? をみっちり検証
  • SQL Serverというブラックボックスを開いてみる

    SQL Serverというブラックボックスを開いてみる:Dr. K's SQL Serverチューニング研修(1)(2/3 ページ) 何がパフォーマンス・チューニングのカギになるのか? それには内部構造の理解と未来像の把握が不可欠だ! SQL Serverのアーキテクチャで最重要なのはメモリ管理 SQL Serverのアーキテクチャを理解するうえで最も重要なのはどこかというと、ずばり「メモリ」です。メモリこそがSQL Serverで一番クリティカルな資源であり、これがどう使われているのかを知ることが、SQL Serverの深い理解につながります。 SQL Serverのメモリ内部の構成を見てみると、図2のようになります。この中でもとりわけ重要なのが、「メモリプール」です。例えばこの中の「Buffer Cache」には、物理ディスクから読み込んだ8Kbytes単位のデータがすべていったんプー

    SQL Serverというブラックボックスを開いてみる
  • SE RACのメリット、デメリットをしっかり把握する

    ただし、Standard EditionでのRACの使用は制限付きとなりますので、内容をよく把握しておく必要があります。制限は、以下の3つです。 RAC環境に搭載可能なCPUのソケット数 クラスタウェアには、Oracle Clusterwareのみ使用可能 データ格納方法にはASMを使用 それぞれについて説明します。 RAC環境に搭載可能なCPUのソケット数 各OSによって異なりますが、Standard Editionではシステムに搭載可能なCPUソケット数に制限があります。具体的には、 IAサーバ(WindowsLinux、Solaris on x86互換)、もしくはApple Mac OSの場合 → 最大4ソケット そのほか(SPARC Solaris、HP-UXAIXなど)の場合 → 最大2ソケット 上記が、RAC環境に搭載可能なCPUソケット数です。RACは複数のサーバから構成

    SE RACのメリット、デメリットをしっかり把握する
  • データベースの「論理構造」とは何か

    「表(セグメント)の構造」について 続いて、この表がどのように表領域へ格納されているのかを説明します。 表は、表領域内で「セグメント」という単位で管理されます。「1つの表」イコール「1セグメント」です。1つの表領域に2つの表を格納しているならば、「この表領域には、2つのセグメントがある」と表現できます(図3)。セグメントは必ず1つ以上のエクステントやデータブロックから構成されます。 「データブロック」の役割 データブロックとは、行データを格納するための最小単位のことです。通常はデータベース単位でデータブロックのサイズ(4KBや8KBなど)を設定します。 表内の行データは、全てデータブロックに格納されます。例えば、データブロックのサイズを8KBに設定し、1行の平均が1KBだったとすると、1データブロックには8行分のデータを格納できることになります(図4)。

    データベースの「論理構造」とは何か
  • インメモリKVSのRedisについて – Rest Term

    * wiki(Tech Note)のページ追加 このエントリーの内容を整理してwikiにもRedis関連のページを追加しました。 Redis – Tech Note Redis is an open source, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets. インメモリKVSのRedisを少し触ってみました。 さくらVPS(CentOS 5.6)にインストールしようと思ったのですが、yumのレポジトリだと今は古いバージョンしか入れられないようなのでソースからビルドしました。手順は公式の通りに。(参照: Download – Redis) また、/

    インメモリKVSのRedisについて – Rest Term
  • パーティショニングは大規模DBの性能向上に効く-@IT

    パーティショニングの種類 パーティショニングにはいくつかの種類があり、Oracleではデータの特性に合わせ、柔軟にパーティションの種類を選択できます。 パーティションを決定する際、重要となるポイントは次の3つです。 a. アプリケーションの特性 発行されるSQLのWHERE句条件に指定される列が、パーティションの分割方法に使用した列を指定するようになっているか b. テーブル構成 パーティションの分割方法・用途に適するような列が存在するか c. データの運用管理 データのサイクルや更新パターン(5年間のデータを保持し過去1年間を更新対象のデータとする、など)の洗い出し独立したメンテナンス管理操作が有効なシステムかどうか これら3つのポイントを照らし合わせたうえで、最適なパーティションの種類を検討します。 パーティショニングではパーティション・キーと呼ばれる、データを分割する際に基準となる列

    パーティショニングは大規模DBの性能向上に効く-@IT
  • パーティショニングは大規模DBの性能向上に効く

    パーティショニングのメリット パーティショニングを勧める理由として、次の3つのメリットが挙げられます。 パーティショニングのそれぞれのメリットを少し掘り下げて見てみましょう。 レスポンスの向上 1番目の「レスポンスの向上」とは、問い合わせの処理を高速化できるという最もよく知られた(代表的な)パーティショニングのメリットです。 先ほどの図3の売り上げデータの例から分かるように、データの特性や利用目的に合わせ、論理的にデータを区分けし、必要なパーティションだけを処理することでレスポンスの向上が図れます。この必要となる特定のパーティションだけを参照する機能を「パーティション・プルーニング」と呼びます(図5)。パーティション・プルーニングはOracleが自動的に実施するため、既存のアプリケーションから発行するSQLをパーティション用に修正する必要はありません。 コラム:パーティション・プルーニング

    パーティショニングは大規模DBの性能向上に効く
  • Oracle運用の基本「ログ」を理解しよう

    このようにトレースファイルには各プロセス名が含まれるので、ファイル名からどのプロセスのトレースであるかを判断できます。 トレースファイルには、エラーが発生した際だけでなく、SQL_TRACEなどの診断イベントを設定した場合に出力される情報についても記録されます。診断イベントを使用した場合でも同様です。 なお、トレースファイルは各プロセスと1対1で対応しています。プロセス稼働中に対応するファイルを移動したり削除すると、その操作以降の情報が出力されなくなりますので、注意が必要です。 ・トレースファイルは最大ファイルサイズを指定できる アラート・ログのファイルサイズは制限することはできませんが、トレースファイルは初期化パラメータの「MAX_DUMP_FILE_SIZE」で最大サイズを制限することが可能です。 しかし、ディスクの空き領域に問題がない限り、トレースファイルのサイズに制限をかけることは

    Oracle運用の基本「ログ」を理解しよう
  • Oracle 10gの正規表現で文字列操作を極める

    2.REGEXP_INSTR関数 次に、REGEXP_INSTR関数です。指定した正規表現に一致する部分が何文字目かを返します。 構文 REGEXP_INSTR(文字列または列名,条件) SQL> SELECT COL1,REGEXP_INSTR(COL1,'[0-9]') , 2 REGEXP_INSTR(COL1,'%') from TEST_REGEXP; COL1 REGEXP_INSTR(COL1,'[0-9]') REGEXP_INSTR(COL1,'%') ---------- -------------------------- ---------------------- ABCDE01234 6 0 01234ABCDE 1 0 @|=)(9&%$# 6 8 あいうえ3 5 0 6 rows selected.

    Oracle 10gの正規表現で文字列操作を極める
  • SE RACのメリット、デメリットをしっかり把握する

    SE RACのメリット、デメリットをしっかり把握する:Oracle SE RACで手軽に高可用性システム(1)(1/4 ページ) Oracle 10gからStandard EditionでもRACシステムを構築できるようになった。成功の鍵は、SE RACならではの制限事項や落とし穴をうまく乗り越えること。そのための情報を提供しよう。(編集部) ご存じの方も多いかと思いますが、Oracle9iではEnterprise EditionのオプションであったReal Application Clusters(以下、RAC)が、Oracle 10gからStandard Editionでも使えるようになりました(以下、SE RAC)。これによってRACを導入する際の敷居は大幅に下がったといえるでしょう。ただし、SE RACにはいくつか制限があります。Oracle 10gの新機能であるAutomatic

    SE RACのメリット、デメリットをしっかり把握する
  • 待ちイベントに関する検証 その4 - InsightTechnology 旧ブログ

    <待ちイベントに関する検証 その4> ペンネーム: ダーリン 【latch: shared pool/library cache】 さて、先週は結局 library cache の待ちが発生 “する” のか “しない” のか よくわからない解説で終了してしまいました。 今週はもう少し解説を続けます。 まず、実際に待ちが発生しているときの統計情報をもう一度見てみましょう。 今回は、v$latch の情報も同時に取得してみました。 前回と同様、同時 20 Session での検索処理です。 [ V$SYSTEM_EVENT の情報 ] event wait_class total_wait time_waited ---------------------------- ------------ ---------- ------------ latch: cache buffers chai

  • ロックをつぶせ! 最初に疑うべき原因

    動的パフォーマンスビューによる調査 問題となっているロックを特定していく作業に利用できるものが、その名前からも分かるように、V$LOCK、V$SESSION、V$SQLAREA、V$LOCK_OBJECTという動的パフォーマンスビュー注1です。それぞれの動的パフォーマンスビューからどのような情報を取得できるか確認するために、DESC[RIBE](各テーブルやビューの構成を表示するSQL*PLUSコマンド)コマンドと実際のSQL文で確認していきましょう。 注1:動的パフォーマンスビュー Oracleサーバが稼働している間、データベースの状態を保持している表に対するアクセスを可能にするビュー。「動的パフォーマンスビュー」「データディクショナリビュー」に関する詳細解説は、@IT記事「OracleMaster試験ポイント解説」にありますので参照してみてください。

    ロックをつぶせ! 最初に疑うべき原因