MySQL Clusterチューニングメモ(まだ途中)

とりあえず、4点。
このうちの1と3はCGEのみ?

1.Data Nodeへのコネクションプーリング

http://johanandersson.blogspot.com/#multiconnect

[mysqld] ... ndb-cluster-connection-pool=10

http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-mysqld-command-options.html

SQL NodeとData Nodeのプーリングを設定する。
通常は1だけど、クライアント数によっては、増やすといいかも。


2.秘密のパラメータと推奨値
まだドキュメント化されていないもの。

英文説明部分は、2005/9にMikaelからもらったメールを引用した。

ndb-force-send=1
5.1のマニュアルに記載なし。

Default set to 1 (4.1) Try setting it to 0

This parameter enables an adaptive protocol that waits before actually sending off the messages to the cluster.
This is by default set for optimal performance in systems with small number of connections. Using large number of connections (as you do) it should be beneficial to reset this parameter.

ndb-use-exact-count=0
5.1のマニュアルに記載なし。
4.1の時は、このパラメータを0にすることで、最も性能が向上した。

Default set to 1 (4.1) Try setting it to 0

When this is set it gives exact counts of number of records in a table during query planning. This can be beneficial for queries executing for a long time and also for fast execution of SELECT

count(*) from table x. For small primary key lookups (as you test) it is very beneficial to reset this parameter.

engine-condition-pushdown=1
WHERE節での絞り込みを、DataNodeレベルで実行する。
5.1では、デフォルトでオンになっている。

3.同時実行性能/スレッド関連
MySQL-5.1.22-ndb-6.3.4で追加されたオプション。

http://johanandersson.blogspot.com/#realtime

RealtimeScheduler=1 LockExecuteThreadToCPU=[cpuid] LockMaintThreadsToCPU=[cpuid] SchedulerExecutionTimer=80 (ms) SchedulerSpinTimer=400 (ms)

この辺とかをチューニング。

MySQL :: MySQL 5.1 Reference Manual :: 16.4.4.5 Defining Data Nodes

Realtime Performance Parameters

The [ndbd] parameters discussed in this section are used in scheduling and locking of threads to specific CPUs on multiprocessor data node hosts. They were introduced in MySQL 5.1.22-ndb-6.3.4.

*

LockExecuteThreadToCPU

This parameter specifies the ID of the CPU assigned to handle the NDBCluster execution thread.

The value of this parameter is an integer in the range 0 to 65535 (inclusive). The default is 65535.
*

LockMaintThreadsToCPU

This parameter specifies the ID of the CPU assigned to handle NDBCluster maintenance threads.

The value of this parameter is an integer in the range 0 to 65535 (inclusive). The default is 65535.
*

RealtimeScheduler

Setting this parameter to 1 enables real-time scheduling of NDBCluster threads.

The default is 0 (scheduling disabled).
*

SchedulerExecutionTimer

This parameter specifies the time in microseconds for threads to be executed in the scheduler before being sent.

The default is 50 μsec.
*

SchedulerSpinTimer

This parameter specifies the time in microseconds for threads to be executed in the scheduler before sleeping.

The default value is 0.

4.ログ関連
http://johanandersson.blogspot.com/2007/05/good-configuration.html