写这篇文章的时候想了很久,纠结的是它的性能问题。
mysql cluster目前只支持ndb引擎,但ndb引擎的速度的确不敢恭维。
先来一组对比:
插入:
MYISAM:
mysql> insert into all_behavior_myisam select * from all_behavior limit 100000;
Query OK, 100000 rows affected (4.94 sec)
Records: 100000 Duplicates: 0 Warnings: 0
INNODB:
mysql> insert into all_behavior_inno select * from all_behavior limit 100000;
Query OK, 100000 rows affected (19.51 sec)
Records: 100000 Duplicates: 0 Warnings: 0
NDB:
mysql> insert into all_behavior_ndb select * from all_behavior limit 100000;
Query OK, 100000 rows affected (47.46 sec)
Records: 100000 Duplicates: 0 Warnings: 0
![](https://img-my.csdn.net/uploads/201304/26/1366946246_2335.jpg)
查询:
ndb:10 rows in set (0.01 sec)
myisam:10 rows in set (0.00 sec)
innodb:10 rows in set (0.00 sec)
删除:
myisam:
mysql> delete from all_behavior_myisam;
Query OK, 100000 rows affected (0.00 sec)
innodb:
mysql> delete from all_behavior_inno;
Query OK, 100000 rows affected (7.07 sec)
ndb:
mysql> delete from all_behavior_ndb;
Query OK, 100000 rows affected (11.12 sec)
可以看出ndb引擎的处理速度真的很差,为什么呢?
因为ndb跟innodb一样支持事务,并且ndb的事务更复杂,他不单单自己mysql 进程里的事务,还包括mysql cluster的整个事务。比如我现在是2个data note,那它的事务就要支持2个data note都完成整个sql,可见这种情况下它想快也很难。
当然,mysql cluster是一个群体,不能单个单个拿来比,在并发量高的情况下,它就会发挥其作用。再加上lvs负载横向的扩展很强悍。就也是N>1的道理。