MySQL Cluster 5.1 引入了新的功能,添加索引的时候不中断活动事务,或不像以前版本那样在添加索引的时候引起系统资源瓶颈。让我们回顾一下在MySQL4.1和5.0上是怎么添加索引的。
1、我们创建一个有两个相关索引(index1和index 2)的表(table_1)
2、第二步、一个临时表(temp table)被创建。
3、表table_1、索引index1、index2和新的索引index3上的数据被创建。
4、一旦上述过程完成,原始表table_1被删除,临时表被重新命名为table_1.
图5是MySQL Cluster4.1和5.0版的索引创建过程描述。
MySQL Cluster 5.1中添加索引的过程如图6所示,添加的过程非常快。这意味着不需要再创建临时表,也不需要重新创建和删除数据。使用快速ADD INDEX 的好处是表的维护操作加快了,内存和磁盘方面的要求降低了,因此你在维护表的时候不再必须有足够的存储空间来维护表的双份数据拷贝,而且集群也更能适应它所支持的应用的变化需求。
下面是一个在5.0和5.1上创建和删除索引性能差别的例子,正如你所见,5.1要快将近4倍。
Version 5.0
mysql>CREATE INDEX b ON t1(b);
QueryOK, 1356 rows affected (2.20 sec)
Records:1356 Duplicates: 0 Warnings: 0
mysql>DROP INDEX b ON t1;
QueryOK, 1356 rows affected (2.03 sec)
Records:1356 Duplicates: 0 Warnings:
Version 5.1
mysql>CREATE INDEX b ON t1(b);
QueryOK, 1356 rows affected (0.58 sec)
Records:0 Duplicates: 0 Warnings: 0
mysql>DROP INDEX b ON t1;
QueryOK, 1356 rows affected (0.46 sec)
Records: 1356 Duplicates: 0 Warnings: 0
删除索引时结果也相似。