I have a 4 node, 4 computer setup, 2 of the nodes having an API, each
computer having 1GB RAM, and using GigE.
Here's my create table statement:
CREATE TABLE `http_auth` (
`username` char(8) NOT NULL default '',
`uid` int(11) NOT NULL default '0',
PRIMARY KEY (`username`)
) ENGINE=ndbcluster
Running the following 'gen-data' command:
gen-data -n 500000 -f "INSERT INTO http_auth VALUES (' %8-8s',%n),...,
(' %8-8s',%n);"
(where the ... represents 18 more value pairs, for a total of 20
pairs.)
piped through 'mysql', I get about 11,000 inserts/second, for a total of
10,000,000 rows.
If I run the same test with 2 clients on 1 mysqld instance, dividing the
number of inserts for each client by 2, I get an average of 14,000.
If I run the same test, but with 2 instances of mysqld, running on 2
different computers, I get about 22,000. Effectively double what I got
with 1 client.
Can I safely presume that by using 3 instances, I'd get around 33,000,
and with 4 around 44,000 given that the average CPU load for 1 client is
about 20% utilization, and with 2 clients about 40% utilization?
Is this how the cluster is supposed to work, or is this what the
mysqld-to-ndb optimizations would address?
--
Alex Wheeler