We are currently running Postgres as our production DB but I am exploring moving to MySQL Cluster for the high availability and scalability. The problem is that I need to show better performance from the cluster than from Postgres in order to justify the move. We are using a home-brew bench program that fairly accurately reflects our DB usage (mostly writes) and so far I cannot get my test cluster to perform even 1/4 as well as Postgres on a single machine. Here is the test cluster setup:
4 NDB nodes, identical IBM blades, dual Xeon 2.8 GHz, 4 GB RAM running raid 1 on 2 10K scsi drives.
One blade also serves as the mgm node.
Currently testing with 2 SQL nodes, one on a dell poweredge dual 2.8 GHz, 4 GB RAM, with RAID 5 and the other an SGI Altix 350 with 16 IA_64 cpu's and 32 GB RAM. I have played with various other combinations of SQL nodes and gone as high as 4 SQL nodes with the SQL nodes being on the same machine as NDB nodes. All of this is on a 100 MB network. FWIW, I will soon have a second SGI available and am interested in using them as NDB nodes but not sure how to fit them in with other more modest servers for 4 data nodes.
If you are interested in seeing the bench program it can be downloaded from
http://users.altec.org/~russ/jdbcbench-1.8.tar.gz
With jdbcbench I typically init the db with a scale factor of 1 and then run it with 200 clients and 500 tests. My cluster usually returns with about 40-50 TPS depending on whether I use smal transactions or not. By comparison, a single Postgres machine with dual xeon 2.8 GHz, 4 GB RAM and raid 5 can return 156 TPS. I suspect a botteleneck on the disks of the blades so I have tried running with 'Diskless=1' with no help. I am allocating 1024 MB to DataMenory and 1024 MB to IndexMemory on the NDB nodes. I have also played with the MaxNoOfConcurrentTransactions, MaxNoOfConcurrentOperations, MaxNoOfLocalOperations, NoOfFragmentLogFiles, UndoDataBuffer, ReDoDataBuffer, and UnDoIndexBuffer directives without improvement.
I would love to take advantage of some of the features of MySQL Cluster, but I just cannot show the performance is there at this time. Please show me what I am missing!
Thanks in advance for the help,
Brad