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

データベース研究者の大御所、マイケル・ストーンブレイカー氏が、「SQL URBAN MYTHS」(SQL都市伝説)というWebセミナーを、自身が創設した会社VoltDBで公開しています。 一般にリレーショナルデータベースに対して言われている「SQLは遅すぎる、トランザクションのコストは高すぎる」といった評価について、SQLが遅いのではないし、トランザクション以外のコストが高すぎるのだ、と反論する内容。 これらは同氏が以前から主張してきた内容ではありますが、最近流行しているNoSQLデータベースに対する反論にもなっているため、多くのエンジニアに刺激になる内容となっています。 SQLに関する6つの都市伝説 都市伝説1:SQLは遅すぎる。NoSQLのような低レベルなインターフェイスを使うべき 都市伝説2:キーバリュー型が有望で、SQLは問題外 都市伝説3:SQLデータベースはスケーラブルではない
SQLアタマアカデミー 第7回性能改善の鍵、インデックスの特性を知る~B-treeとハッシュ (2)ハッシュ ハッシュ 概要 チューニング技術としてB-treeの次に重要なのは、ハッシュ(hash)です。ハッシュとは「ごちゃまぜ」とか「細切れ」という意味で、ハッシュドビーフとかハッシュポテトなどの料理名にも使われています。 ハッシュのポイントは分散です。キー値に対して適当な関数を適用して、データを格納する先のアドレスを割り当てるのですが、このときポイントなのは、異なる値のキーに対しては、異なるアドレス(それもなるべく離れた)を割り振れるかどうかです。これができるほど、ハッシュ関数として優れているということになります(図6)。 図6 ハッシュのイメージ図(ハッシュパーティションの場合) なおハッシュは、Postgre SQLやMy SQLのようにインデックスとして実装しているDBのほか、
SQLフォーマッターFor WEB β013ex1 サクラエディタSQL整形マクロをベースにWEB化してみました。 ローカルに保存してSQL文整形ツールとしてもお使えできます。 1. 下のテキストボックスにSQLを貼り付ける。 2. 思うがままに「整形する」ボタンを押下する。 いい感じに整形できたら出来上がり~。 本家のサクラエディタマクロ版のSQL整形マクロはコチラから。 ※β009 for Webからはカンマは前とか AND/ORは後ろとか指定できるようになりましたっ!(2010/2/1) ※β010 for WebからはJOIN形式を指定できるようになりましたっ!(2010/5/1) ※β013ex1 for Webからはテキスト変換ができるようになりましたっ!(2010/11/3) さらにCookieに設定値を保持するようにしたので、次回からは再設定が不要になりました
Many Oracle DBA’s are probably familiar with what Optimizer trace files are and likely know how to create them. When I say “Optimizer trace” more than likely you think of event 10053, right? SQL code like this probably is familiar then: alter session set tracefile_identifier='MY_10053'; alter session set events '10053 trace name context forever'; select /* hard parse comment */ * from emp where en
…Or in other words, how to translate SQL_ID to a hash value :) I once wrote a script to demo this in my Advanced Oracle Troubleshooting class. Check this, I’ll run a query and then check what is its SQL_ID and HASH_VALUE from V$SQL: SQL> select * from dual; D - X SQL> select sql_id, hash_value from v$sql 2 where sql_text = 'select * from dual'; SQL_ID HASH_VALUE ------------- ---------- a5ks9fhw2v
テーブルのJOINが苦手でしたが、この例を思いついてからは、すっきりくっきり理解できるようになりました。むしろ頭から離れません……。 ※ INNER、OUTERは飾り。省略できる。 INNER JOIN → JOIN LEFT OUTER JOIN → LEFT JOIN RIGHT OUTER JOIN → RIGHT JOIN ※ ON ...=... をまとめて USING(属性) と書ける。 ※ 何で結合するか言うまでもない時は、NATURALを指定すると勝手にJOINしてくれる。NATURALにJOINして……。 ※ WHEREは結合した結果に作用する。 ※ 現実には上図のように1対1で結合しません。 ※ おまけ。CROSS JOIN。 こんなの使いません。 ブクマ用画像。
動作確認環境 Oracle Database 11g Release 11.2.0.1.0 (windows 32ビット版) 内部結合 結合条件を満たすデータを取得 内部結合の典型的な使用例は、下記のように、キーに紐づくデータを取得するケースです。 結合条件が、値が等しいことである場合は、等価結合とも呼ばれます。 Oracle8i Databaseまでは、where句に結合条件を記述する必要がありましたが、Oracle9i Databaseからは、SQL99構文のJoinが使えます。 create table oyaTable(ID primary key,Val) as select 111,100 from dual union all select 222,200 from dual union all select 333,300 from dual union all se
オラクル性能問題の関する最高の専門家で平価されているCarry Milsapさんは性能を改善する絶対的な原則を言及したことがあります。 ある作業の性能を改善する最高の方法はその作業自体をしないということだ。 本当に名言の中の名言です。 次に簡単な例があります。 1. これ以上チューニング不可能に見える完璧に最適化された文章です。ほぼ3.4秒がかかりました。 TPACK@ukja1106> declare 2 v_value number; 3 begin 4 for idx in 1 .. 100000 loop 5 select trunc(idx) into v_value from dual; 6 end loop; 7 end; 8 / PL/SQL procedure successfully completed. Elapsed: 00:00:03.42 本当にそうでしょうか。
各種インフラ技術(OS、ストレージ、ネットワーク)やオラクル製品といった話題を取り上げます。著者は小田圭二、「門外不出のOracle現場ワザ」、「絵で見てわかるOracleの仕組み」、「絵で見てわかるOS/ストレージ/ネットワーク」などの著作もあります いつか書こうと思っていたSPM(SQL Plan Management)の使用方法を紹介します。それは、アプリに手を加えることなく(ヒント句の追加すら不要)、自分の思うような実行計画に変更・固定する方法です。本記事はKROWN番号 134329 から学びました。そのKROWNの内容を多く使用しています。ご了承ください。 さて、まずは、autotraceで元々の実行計画を見てみます。もちろん、別の方法でも構いません。 SQL> set autotrace traceonly explain SQL> select count(test1.no
SelectInsertするときにInsert先のテーブルにPK、UK、FK、NOTNULL制約などが張ってあって Insertに失敗すると結構ストレスがたまります。 そもそもどのレコードで失敗したのかわからなかったりすると NotNullだったらSelectのWhereにIS NOT NULLかいて探したり UKだったら GROUP HAVING 書いて探したり かなりめんどくさいので10gからはdbms_errlogパッケージ使ってレコード特定してます。 http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/appdev.102/B19245-02/d_errlog.htm つかいかた例: Insert先にUKが張ってあり、Select元で重複が発生している状態 select元テーブル CREATE TAB
本連載はSQLの応用力を身に付けたいエンジニア向けに、さまざまなテクニックを紹介する。SQLの基本構文は平易なものだが、実務で活用するには教科書的な記述を理解するだけでは不十分だ。本連載は、著名なメールマガジン「おら!オラ! Oracle - どっぷり検証生活」を発行するインサイトテクノロジーのコンサルタントを執筆陣に迎え、SQLのセンス向上に役立つ大技小技を紹介していく。(編集局) 今回はOracle8i(リリース8.1.6)から実装されている分析関数について解説します。分析機能を理解しておくと、いままでは副問い合わせや複数回に分けていた問い合わせを1回のSQL文で簡単に行えるようになります。 分析関数の基本を理解しよう まず、分析関数とは、どのような関数であるのかを簡単に説明しておきましょう。 集計関数と分析関数の違いは? 分析関数は、どのように処理されるの? 分析関数は、どのような分
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く