DB
アジャイルな開発に欠かせない割りに、あまり言及されていなかったのが データベースのアジャイル開発です。 今、私の参画しているプロジェクトで、データベースに関するアジャイルな開発の方法を模索していました。 現在実践していて効果のあるプラクティス…
VisualStudio2005を使ってるが、「型付DataSet」にはいろいろ不満がある。 自動的に作られるのはいいけど、接続文字列まで内部に持ってたり、時々壊れて、XSDビューで開けなかったり、TableAdapterに書き込んだクエリのメンテナンスをしようと思うと、いちい…
バイナリカラムを持つテーブルにファイルからデータをInsertしたい場合、いちいちプログラムを作る必要があって面倒です。 何かいい方法はないかと調べていて、SQLクエリだけでバイナリ列にファイルからデータを登録する裏技を見つけました。SQLServerの特殊…
■ミックさんのリレーショナル・データベースの世界(SQLのパフォーマンスチューニングとかすごい良い) http://www.geocities.jp/mickindex/■SQL Server 2005 Tips and Tips 第 2 回 排他ロックにブロックされない読み取りの実現 http://www.microsoft.com/j…
Sqlserverでは、Select文でロックヒントを記述することができる。■ロックヒント http://msdn.microsoft.com/ja-jp/library/ms177634.aspxトランザクション分離レベルとヒントの組み合わせによって、クエリのブロック状況が異なるので、注意が必要。とくに、…
スナップショット分離レベル(Snapshot)は、リードコミッテッド分離レベル(Read Committed)と同じロックの動作をします。 つまり、読み取りの操作時に、データに対して共有ロックをかけません。 スナップショットとリードコミッテッドの違うところは、反…
SQLServer2005で、SQLクエリのみで照合順序を変える方法 ■準備 「#」付きテーブルは同一セッション上でのみ有効な一時テーブル create table #tbl ( data varchar(2) ) insert into #tbl select 'a' as data union ALL select 'b' as data union ALL select …
現場で、デッドロックが発生してその対処をしている。 RDBMSによって分析・対処の方法は異なるが、今回はSQLServer2005で行った。 SQLServer2005およびSQLServerProfilerの強力さを改めて思い知った。 デッドロックの検知 デッドロックが発生したことは、ア…
SQLServer2005では、ビューのパフォーマンス改善のためにインデックス付きビューが作成できるようになった。 鳴り物入りで導入されたインデックスビューで、Oracleのマテリアライズドビューにも対抗できるかと思いきや、制約が厳しすぎて微妙だ。たとえば、…
RDBMSにおいて「トランザクションファイル」と「ログファイル」は、 別ディスクに分ける方が良い、と言うのはDBAの常識だが、 その理由については「慣習的に」とか「なんとなく」という程度の意識の人も多い。例のSQLServer最強本にもあるが、 これらのファ…
SQLServerにて、非クラスタドインデックスを使ってるとき 以下の2つのクエリは、Likeを使った検索の方が高速だ。 select *from dbo.Expenses where studentcd like '%00' select *from dbo.Expenses where right(studentcd,2) = '00' これは、関数を使うと非…
【訂正】 以下の文章が間違っていたことがわかったので、ここで訂正してお詫びします。SQLServer2005のSERIALIZABLEレベルでは、クエリによる「範囲ロック」を行うことが問題の真のメカニズムでした。新しいバージョンのSQLSERVERでは、クエリ範囲に該当する…
【訂正】 以下の文章が間違っていたことがわかったので、ここで訂正してお詫びします。SQLServer2005のSERIALIZABLEレベルでは、クエリによる範囲ロックを行うことが 問題の真のメカニズムでした。以下詳細。SQLServer 7.0ではSERIALIZABLEレベルでロックを…