Dear NDB users,
I am evaluating NDB for use as a back-end for an asset control system. This requires a system that can handle a large number of simultaneous connections, all accessing the same data tables.
There are scenario's when all assets will try the database at the same time, so I am looking for a system that will continue to work with this load scenario.
To test, I have taken an out-the-box 'mysql-5.1.56 ndb-7.1.18' generic Linux distribution, and written a small 'c' program to update a database by spawning threads, each pretending to be a new asses, and effecting the same table in a database. (Specifically: completing 10 updates per second per simulated asset. Starting with 1 asses, adding another asset every second, and stopping when I hit the first error. Each update is within a separate and new connection on a separate thread.)
The result:
Below about 40 connections, performance is good. I get 100% updates from all threads without noticable latency.
However, above that and up to my limit of 1000 simultaneous connections, performance is not good. Something seems to go badly wrong, and I cannot get more than 40 updates/second gross. This is worse than using a CSV table engine, and literally hundreds of times worse than a MyIsam table.
This is a graph showing a comparison of all database engines using the same 'mysqld' engine:
https://docs.google.com/present/view?id=dd6tjhkh_38dmqcxkdw&interval=60
To me, this looks like something is wrong with the default out-the-box configuration.
May I ask users if they know anything to give NDB performance when used with large numbers of simultaneous connections?
Many thanks,
Ben Clewett.
I am evaluating NDB for use as a back-end for an asset control system. This requires a system that can handle a large number of simultaneous connections, all accessing the same data tables.
There are scenario's when all assets will try the database at the same time, so I am looking for a system that will continue to work with this load scenario.
To test, I have taken an out-the-box 'mysql-5.1.56 ndb-7.1.18' generic Linux distribution, and written a small 'c' program to update a database by spawning threads, each pretending to be a new asses, and effecting the same table in a database. (Specifically: completing 10 updates per second per simulated asset. Starting with 1 asses, adding another asset every second, and stopping when I hit the first error. Each update is within a separate and new connection on a separate thread.)
The result:
Below about 40 connections, performance is good. I get 100% updates from all threads without noticable latency.
However, above that and up to my limit of 1000 simultaneous connections, performance is not good. Something seems to go badly wrong, and I cannot get more than 40 updates/second gross. This is worse than using a CSV table engine, and literally hundreds of times worse than a MyIsam table.
This is a graph showing a comparison of all database engines using the same 'mysqld' engine:
https://docs.google.com/present/view?id=dd6tjhkh_38dmqcxkdw&interval=60
To me, this looks like something is wrong with the default out-the-box configuration.
May I ask users if they know anything to give NDB performance when used with large numbers of simultaneous connections?
Many thanks,
Ben Clewett.