SQL Server / SQL Database で UPDATE を実行する際に、現在の値と同じ値で更新 (SET 句に指定した変更内容が現在の値と同じ) をした場合の挙動について触れておきたいと思います。
Archive for the ‘SQL Server’ Category
Azure で SQL Server ベースの環境の活用方法を学ぶためのコンテンツ
Azure の各機能を学習する場合は、各機能 (サービス) のドキュメントを確認することで学習ができます。
- Azure のドキュメント : 各サービス / 機能
最近ですと Microsoft Learn を活用して機能を学習することもできますね。
Microsoft Learn 上では、SQL Server についてのコンテンツ も公開されています。
しかし、機能を活用するためのソリューションとして学習を行う場合には、各機能のドキュメント / Microsoft Learn の情報では足りなくなることもあるかと。
ソリューションとして学習する際には、どのようなドキュメントを確認すればよいかをまとめておきたいと思います。
SQL Server 2019 on Linux が CU10 で Ubuntu 20.04 のサポートを開始しました
先日公開された、SQL Server 2019 CU 10 から、SQL Server on Linux が Ubuntu 20.04 をサポートするようになりました。
- SQL Server 2019 on Ubuntu 20.04,python2 dependency removed for SQL Server 2019 across distributions.
これに伴い、SQL Server on Linux の各種ドキュメントにも Ubuntu 20.04 の記述が追加されています。
- What’s new for SQL Server 2019 on Linux
- Quickstart: Install SQL Server and create a database on Ubuntu
- Quickstart: Run SQL Server container images with Docker
Big Data Cluster のコンテナーのイメージについても Ubuntu 20.04 が使用されるようになったようですね。
DBCC SHRINKFILE によるファイル圧縮の動作 (データファイル編)
SQL Server では、DBCC SHRINKFILE という DBCC コマンドを使用することで、データファイル / ログファイルのサイズを圧縮することができます。
データベースのファイルを配置しているドライブの空き容量の不足や、大量の一時的なデータを投入後に、データの削除を行った後にデータベースの物理ファイルが過剰に増加している場合に、ファイルサイズを小さくするというような場合に使用するもので、一般的には日常的に使用するものではありません。
しかし、何らかの理由によってデータベースのファイル (mdf / ndf / ldf) が肥大化し、DBCC SHRINKFILE の実行が必要となるケースもあるのではないでしょうか。
本投稿では、DBCC SHRINKFILE を使用して物理データファイルを圧縮し、サイズを削減する際にはどのような動作になっているのかをまとめておきたいと思います。
SQL Server で PLEASE を実装してみる
時代に即したMySQレの新機能:PLEASE句 が面白そうだったので、SQL Server で実装してみました。
SQL Server / SQL Database の行のバージョン管理の基本動作
SQL Server / Azure SQL Database では、行のバージョン管理 (RLV : Row Level Versioning) と呼ばれる機能を使用することができます。
通常、データのアクセス時にはロックが取得され、特定のアクセスパターンでは、検索についても同時実行性の低下につながることがあります。
SQL Server のデフォルトの設定では、検索時にもロックが取得され、更新系の処理が実行されている場合は、ロック競合により、検索がブロックされる動作が行われることがあります。
このような検索時の同時実行性の低下を抑えるため、SQL Server では行のバージョン管理という機能を使用することができます。
これは、MVCC (MultiVersion Concurrency Control) により、読み取り時にはロックを取得しないようにすることで、読み込みと書き込みが同時に行われていても、競合を発生させず、同時実行性の低下を抑えることができる機能となります。
Azure SQL Database では、この機能はデフォルトで有効になっているのですが、SQL Server では 2005 から実装が行われたものとなり、現時点の最新バージョンの SQL Server 2019 でもデフォルトでも無効な状態となっています。
本投稿では、SQL Server ベースの環境で、MVCC を実現するための行のバージョン管理がどのように実装されているのかを見ていきたいと思います。
2021/3 の SQL Server / SQL Database 関連の更新情報
2021/3 の更新です。
Ignite 2021 関連の発表が多いですね。
情報を把握するために本日、一度投稿しましたが、月末にも再度更新しようと思います。