SlideShare una empresa de Scribd logo
1 de 21
SQL Server アンチパターン
SQLTO @elanlilac
Agenda
 はじめに
 SQL Serverのトラブル
 各種アンチパターン
 失敗から学ぶ
 まとめ
はじめに
 このセッションではSQL Serverのことを扱います
 重要なキーワードは緑字にします
 自己紹介
 大人の事情で本名と顔をだしていません
 Microsoft MVP for SQL Server 2011-
 トラブル対応が主食のデータベースエンジニアです
 Twitter: elanlilac
 Blog: http://elan.blog.so-net.ne.jp/
 誰得情報を垂れ流しています
はじめに
愚者は経験に学び、賢者は歴史に学ぶ(オットー・フォン・ビスマルク)
Nur ein Idiot glaubt, aus den eigenen Erfahrungen zu lernen.Ich ziehe es vor, aus
den Erfahrungen anderer zu lernen, um von vorneherein eigene Fehler zu
vermeiden
愚者だけが自分の経験から学ぶと信じている。私はむしろ、最初から自分の誤りを避
けるため、他人の経験から学ぶのを好む
他人の踏んだ地雷については知っておいた方がいい
SQL Serverのトラブル
SQL Server の主なトラブル
データが
壊れた
パフォー
マンスが
悪い
連携が
止まる
内部
エラー
でも実は「防ぎようもない」トラブルは少ない!
ケース1:データベースが壊れる
 データベースは壊れる時は壊れる
 HW不良や突然現れる824/823エラー
 適切なRAID設計で耐障害性を高め、バックアップを取って万が一に備える
 バックアップは重要なデータを保護するための究極の手段
壊れたらDBは
別システムから
作り直す設計
諦めて我慢する
ケース1:データベースが壊れる
システムDBの
バックアップを
取っていない
DBファイルと
バックアップ
ファイルが同じ
RAIDにいる
バックアップを
取っていない
作り直しは時間
がかかる
頑張って再作成 諦める
データ/ディスクが飛んでしまいました
ログインが消え
た
バックアップも
一緒に壊れた
バックアップを
取っていない!
バックアップ運用、物理設計の問題
ケース2:パフォーマンスが悪い
 パフォーマンス悪化は運用する人からすると最重要課題の1つ
 オンラインレスポンスの悪化
 バッチウィンドウ超過
 パフォーマンス悪化の原因は様々あり特定が難しいが大きく分けると3つ
 リソース不足
 非効率なクエリプラン
 SQL Server内部の待ち
 などなど
ケース2:パフォーマンスが悪い
要件定義での無茶振り
プロジェクト炎上
バッチの目標時
間とデータ量
のバランスが悪
い
受入条件とビジ
ネス要件の乖離
APの設計問題
構造上遅くなる
処理の実装
(カーソルな
ど)
必要以上にロッ
クをかけている
開発は進み、受入テスト時問題発覚
ケース2:パフォーマンスが悪い
実は原因を特定するのが大変。パフォーマンス問題は根深い。
運用フェーズでパフォーマンス問題発生
設定は全て規定
の値
本番中にトレー
スを採取
本番運用中に分
析処理を実行
テスト系構築の
ためオンライン
中にフルバック
アップ
テストDBが同じ
インスタンスに
いてリソース消
費
設定の問題 運用の問題
ケース2:パフォーマンスが悪い
 なにもしていない人はこれだけはやっておこう
 Tempdbのファイル分割
 コア数または8の小さいほう、の数にする
 同じRAIDの上であっても設定するだけで効果がある(はず)
 Max serer memory と メモリ内のページロック設定
 メモリ上限の設定と仮想メモリをページアウトさせない設定
 パフォーマンスログによるベースライン採取
 何が起きたのかあとからわかるようにする
 異常時と正常時の比較を可能にする
ケース2:パフォーマンスが悪い
パフォーマンス問題が潜在化
運用フェーズでパフォーマンス問題発生
CPUコアと物理
メモリのバラン
ス
ディスク容量だ
けではく、I/O
量の考慮
パフォーマンス
問題への備えが
ない
APから見てど
の処理が遅いか
わからない
資料は取ってい
ても足りない
サイジングの問題 パフォーマンス問題の追究不能
ケース3:外部連携が止まった
 外部連携の典型的なパターン
 SSISによるデータ取り込み、転送
 リンクサーバによるデータ参照や更新
 レプリケーションによるデータ配信
 外部連携のはまりがちな罠
 データ連係の大元(多くは基幹系)の配信が止まると配信先の業務がすべて止まる
 一般にアーキテクチャが複雑なのでエラーがわかりづらい
現場ではいかんともしがたい
ケース3:外部連携が止まった
Oracleリンク
サーバなど
運用中の外部連携停止、復旧、原因追究へ
サポート対象外
構成になってい
る
連携先のシステ
ムが触れない
連携先の担当が
他社で共同作業
ができない
構成の問題 政治的な問題
連携先が他社DBなどではよくある
SQL Serverでも難しいものは多い
ログ採取、解析
が難しい
連携先のシステ
ムに関するスキ
ルがない
スキルの問題
失敗から学ぶ
 対処できるか考えてみよう
 青い箱をあつめてみる
 分類してみる
 そもそもなんで起きたのか考えてみる
 明日自分が死なないようにする
失敗から学ぶ
バックアップ、物理
設計の問題
要件定義での無茶振
り
APの設計問題
設定の問題
運用の問題
構成の問題
政治的な問題
スキルの問題
サイジングの問題
パフォーマンス問題
の追究不能
要件定義
設計
実装
運用
組織/人
設計や実装の問題が大き
い。
ただし再設計はつらい
適切な設計、実装、テスト
を行うことでトラブルは防
げる
運用や人の問題は今からで
も取り組める問題
要件定義に無理があると後工
程にしわ寄せが来る
これからプロ
ジェクトに取
り組む人は設
計とテストに
力を入れるべ
き
動いているシ
ステムに対し
ては変な運用
を改善する
失敗から学ぶ
 テストに潜むダメパターン
 品質を高めるためには入念なテストが必須
 テストにもダメパターンは潜んでいる
失敗から学ぶ
本番と全く違う
データ量、分布
資料採取がない
ラッシュをかけ
る仕組みがない
テストが本番前
1回だけ
クエリの動作が
テストと本番で
異なるためテス
トにならない
本番で問題が起
きたときにテス
トとの比較がで
きない
ピーク性能の測
定ができないた
め、繁忙期に問
題が起こる
テストで問題が
起きても対処が
できない
余裕を持ったスケジュールで複数回のテストを本番さながらに実施する
失敗から学ぶ
 その他今からでもできる対処策
 問題点の改善する
 すぐできることはすぐやってしまう(まずは3月だし予算取り)
 すぐに対処するのは難しいので次回更改時にそっと差し込む
 過去にやってしまった失敗をまとめてみる
 障害対応履歴などから追ってみるのはとても勉強になる
 設計書を見て怪しい記述を押さえておく
 とにかくテストは念入りに!
大切なのは同じミスを繰り返さないこと
まとめ
 世の中には様々なダメパターンが存在する
 重要なことは他人、そして自分の犯した失敗から学ぶこと
 今からでもできる対処はあるのであきらめない
 同じ失敗は2度は繰り返さない
参考資料
 バランスドシステム(メモリの搭載量について言及)
http://www.atmarkit.co.jp/ait/articles/1101/25/news127.html
 SQL Server最低限設定しておくもの
http://www.atmarkit.co.jp/ait/articles/1009/06/news093.html
 パフォーマンスログで何を取るか
http://support.microsoft.com/kb/298475/ja
 パフォーマンス向上
http://msdn.microsoft.com/ja-jp/library/ff647793.aspx

Más contenido relacionado

Destacado

Global Knowledge Training Courses & Promotion 2015-Sep
Global Knowledge Training Courses & Promotion 2015-SepGlobal Knowledge Training Courses & Promotion 2015-Sep
Global Knowledge Training Courses & Promotion 2015-SepAruj Thirawat
 
FRT Vol. 5 クラウド時代の企業アプリケーションとマーケティング
FRT Vol. 5 クラウド時代の企業アプリケーションとマーケティングFRT Vol. 5 クラウド時代の企業アプリケーションとマーケティング
FRT Vol. 5 クラウド時代の企業アプリケーションとマーケティングYasunari Goto (iChain. Inc.)
 
Trabalhando com o Moodle e a Comunidade
Trabalhando com o Moodle e a ComunidadeTrabalhando com o Moodle e a Comunidade
Trabalhando com o Moodle e a ComunidadeDaniel Neis
 
Caching Data For Performance
Caching Data For PerformanceCaching Data For Performance
Caching Data For PerformanceDave Ross
 
MoodleMoot Brasil 2011 - O Moodle na UFSC (Infraestrutura de TI)
MoodleMoot Brasil 2011 - O Moodle na UFSC (Infraestrutura de TI)MoodleMoot Brasil 2011 - O Moodle na UFSC (Infraestrutura de TI)
MoodleMoot Brasil 2011 - O Moodle na UFSC (Infraestrutura de TI)Daniel Neis
 
ThaiCert Phishing and Malicious Code Infographic 2015
ThaiCert Phishing and Malicious Code Infographic 2015ThaiCert Phishing and Malicious Code Infographic 2015
ThaiCert Phishing and Malicious Code Infographic 2015Aruj Thirawat
 
SQL Server 簡易診断サービス ご紹介資料
SQL Server 簡易診断サービス ご紹介資料SQL Server 簡易診断サービス ご紹介資料
SQL Server 簡易診断サービス ご紹介資料Masayuki Ozawa
 
OSSV [Open System SnapVault]
OSSV [Open System SnapVault]OSSV [Open System SnapVault]
OSSV [Open System SnapVault]Ashwin Pawar
 
[INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)
[INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)[INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)
[INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)Insight Technology, Inc.
 
Driver development – memory management
Driver development – memory managementDriver development – memory management
Driver development – memory managementVandana Salve
 
Sql server 構築 運用 tips
Sql server 構築 運用 tipsSql server 構築 運用 tips
Sql server 構築 運用 tipsMasayuki Ozawa
 
Board support package_on_linux
Board support package_on_linuxBoard support package_on_linux
Board support package_on_linuxVandana Salve
 
45分で理解する SQL Serverでできることできないこと
45分で理解する SQL Serverでできることできないこと45分で理解する SQL Serverでできることできないこと
45分で理解する SQL ServerでできることできないことInsight Technology, Inc.
 
Linux for embedded_systems
Linux for embedded_systemsLinux for embedded_systems
Linux for embedded_systemsVandana Salve
 
Kernel module programming
Kernel module programmingKernel module programming
Kernel module programmingVandana Salve
 
HANAのハナシの基本のき
HANAのハナシの基本のきHANAのハナシの基本のき
HANAのハナシの基本のきKoji Shinkubo
 

Destacado (17)

Global Knowledge Training Courses & Promotion 2015-Sep
Global Knowledge Training Courses & Promotion 2015-SepGlobal Knowledge Training Courses & Promotion 2015-Sep
Global Knowledge Training Courses & Promotion 2015-Sep
 
FRT Vol. 5 クラウド時代の企業アプリケーションとマーケティング
FRT Vol. 5 クラウド時代の企業アプリケーションとマーケティングFRT Vol. 5 クラウド時代の企業アプリケーションとマーケティング
FRT Vol. 5 クラウド時代の企業アプリケーションとマーケティング
 
Trabalhando com o Moodle e a Comunidade
Trabalhando com o Moodle e a ComunidadeTrabalhando com o Moodle e a Comunidade
Trabalhando com o Moodle e a Comunidade
 
Caching Data For Performance
Caching Data For PerformanceCaching Data For Performance
Caching Data For Performance
 
MoodleMoot Brasil 2011 - O Moodle na UFSC (Infraestrutura de TI)
MoodleMoot Brasil 2011 - O Moodle na UFSC (Infraestrutura de TI)MoodleMoot Brasil 2011 - O Moodle na UFSC (Infraestrutura de TI)
MoodleMoot Brasil 2011 - O Moodle na UFSC (Infraestrutura de TI)
 
ThaiCert Phishing and Malicious Code Infographic 2015
ThaiCert Phishing and Malicious Code Infographic 2015ThaiCert Phishing and Malicious Code Infographic 2015
ThaiCert Phishing and Malicious Code Infographic 2015
 
SQL Server 簡易診断サービス ご紹介資料
SQL Server 簡易診断サービス ご紹介資料SQL Server 簡易診断サービス ご紹介資料
SQL Server 簡易診断サービス ご紹介資料
 
OSSV [Open System SnapVault]
OSSV [Open System SnapVault]OSSV [Open System SnapVault]
OSSV [Open System SnapVault]
 
[INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)
[INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)[INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)
[INSIGHT OUT 2011] C12 50分で理解する SQL Serverでできることできないこと(uchiyama)
 
Driver development – memory management
Driver development – memory managementDriver development – memory management
Driver development – memory management
 
Sql server 構築 運用 tips
Sql server 構築 運用 tipsSql server 構築 運用 tips
Sql server 構築 運用 tips
 
Board support package_on_linux
Board support package_on_linuxBoard support package_on_linux
Board support package_on_linux
 
Sql server 運用 101
Sql server 運用 101Sql server 運用 101
Sql server 運用 101
 
45分で理解する SQL Serverでできることできないこと
45分で理解する SQL Serverでできることできないこと45分で理解する SQL Serverでできることできないこと
45分で理解する SQL Serverでできることできないこと
 
Linux for embedded_systems
Linux for embedded_systemsLinux for embedded_systems
Linux for embedded_systems
 
Kernel module programming
Kernel module programmingKernel module programming
Kernel module programming
 
HANAのハナシの基本のき
HANAのハナシの基本のきHANAのハナシの基本のき
HANAのハナシの基本のき
 

Último

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Último (8)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

SQL Server アンチパターン MVPComCamp