データベース系SEの脳内データとインデックス
https://elan.blog.ss-blog.jp/
都内SIer(だと思う)で働いているDatabase系エンジニアがタラタラ書いています。Oracle,SQL Serverが得意。
えらん
2016-03-23T14:55:52+09:00
ja
-
スピンロックとラッチの違い
https://elan.blog.ss-blog.jp/2016-03-23
SQL Serverでオブジェクト構造を保護する為の仕組みにラッチとスピンロックというものがあります。
SQL Server
えらん
2016-03-23T14:55:52+09:00
ラッチもスピンロックも短時間の間保持して他のスレッドからオブジェクトの多重更新などが
起きないように保護する仕組みです。
スレッド1がラッチを確保して例えばページ分割をしている最中にスレッド2が該当ページにアクセスすると
スレッド2はラッチ待ちをするためにYieldして後続のタスクを取り出します。
Yieldされて後回しになったタスクは後でまたスレッドに拾われてページアクセスします。
その頃にはラッチが解放されていることを期待できます。
OSで言えばセマフォやミューテックスのようなものです。
一方でスピンロックはYieldを行わないで待つ仕組みです。
ラッチのようにYieldするのではなく、そのままCPUを回しながらスピンロックが解放されるのを待ちます。
Yieldすることすらもったい無い(という表現がよいかは別として)状況で使います。
公式文書ではロックのパーティション分割に記載があります。
https://technet.microsoft.com/ja-jp/library/ms187504(v=sql.105).aspx
またスピンロックの競合については以下のホワイトペーパーがまとまっています。
http://download.microsoft.com/download/D/A/A/DAAD63AF-B06F-4F29-AF1D-68A78102ABF4/SQLServerSpinlockContention.pdf
スポンサードリンク
]]>
-
SQL Serverの今後
https://elan.blog.ss-blog.jp/2016-03-15
ここ数日でSQL Serverのチャレンジングな発表が立て続けに起きました。https://www.microsoft.com/en-us/server-cloud/sql-server-on-linux.aspxhttps://www.microsoft.com/en-us/server-cloud/sql-license-migration.aspxhttps://enterprisezine.jp/dbonline/detail/7665
SQL Server
えらん
2016-03-15T16:14:28+09:00
https://www.microsoft.com/en-us/server-cloud/sql-server-on-linux.aspx
https://www.microsoft.com/en-us/server-cloud/sql-license-migration.aspx
https://enterprisezine.jp/dbonline/detail/7665
私が一番驚いたのはLinuxでSQL Serverが動くようになることです。
これはData Drivenというイベントで発表されたのですが、既にデモ環境がUbuntuでしたね。
Linuxユーザを取り込むことによる大きなメリットOSがLinux指定のことはよくあるので
商用RDBMSの選択肢がOracleにSQL Serverが追加できることにあると思います。
Oracleからの移行を想定した布石だと思いますが、UNIXやLinuxで培われてきた
管理スクリプトがSQLステートメントを入れ替えるだけで流用できます。
またここ数年MSが進めてきたOSSとの関係にも良い方向に影響すると思っています。
そして次にOracleからの移行の時にはSQL Serverのライセンスが無料になる話です。
SA権が必須であることが注意事項なのでしょう。完全無料にはならない気がします。
異なるRDBMS間での移行はデータそのものよりもアプリケーションの移行が難航します。
ロック機構が楽観、悲観で変わります。(なおSQL ServerでもOracleと同じ仕組みにはできる)
PL/SQLとT-SQLではSQLステートメントそのものは互換ですが
T-SQLでは配列が使えないなどの大きな非互換があったりします。
アプリケーションの障壁をうまく越えるだけのメリットを打ち出す必要がありますね。
そして既に分かっていたことですがSQL Serverで統計処理言語であるRが使えるようになります。
またRevolution Rが買収された結果マイクロソフトのプラットフォーム配下に入りました。
Rはまだ習得中ですがSQL Serverで動くようになると私は取っつきやすいなと思います。
今後もサプライズニュースが来ることを期待したいと思います。
スポンサードリンク
]]>
-
データベースのバックアップ計画
https://elan.blog.ss-blog.jp/2015-11-26
色々なところで語っていますがデータベースのバックアップほど重要な運用はないと思います。
SQL Server
えらん
2015-11-26T15:48:10+09:00
とはいうものの、ちゃんと考えてバックアップを設計しているシステムは少ないように感じます。
一般的な話ですがバックアップとリストアには計画段階で以下の事を考える必要があります。
・バックアップは何世代まで持つ必要があるのか
・データをどの時点まで戻す必要があるのか
・バックアップにかけられる時間はどれくらいか
・データの戻しをする際にかけられる時間はどれくらいか
これらを要件定義の際にある程度数値化することで、どんなバックアップを何で取るのか、
そんな設計ができるようになると思っています。
SQL Serverでバックアップを実装する際には完全バックアップの取るタイミング
ログバックアップをする際の間隔を決める時に必要なインプットです。
どんなソリューションでバックアップを取るにしても必ず戻すテストをして意図通りに動くことと、
手順化できていることの確認は是非していただきたいと思います。
スポンサードリンク
]]>
-
RESOURCE_SEMAPHORE_QUERY_COMPILEとRESEROUCE_SEMAPHORE
https://elan.blog.ss-blog.jp/2015-09-29
dm_os_wait_statsというDMVで確認できる待ち事象のRESOURCE_SEMAPHORE_QUERY_COMPILEとRESEROUCE_SEMAPHOREについて調べました。
SQL Server
えらん
2015-09-29T14:22:12+09:00
RESOURCE_SEMAPHORE_QUERY_COMPILEはクエリコンパイルによる待ち、
つまりクエリキャッシュのスロット空き待ちが原因です。
真の原因の一つにアドホッククエリが多いことが挙げられます。
RESEROUCE_SEMAPHOREはクエリ実行時に使うメモリの確保待ちです。
メモリ内でソートするなどの処理時に実行クエリが多すぎる、他のクエリが
メモリを使っているなどの理由で待ちになることがあります。
待機情報の分析はインスタンス全体のパフォーマンス分析に有用です。
定期的に取っているだけでもトラブル時に役立つので是非採取してみてください。
select * from sys.dm_os_wait_stats を定期的に実行し、結果を保存するだけです。
https://msdn.microsoft.com/ja-jp/library/ms179984.aspx
スポンサードリンク
]]>
-
ステートメントとバッチの処理時間
https://elan.blog.ss-blog.jp/2015-08-10
SQL ServerでProfilerや拡張イベントを分析していると、SQL文実行に伴う実行時間をチェックすることがあります。そのとき、Durationと呼ばれる値を分析します。
SQL Server
えらん
2015-08-10T19:25:53+09:00
SQL文の処理を見るときは実行終了、Completeが含まれるイベントを見ますが、
SQL:StmtCompleted
SQL:BatchCompleted
こんなイベントがあると思います。今回ストアドプロシージャについては割愛します。
時々これらの違いって何ですかと聞かれるのですが、私が認識している限りで言うと、以下のような感じです。
■SQL:StmtCompleted
1つ1つのSQL文の実行終了を記録
■SQL:BatchCompleted
バッチ単位で実行終了を記録。
バッチとは処理のひとかたまりで、スタートからGoまでの塊。
複数のステートメントから成る
なのでバッチ実行時間はステートメント実行時間よりも大きいはずです。
スポンサードリンク
]]>
-
カーソル処理は遅いことがある
https://elan.blog.ss-blog.jp/2015-07-13
先日の勉強会で話題になったので少しだけ。カーソル処理はパフォーマンス問題の原因になります、という主張についてです。
SQL Server
えらん
2015-07-13T15:18:12+09:00
カーソル処理はパフォーマンス問題の原因になります、という主張についてです。
私は勉強会などでカーソル処理は辞めた方が良い、と言います。
その理由は処理遅延が起きるからです。
その主張の根拠としているのは以下です。
・SQLは結果セットでの処理に適した処理系であり、手続き型言語の処理に合わせたカーソル処理はRDBMSで処理するには無駄が多い(RDBMS内では1行1行処理するので、都度アプリとの通信が発生し、ターンアラウンドの時間が無駄になる)
・SQL Serverではカーソルの中間データは場合によってTEMPDBに保存され、都度呼び出される。つまりDISK IOが発生する要因となる
カーソルは数百行程度の処理であればそれほどパフォーマンス問題は起きにくいと思いますが
数万行、数億行を1行1行丁寧に処理すると、1行の処理そのものは遅くなくても、処理全体で
遅くて使い物にならないというのはよく見かけます。
また数百行程度だと見込んでいた処理が処理件数増大にともなって遅くなっていく様もありがちです。
私が提言したいのはアプリ内のループ処理にカーソル食わせてぶん回すのは辞めましょう、
それなら結果セットを使って対象データを一気に処理しましょうということです。
1行ずつ結果をチェックして他のテーブルにinsertするんだ!だからカーソルは辞められない!
と仰る方もおられますが、それは結果セットを取ってきた後にまとめてデータチェックして
チェック済みデータをinsertすればよいと答えます。
その実装が要件に合わない場合は我慢せざるを得ないわけですが。。。
チューニングでカーソルを廃止したことで、時間が劇的に変わったこともあります。
カーソル実装が原因で苦しむ管理者、開発者が1人でも減りますように。
スポンサードリンク
]]>
-
SQL Server 2016 勉強会
https://elan.blog.ss-blog.jp/2015-07-09
https://manage.doorkeeper.jp/groups/sqlto/events/27611こちらの座談会にモデレータとして参加してきました。
sqlto
えらん
2015-07-09T11:23:57+09:00
https://manage.doorkeeper.jp/groups/sqlto/events/27611
こちらの座談会にモデレータとして参加してきました。 最初は小澤さんによるSQL Server Data Page Structure Deep Dive。
資料やデモスクリプトを見れば分かりますが、内容が濃すぎです。
ページヘッダの見方やレコードの確認、エクステントの状況確認などなど。
通常dbcc pageコマンドは実行しません(する必要に迫られることがない)が、
内部動作に興味がある方は必須コマンドですね。
私個人はcheckdbを REPAIR_ALLOW_DATA_LOSSで実行したときに動作を追うのに使った記憶があります。
第2部はSQL Server 2016の新機能紹介とディスカッションでした。
RTMリリースまでまだまだ時間がある中、ここまでまとまった内容でセッションが開催されることはなかなか珍しいのではないかなと思います。
この機能はなぜ産まれたのか、リリースされるまでにはどうなっていくと予想しているのか、
中の動きはどうなっているのか、実際利用するシナリオは?など有意義な議論ができたと思います。
久々のコミュニティ参加でしたが楽しかったです。
スポンサードリンク
]]>
-
Microsoft MVP for SQL Server 再受賞
https://elan.blog.ss-blog.jp/2015-07-02
今年もMVPの受賞をいただくことになりました。ありがとうございました。今後も精進します。今年度はもう少し活動を積極的にしたいと思っています。どうぞよろしくお願いします。
SQL Server
えらん
2015-07-02T14:00:22+09:00
ありがとうございました。今後も精進します。
今年度はもう少し活動を積極的にしたいと思っています。
どうぞよろしくお願いします。
]]>
-
SQL Server 2016 CTP2.1 Release
https://elan.blog.ss-blog.jp/2015-06-25
SQL Server 2016 CTP2.1がリリースされています。CTPって2.1, 2.2ってなっていきましたっけ???以前は整数だったような気がしますが、気のせいかもしれません。
SQL Server
えらん
2015-06-25T15:37:02+09:00
CTPって2.1, 2.2ってなっていきましたっけ???
以前は整数だったような気がしますが、気のせいかもしれません。
2.0と2.1の違いはなんでしょうか。
ドキュメントを見る限り、2.0で報告されていたいくつかの問題が2.1では消えていました。
Bug Fix版なんだとすると試すべきは2.1ですね。
↓2.1のDBエンジンで無くなった制限
■Stretch Database CTP 2.0
Lock escalation may occur during data migration
Force validation of server certificates to ensure secure access to remote data
■PolyBase CTP 2.0
Only these server collations supported: SQL_Latin1_General_CP1_CI_AS and Latin1_General_100_CI_AS_KS_WS.
CREATE CREDENTIAL is a temporary workaround
Data on Hadoop and Azure Blob storage is read-only
■Columnstore Indexes CTP 2.0
Rebuild nonclustered columnstore indexes after upgrade
↓2.1のDBエンジンで増えた制限
■Replication CTP 2.1
Transactional and Peer-to-peer replication functionality does not work as expected in several scenarios
スポンサードリンク
]]>
-
max server memory の最小値と起動できない状態からの復旧
https://elan.blog.ss-blog.jp/2015-06-22
SQL Serverの利用するバッファプールの大きさを指定する際にはmax server memoryという設定値を変更します。
SQL Server
えらん
2015-06-22T16:25:53+09:00
max server memoryという設定値を変更します。
sp_configre 'max server memory',<指定したいサイズ(MB)>
go
reconfigure
go
とクエリ画面から実行することで変更可能です。
SQL Server 2008R2までは最小値は32MBでしたが、2012以降は128MBに変更されています。
https://technet.microsoft.com/ja-jp/library/ms178067%28v=sql.110%29.aspx?f=255&MSPPError=-2147217396
こちらの注意書きには
max server memory を最小値に設定すると、SQL Server のパフォーマンスが極端に悪化し、場合によっては起動できなくなります。 このオプションの変更後に SQL Server を起動できなくなった場合は、–f 起動オプションを使用して起動し、max server memory を元の値に戻します。 詳細については、「データベース エンジン サービスのスタートアップ オプション」を参照してください。
と記載があります。
テストのため極端にメモリサイズを小さくすることがあるのですが、接続できないといった症状になることもあります。
記載のある復旧方法は私の場合は以下の通りです。
0. 現存プロセスをタスクマネージャから強制終了
1. コマンドプロンプト立ち上げ
2. SQL Serverの実行バイナリの入っているディレクトリに移動。分からなければsqlservr.exeで検索
3. sqlservr.exe -c -fでコマンドラインから起動
4. 別のコマンドプロンプトを立ち上げてsqlcmd -Eで接続
5. 先ほどのsp_configureを使って充分なメモリ量を指定する
6. 1で作ったコマンドプロンプトにCTRL+Cを入力
7. 通常通りConfiguratio ManagerからSQL Serverを起動
とします。
2016のテストをしている際にこの状態に陥ったので参考までに。。。
スポンサードリンク
]]>
-
SQL Server 2016 新しいクエリヒント
https://elan.blog.ss-blog.jp/2015-06-11
SQL Server 2016のクエリヒントに新しい物が入っているようです。https://msdn.microsoft.com/en-us/library/ms181714(v=sql.130).aspx
SQL Server
えらん
2015-06-11T11:06:00+09:00
SQL Server 2016のクエリヒントに新しい物が入っているようです。
https://msdn.microsoft.com/en-us/library/ms181714(v=sql.130).aspx
MIN_GRANT_PERCENT
MAX_GRANT_PERCENT
の2つですがこれらでクエリ実行時に確保するメモリのコントロールができそうです。
これは個人的にはかなり嬉しい機能です。
チューニングの仕事をしているといくつか見かけるのが、Workspace Memory Pending
によるクエリ実行待ちによる遅延です。
クエリは実行する際に最初にメモリを予約します。
Workspace Memoryはソートやハッシュ計算に使われるものですが、
時に過大なメモリ見積もりがされることがあります。
そのときメモリ領域に空きが無いと、クエリは実行前で待たされ、結果としてクエリ終了が遅くなるケースがあります。
クエリヒントを使うことでメモリ解放待ちになっているケースをが救えそうです。
2014まではmax server memoryの調整やクエリの変更を行っていたため、
かなり大がかりな変更が必要でした。
なおパフォーマンスカウンタのMemory Manage:Memoru Grants Pendingを監視することでワークスペースメモリ待機待ちのクエリ数を監視することができます。
スポンサードリンク
]]>
-
SQL Server 2016 CTP2 Release
https://elan.blog.ss-blog.jp/2015-05-28
SQL Server 2016のCTP2がリリースされました。https://www.microsoft.com/en-us/evalcenter/evaluate-sql-server-2016
SQL Server
えらん
2015-05-28T14:09:38+09:00
https://www.microsoft.com/en-us/evalcenter/evaluate-sql-server-2016
https://msdn.microsoft.com/en-us/library/ms143287(v=sql.130).aspx
こちらを見る限りエディションは2014と同じ物が出てきそうです。
まだ32bit環境も残るようです。
個人的にはもうそろそろ32bitは要らないんじゃないかと思っています。
URLを見る限りバージョン番号130ですね。互換性レベルもそんな数字になるでしょう。
サイドバイサイドとインプレースアップグレードは2008以降がサポートされる見込みです。
とりあえずドキュメントからのメモ。
仮想環境に入れて遊んでみようかと思います。
スポンサードリンク
]]>
-
Standard Editionでの可用性グループ
https://elan.blog.ss-blog.jp/2015-05-22
Igniteで発表されたSQL Server vNext(2016)ですが、可用性グループがStandard Editionで利用できるようになります。これはデータベースミラーリングが将来廃止される機能として挙げられているので、その後継ではないでしょうか。
SQL Server
えらん
2015-05-22T16:08:44+09:00
これはデータベースミラーリングが将来廃止される機能として挙げられているので、その後継ではないでしょうか。
データベースミラーリングではいくつか制限があるものの、Standard Editionで構築ができます。
以下データベースミラーリング=DBM、可用性グループ=AG
ドメイン:DBMは無しでも構成できるがAGは恐らくNG
DB数:DBMはミラーリングセッションを増やせば増加可能、AGは1AGに対して1DB
分散トランザクション:DBMは制限事項、AGは2016からサポートされる???
その他Standard EditionのAGにはノード数が2つまでという制限があります。
こんな違いがあります。
個人的な意見ですがクラスタを使うのでドメインが必須になること、
ノード数が2つまでということでどこかでファイル共有マジョリティを使う必要があることが
設計時に気になるポイントです。
実際にCTPがリリースされたら動かしてみたい機能の1つですが、CTPでStandard Editionを選択できたか記憶があやふやです。
スポンサードリンク
]]>
-
SQL Database へのリンクサーバ
https://elan.blog.ss-blog.jp/2015-05-21
今更ですがSQL Native Clientを使ってSQL Databaseにリンクサーバを作りたかったので試してみました。普通にSQL Server同士で繋ぐときにはあまり苦労しませんが、ドライバ指定するときにはいくつかの文字列にケアが必要でした。
SQL Server
えらん
2015-05-21T19:39:56+09:00
普通にSQL Server同士で繋ぐときにはあまり苦労しませんが、ドライバ指定するときにはいくつかの文字列にケアが必要でした。
元ネタ。
https://msdn.microsoft.com/en-us/library/ms190479.aspx
こちらではコマンドラインで作っているのでそれをGUIに読み替えれば良いのですが、
全般ページにて…
リンクサーバ名:好きに入れる
サーバ種類でその他を選択
プロバイダにSQL Server Native Client 11.0を選択
製品名にsqlcliを記入
データソースにXXX.database.windows.netを記入
カタログにデータベース名を記入
セキュリティページにて…
ローカルサーバのログインとリモートサーバのログインのマッピングのリモートユーザにSQL Databaseで定義されたログイン名を記入、パスワードも設定する
こんな設定で作れました。
テスト環境:オンプレSQL Server 2014 RTM、Azure SQL Database BASICプランの西日本
スポンサードリンク
]]>
-
SQL Server 2014 SP1 再リリース
https://elan.blog.ss-blog.jp/2015-05-18
インストールに問題があったSQL Server 2014 SP1が再度利用可能になりました。http://blogs.technet.com/b/dataplatforminsider/archive/2015/05/15/sql-server-2014-service-pack-1-now-available-for-download.aspx
SQL Server
えらん
2015-05-18T10:44:43+09:00
http://blogs.technet.com/b/dataplatforminsider/archive/2015/05/15/sql-server-2014-service-pack-1-now-available-for-download.aspx
改めてビルド番号は12.0.4100.1。
RTM+CU5までの内容が含まれます。
スポンサードリンク
]]>
-
Igniteで発表されたSQL Server 2016 情報 自分用まとめ
https://elan.blog.ss-blog.jp/2015-05-12
Ignite 2016で発表されたSQL Server 2016の話。以下の公式ブログに記事がありました。SEの雑記で小澤さんもまとめているので、詳しくはそちらを見られた方が良いです。http://blog.engineer-memo.com/このエントリは自分のメモ用です。
SQL Server
えらん
2015-05-12T17:54:35+09:00
以下の公式ブログに記事がありました。
SEの雑記で小澤さんもまとめているので、詳しくはそちらを見られた方が良いです。
http://blog.engineer-memo.com/
このエントリは自分のメモ用です。
http://blogs.technet.com/b/dataplatforminsider/archive/2015/05/04/sql-server-2016-public-preview-coming-this-summer.aspx
今年の夏にPublic Previewがやってきます。
以下記載があった機能の概要です。
Always Encrypted
MS Researchのアウトプットから産まれているもののようです。
まずはDB内でデータを暗号化。
クエリ内の条件句を暗号化し、DBエンジンに渡し結果セットも暗号化したまま返します。
そしてアプリケーション上で復号化します。
こうすることで機微なデータは必要最低限の箇所でしか復号されないようになっています。
Stretch Database
Always Encriptedと併用可能、むしろ相互にうまく使うもののように見えます。
データをオンプレミスとSQL Database双方に配置しておき、オンプレの環境にクエリを投げると、Azureに待避してあるテーブルにもデータを見に行く機能のようです。
これは同じテーブルで、一部データはSQL Databaseに、他をオンプレにと配置できるのでしょうか。
Real Time 分析とインメモリOLTP
インメモリカラムストアで100倍速くする。。。らしい
その他キーワードだけ。
ビルトインの分析、PolybaseとモバイルBI
行レベルセキュリティ
Dynamic Data Masking
可用性グループの複数同期レプリカ、セカンダリロードバランス
JSONデータのNativeサポート
オンプレ、Azure間の高速ハイブリッドバックアップ
一方データシートから。
http://download.microsoft.com/download/F/D/3/FD33C34D-3B65-4DA9-8A9F-0B456656DE3B/SQL_Server_2016_datasheet.pdf
Row Level Security
OracleでできたFine Grain Access ControlがSQL Serverでもできるようになったようです。
これはセキュリティ機能差を埋めてきたなと思います。
その他、可用性グループでは、DTCやSSISがサポート、
自動フェイルオーバがDB単位でのヘルスチェックで実装されるなど記載があります。
分散トランザクションの非サポートが理由で可用性グループを諦めることが結構あったので
この変更は大きいかなと思います。
またヘルスチェックがDB単位で行うのは良いと思います。どのような動きの違いになるか楽しみです。
公式ページにはまだ情報が見当たらない(自分が見つけられていません)が、Standard Editionでの可用性グループサポートが発表されているようです。
これについては別エントリで書こうと思います。
スポンサードリンク
]]>
-
SQL Server 2014 SP1に問題発生
https://elan.blog.ss-blog.jp/2015-04-20
先日リリースされた2014SP1に不具合がありそうです。インストールに問題があることがレポートされています。http://blogs.technet.com/b/dataplatforminsider/archive/2015/04/17/sql-server-2014-service-pack-1-update.aspx
SQL Server
えらん
2015-04-20T23:00:21+09:00
インストールに問題があることがレポートされています。
http://blogs.technet.com/b/dataplatforminsider/archive/2015/04/17/sql-server-2014-service-pack-1-update.aspx
SSISのDBのハンドリングの問題のようで、リンク先に回避策が提示されています。
提示されている回避策では
トレースフラグの902を使ってアップグレードスクリプトを停止させ、
不足していると思われるテーブルを一時的に作成、
スクリプトを続行させ、インストールを完了させています。
数週間のうちに回避策がでてくるようなので、急ぎでなければ修正されたモジュールを
待った方が良いように思います。
スポンサードリンク
]]>
-
SQL Server 2014 SP1 リリース
https://elan.blog.ss-blog.jp/2015-04-16
SQL Server 2014に最初のSPがリリースされました。https://www.microsoft.com/ja-jp/download/details.aspx?id=46694https://support.microsoft.com/ja-jp/kb/3018269
SQL Server
えらん
2015-04-16T13:10:16+09:00
https://www.microsoft.com/ja-jp/download/details.aspx?id=46694
https://support.microsoft.com/ja-jp/kb/3018269
自分用メモですがよく使う情報を簡単に。
・SP1にはRTMのCu1からCu5までが含まれる
・ビルド番号は12.0.4050.0
KB情報有りの中で
・パフォーマンス系の修正2件
・クラッシュ、ダンプ生成系の修正4件
・結果不正系の修正1件
スポンサードリンク
]]>
-
SQL Serverの実行ファイル名
https://elan.blog.ss-blog.jp/2015-04-13
SQL Serverの実行ファイルはsqlservr.exeと言う名前です。なぜsqlserver.exeではないのか。eはどこへ行ってしまったのか。
SQL Server
えらん
2015-04-13T15:20:04+09:00
なぜsqlserver.exeではないのか。eはどこへ行ってしまったのか。
それはかつて存在したMS-DOSというOSまで戻るのかも知れません。
MS-DOSはあのビルゲイツが納品に向かう飛行機の中でブートローダーを作ったという伝説のOSです。
その当時のファイル名には8.3形式と呼ばれる物が使われていました。
ファイル名本体で8文字、拡張子で3文字です。
元々SQL ServerがMS-DOSで動いていたかはさすがにわかりませんが、
この形式に従ったビルドを今もきっとやっているのでしょう。
過去からの継承だと思われます。
Windows NTで動いていた時代はこの過去のファイル命名規則に従うのが無難だったのでしょう。
なぜeだけとってしまったのか。
sqlsvr.exeでも良かったような気もしますが今となっては謎です。
どなたか知っていたら教えてください。
スポンサードリンク
]]>
-
制約はパフォーマンスに影響するか
https://elan.blog.ss-blog.jp/2015-04-06
http://www.sqlservercentral.com/articles/Performance+Tuning/71264/外部キーやチェック制約があれば検索クエリには効果があるようです。
SQL Server
えらん
2015-04-06T20:57:40+09:00
http://www.sqlservercentral.com/articles/Performance+Tuning/71264/
外部キーやチェック制約があれば検索クエリには効果があるようです。
上記URLにあるように、明細データと取引データを結合する場合に
外部キー制約があれば明細データだけアクセスすれば必要なデータが取れます。
カバリングインデックスのようにアクセスするオブジェクトを減らす効果と結合処理が不要になる効果があります。
実際の案件を見ると外部キーをあまり明確に利用しないケースもあるかと思います。
アプリケーション側でデータ整合性を保っているのだと思いますが、そのケースでは外部キーを使うチューニングもありです。
外部キーがあることによる弊害はデータロード時やマスタデータなどの変更処理の時でしょうか。
変更やロードを行う時の順番について考慮が必要です。
また大量ロード時には整合性チェックが必要なのでロード前に参照整合性は削除し、後から追加することで対処することが可能です。
スポンサードリンク
]]>