HANA には1つの SQL に対して1スレッド使われる SQL Executor とSQL を並列*1タスクに分解して処理する Job Worker スレッドがあり、max_concurrency は1のSQL あたりの並列実行スレッド数を制御するパラメータ。max_concurrency_hint は直近のワークロードに基づいて動的に導出されるスレッド数で、max_concurrency より大きくはできない。
CPU使用率スパイク時にM_SERVICE_THREADSシステムビューで STATEMENT_HASH が同じスレッドが多数実行されている場合は、max_concurrency で抑制できるが、異なる STATEMENT_HASH のスレッドが多数実行されている場合は max_sql_executors で抑制する必要があると思う。
参考
Parameters for Job Executor
You can change the default settings in the configuration editor of the SAP HANA studio (recommended) or directly in the execution section of the global.ini or indexserver.ini system properties file.
- max_concurrency - sets the target number of threads that can be used.
Threads are created as required up to the limit defined here. New threads are created, for example, if a thread is blocked waiting for I/O or network. Set this to a reasonable value between the number of logical cores per CPU up to the overall number of logical cores in the system. Does not require a restart. Available since SPS 09. Note that from SPS12, this parameter should only need to be modified for multitenant database container installations.
- max_concurrency_hint - limit concurrency hint even if more active job workers would be available.
The JobExecutor proposes the number of jobs to create for parallel processing based on the recent load on the system. This parameter limits decisions to parallelize on a low level of code. Multiple parallelization steps may result in far more jobs being created for a statement (and hence higher concurrency) than this parameter. The default is 0 (no limit is given, but hint is never greater than max_concurrency). On large systems (that is more than 4 sockets) setting this parameter to the number of logical cores of one socket may result in better performance. Performance tests with the target workload are needed to confirm this.
Does not require a restart. Available since SPS 08 (revision 85).
SAP Help Portal