EN JP CN

データベースパフォーマンスの向上

データベースパフォーマンスの向上

データベースパフォーマンスの向上

データベースパフォーマンスの向上

次のようにすれば、データベースサーバーのパフォーマンスを向上させることができます。

  • 非常に大きなプロジェクトに対してはメモリサイズと制限を制御する
  • ファイルシステムからデータベースサーバーにデータを直接ロードさせるデータベースサーバーと統合ビルド解析 (特に、kwadmin load) を同じホストで実行している場合、このオプションは効果的です。

データベースサーバーに対するメモリサイズと制限のカスタマイズ

次のような統合ビルド解析エラーが発生する場合は、メモリパラメーターをカスタマイズする必要があります。

kwloaddb - Klocwork Project Database Creation Utility
Error:
at com.klocwork.database.Agent.processSQLError(Unknown Source)
at com.klocwork.database.Agent.doCommand(Unknown Source)

Error occurred while loading database: Database error occurred: 
The table 'tmp_metrics_from' is full in SQL statement 'insert into my_project__shared.'

データベースサーバーに対してメモリサイズと制限をカスタマイズするには、以下の操作を行います。

  1. 編集のために次のファイルを開きます。<Server_install>/config/kwmysql.ini
  2. 必要に応じて編集します。該当するパラメーターとその候補値は、kwmysql.ini パラメーターで説明されています。
  3. ファイルを保存します。
  4. Klocwork サーバーを kwservice (または Windows Services 管理) で再起動します。
    kwservice --projects-root <projects_root> restart 
    

次:統合ビルド解析を再開します。C/C++ | Java | C# を参照してください。

Kwmysql.ini パラメーター

プロジェクトが大きく、Klocworkデータベースの性能を改善させる必要がある場合には、<Server_install>/config/kwmysql.ini にある kwmysql.ini ファイルをカスタマイズすることができます。ファイルを変更した後、Klocwork サーバーを再起動させることを忘れてはなりません。

デフォルトパラメーターの変更案

パラメーターとデフォルト値値の候補
key_buffer_size = 80M200M
max_heap_table_size = 128M256M
read_buffer_size = 512K2M
read_rnd_buffer_size = 1M2M
query_cache_size = 4M128M
query_cache_limit = 100K2M
tmp_table_size = 128M256M
innodb_buffer_pool_size = 128M384M 専用サーバーでは、サイズをKlocworkサーバーを実行するコンピューターの RAM の 50~80%まで大きくすることができますが、メモリー使用量の高過ぎる設定に注意してください。同じマシンをKlocwork統合ビルド解析にも使用する場合は、この値を使用可能なメモリの 50% より大きくすることは望ましくありません。詳細は、http://dev.mysql.com/doc/refman/5.6/en/の MySQL ドキュメンテーションを参照してください。

追加パラメーターの変更案

以下の新しいパラメーターと値をファイルに追加する必要がある場合もあります。この後のファイルの例を参照してください。

追加パラメーター値の候補
innodb_log_files_in_group= 2これは InnoDB ログファイル (InnoDB トランザクション用の一時ストレージ) の総数を定義します。ログファイルを複数の小さなファイルに分割するとファイルへのアクセス速度が向上し、このため、大きなトランザクションの速度が向上します。推奨されるファイル数は 2 つです。
innodb_log_file_size= 48M推奨されるログファイルのサイズは、innodb_buffer_pool_size パラメーターの値に関連します。innodb_buffer_pool_size の値が 128M の場合は、推奨されるログファイルのサイズは 48M です。妥当な値は、<innodb_buffer_pool_size>/<innodb_log_files_in_group> より大きくならない範囲内とすることができます。詳細は、http://dev.mysql.com/doc/refman/5.6/en/の MySQL ドキュメンテーションを参照してください。
wait_timeout=非対話型接続が終了する前に、サーバーが活動を待機する秒数。この値はデータベースのロードに影響する場合があるため、この値が最大規模のプロジェクトのデータベースのロード時間よりも小さくならないことを確認してください。
innodb_log_group_home_dir=ログファイルを projects_root の場所とは別のハードドライブに保存すると、トランザクションの速度が向上します (確定したデータとトランザクションのデータが並行してして取得される可能性があるため)。
connect_timeout="Bad handshake" に応答する前に、データベースサーバーが接続パケットを待機する秒数。この値をデフォルト値 10 よりも高く設定しておくと、"クライアントが 'XXX' で MySQL サーバーとの接続が失われました。システムエラー :errno" の形のエラーにしばしば遭遇する場合に役に立ちます。

カスタマイズされた kwmysql.ini ファイルの例

4 GB RAM のマシンを Klocworkサーバー実行専用にして展開するためにカスタマイズした kwmysql.ini ファイルの例を示します。

デフォルトファイルへの変更または追加は、イタリック体で記述してあります。

[mysqld]
 #
 character_set_server=utf8
 #
 console
 #
 innodb_file_per_table
 innodb_file_io_threads = 8
 innodb_fast_shutdown=0
 #
 innodb_data_file_path=ibdata1:10M:autoextend 
 #
 thread_concurrency = 8
 key_buffer_size = 200M
 #
 innodb_buffer_pool_size = 384M
 innodb_log_file_size = 100M
 innodb_log_files_in_group = 2
 #
 binlog_cache_size = 32K
 #
 read_buffer_size = 2M
 read_rnd_buffer_size = 2M
 sort_buffer_size = 4M
 join_buffer_size = 1M
 bulk_insert_buffer_size = 10M
 #
 skip-external-locking
 default-storage-engine = MYISAM
 max_connect_errors=999999999
 lower_case_table_names=1
 #
 query_cache_size = 128M
 query_cache_limit = 2M
 query_cache_type = 1
 #
 thread_cache = 8
 myisam_max_sort_file_size = 4G
 myisam_sort_buffer_size = 8M
 tmp_table_size = 256M
 max_heap_table_size = 256M
 table_open_cache=300
 open_files_limit=2048

メモリ値は、次の式を使用して設定してください。

 innodb_buffer_pool_size + key_buffer_size + query_cache_size + (join_buffer_size + sort_buffer_size) * max_connections < accessible RAM
注: 32 ビットプロセスについて使用可能な RAM 量は 2GB です。