SQLServerのパフォーマンスチューニングでは、tempdbのデータファイル数とログファイル数を、CPUコア数に合わせるのは必須。
SQLServerをLinuxにインストールした場合、データファイルとログファイルが1ファイルづつしか作られないので、手動で CPUコア数分、ファイルを追加する必要がある 。
下記は、CPU論理コア×4 の CentOS で稼働しているSQLServerの、tempdb にデータファイル、ログファイルを追加する手順。
1. CentOSのコンソールで、sqlcmdを使ってSQLServerにログイン。
# sqlcmd -S localhost -U sa
Password:(パスワード)
> USE [master]
> GO
2. 既存tempdb ファイルの拡張設定を、64MB毎から10%毎へ変更。
> ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'tempdev', FILEGROWTH = 10%)
> ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'templog', FILEGROWTH = 10%)
> GO
3. 既存tempdb の名称をナンバリング有りの名称に変更。
> ALTER DATABASE [tempdb] MODIFY FILE (NAME=N'tempdev', NEWNAME=N'tempdev1')
> ALTER DATABASE [tempdb] MODIFY FILE (NAME=N'templog', NEWNAME=N'templog1')
> GO
4. tempdb ファイル数をコア数に合わせて追加。
> ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev2', FILENAME = N'/var/opt/mssql/data/tempdb2.mdf' , SIZE = 8192KB , FILEGROWTH = 10% , MAXSIZE = UNLIMITED)
> ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev3', FILENAME = N'/var/opt/mssql/data/tempdb3.mdf' , SIZE = 8192KB , FILEGROWTH = 10% , MAXSIZE = UNLIMITED)
> ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev4', FILENAME = N'/var/opt/mssql/data/tempdb4.mdf' , SIZE = 8192KB , FILEGROWTH = 10% , MAXSIZE = UNLIMITED)
> ALTER DATABASE [tempdb] ADD LOG FILE ( NAME = N'templog2', FILENAME = N'/var/opt/mssql/data/templog2.ldf' , SIZE = 8192KB , FILEGROWTH = 10% , MAXSIZE = UNLIMITED)
> ALTER DATABASE [tempdb] ADD LOG FILE ( NAME = N'templog3', FILENAME = N'/var/opt/mssql/data/templog3.ldf' , SIZE = 8192KB , FILEGROWTH = 10% , MAXSIZE = UNLIMITED)
> ALTER DATABASE [tempdb] ADD LOG FILE ( NAME = N'templog4', FILENAME = N'/var/opt/mssql/data/templog4.ldf' , SIZE = 8192KB , FILEGROWTH = 10% , MAXSIZE = UNLIMITED)
> GO
5. UNLIMITEDにならないSQLServerのバグに対処。
> ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'templog2', MAXSIZE = UNLIMITED)
> ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'templog3', MAXSIZE = UNLIMITED)
> ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'templog4', MAXSIZE = UNLIMITED)
> GO
テストした環境。
OSのバージョン
CentOS Linux release 7.6.1810 (Core)
SQLServerのバージョン
Microsoft SQL Server 2017 (RTM-CU15-GDR) (KB4505225) - 14.0.3192.2 (X64) Jun 15 2019 00:45:05 Copyright © 2017 Microsoft Corporation Developer Edition (64-bit) on Linux (CentOS Linux 7 (Core))
参考
RHEL 7 にツールをインストールします。
パフォーマンスのベスト プラクティスと SQL Server on Linux の構成ガイドライン
Tempdb データベースを SQL Server に割り当て時の競合を減らすための推奨事項
最新のSQLServerでバグを見つけました
文化人類学的には、祖父母が子育てを手伝うと少子化が解消する事が分かってる。
祖父母が子育てを手伝う政策が必要で、夫の育休を促す政策では少子化は改善せず、国内総生産が下がり経済が低迷するだけ。
最近のコメント