MySQL Cluster和RAC实现比较

MySQLCluster和RAC实现比较

经常免不了拿MySQLCluster(以下简称MySQL)和ORAClE(RAC)来对比。

MySQL使用了sharednothing的架构,而RAC使用的是sharedeverything的架构.

先看读一个数据块的处理,在RAC中当数据块在本地的cache中,可以直接

操作,如果在远端的话,需要请求远端的实例发送到本地来,然后再进行操作.如果

本块和远端都没有则请求一个读磁盘块的操作.RAC通缓存融合把整个集群的cahce看

做是一个大cache

MySQL读一个块,因为数据是同步复制的,直接在本地就有整个数据所有复本,这样

直接读取就可以了。如果是写操作的话,那么就需要在所有节点上进行写操作,整个过程是通过

两阶段事务提交协议来实现的。可以看出当在一个节点上写操作时,需要在其他节点上

全部写入,本地事务才能提交,这样当一个节点写入慢了,整个事务响应都比较慢,

而且整个集群在写密集操作时,写入次数非常大,比如在一个节点上写一个块,那么整个

集群的写次数totalwrites=nodenumbers*writes.从这个公式可以看出,随着节点数增

加,写性能急剧下降.

看RAC的写操作,如果数据块在本地,那么直接写操作就可以了,因为是sharedeverything

的架构整个数据只要写一份就可以.

有说MySQL有自动对数据进行分片的功能,那么整个集群看起来就像一个RAID0,可靠性

极低.另外对于一些操作,需要扫描所有的数据节点,那么这样的操作性能也会非常

非常低。

在不考虑很强的数据一致性的前提下,个人认为MySQLCluster对只读应用比较合适.

相关推荐