MySQL最近遭遇了一个bug。这应该算是MySQL百年难得一遇的bug?严谨一点来说,就是创建表格超过8001张以后,没办法重启了。所以Oracle官方不得不立刻下架有缺陷的版本,更新了新的版本。因为这个Bug虽然原因并不复杂,但是影响特别恶劣。至于原因呢?真的不复杂。
就是当InnoDB做check的时候,如果表数量超过8000,就会起多个线程。然而,做check的函数本身应该是支持多线程的,却没有真的支持多线程。有人对MySQL的质量进行了质疑。这种质疑也挺有道理的,毕竟,这个Bug只要 Test到位,不至于会发生才对。毕竟这不是一个很高级的错误,很难查的那种。
那么问题来了,为什么MySQL居然在版本发布的时候,没发现这个问题呢?反而搞出来之后,不得不立刻发布一个新版本。我想,InnoDB这个东西,有很多人做MySQL的版本改进的时候,比如国内的AliSQL之类的MySQL的克隆增强版,都在blog里面提到过。InnoDB本身的代码,按照这些大神的说法,或多或少都有问题。尤其是在多线程方面。所以大神们按照自己的理解改进了MySQL还有InnoDB。
这才出现了那么多克隆增强版。可惜MySQL在Oracle手中,似乎并没有发扬光大。起码最近的大版本更新,让人很失望。不过也可以理解了,毕竟Oracle自己的产品,才是公司最重要的资产,至于MySQL,应该就是个附带的东西罢了。网上也有很多人带节奏,表示现实是时候换去PostgreSQL了。毕竟,后者确实要复杂多了。
不知道你是怎么看的?