BT

Brent Ozar氏,SQL Serverの生産性向上について語る

| 作者: Anand Narayanaswamy フォローする 0 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2013年3月4日. 推定読書時間: 2 分 |

原文(投稿日:2013/02/26)へのリンク

 

SQL Serverコンサルタントの Brent Ozar 氏は先日,すべての SQL Server 開発者が日々のプログラミングタスクで実践するべきだという,7つのテクニックを公表した。その中で氏は,ORDER BY 句はできる限り使用せずに,クエリ結果をメモリ上に格納して,アプリ側でデータソートを実行するべきだ,としている。

もしデータベースがデータ処理,ソート,ロード,キャッシュなど複数の処理を行っているならば,それぞれのタスクごとに別のデータベースを用意することが理想的だ。さらに各データベースは単純復旧モードで運用して,毎日1回バックアップを取得することが望ましい。

氏はまた,DMV(Dynamic Management Views) の効率的な利用を提案するとともに,例えばアプリケーションの書き込み,5~15分前に更新されたデータの参照,昨日のデータの参照といったさまざまなシナリオに対して,アプリ内で3つ別々の接続文字列を使用するようにアドバイスしている。SQL Serverには複数サーバによる書き込み処理をスケールアウトするための選択肢が少ないので,この最初のシナリオはスケールが難しい,という理由からだ。

"With(Nolock( よりも READ COMMITTED スナップショット分離 の方が,一貫性のあるデータを少ないブロックで取得することができるという面で,アプリケーションとしてはよい選択です。" と氏は述べている。

さらには,定期的に更新されないような古い版の書籍やオンライン記事は参考にならない,とも言う。"優れたアドバイスに見えるものであっても,アンチ-ドクターPhil (Phil McGraw:米国の心理学者) 戦略を採用すべきです" というのが氏の意見だ。

そして最後に氏は,コードの再利用には関数よりも,ストアドプロシージャビュー を使用するように勧めている。関数はデータベース層において性能的なデメリットが大きい,ということがその理由だ。

氏のアドバイスに対しては反対者もいる。

例えば Tyler Burd氏の

#2 ("ORDER BYは使うな: アプリ内でソートせよ") には,無条件には賛成できません。

というコメントに対して,氏は次のように答えている。

データセット全体をアプリ層に落とし込んで,そこでキャッシュしてはどうでしょう?

関数に代えてビューやストアドプロシージャを使うべき,という提案に対しても,何人かの開発者からコメントが投稿されている。

Brentのアドバイスや提案に対して,読者は賛成あるいは反対,いずれの立場だろうか?氏の提案に対する意見をコメントしてほしい。

 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT