
我上学那会,许多人对 MySQL 有一些私见,私见重要集合在以下几方面:
1. MySQL 不支撑事件(事实上 MyISAM 有表锁,然则效力比较低)
2. MySQL 存储的数据量比较小,合适小项目,大项目照样得上 Oracle、DB2 等
这么多年过去了,我本身在开辟中一直是以 MySQL 为主,我以为我有必要说两句公道话了。
公道话
第一个题目
关于第一个不支撑事件的题目,这有肯定的汗青缘由。MySQL 从设想之初,存储引擎就是可插拔的,许可公司或许个人根据本身的需求定义本身的存储引擎(固然,平常的公司或许个人现实上是没有这个气力的)。MySQL 自研的运用较广的存储引擎是 MyISAM ,MyISAM 支撑表锁,不支撑行锁,所以在处置惩罚高并发写操纵时效力要低一些,别的 MyISAM 也不支撑外键(虽然如今现实项目中外键已用的比较少了)。
然则这个题目并不是无解。这就不得不说 MySQL 中别的一个赫赫有名的存储引擎 InnoDB 了。
InnoDB 存储引擎是由一家位于芬兰赫尔辛基的名为 Innobase Oy 的公司开辟的,InnoDB 存储引擎的汗青以至比 MySQL 还要悠长。
InnoDB 方才开辟的时侯,就是作为一个完全的数据库来开辟的,因而功用很完整。开辟出来以后,创始人是想将这个数据库卖掉的,然则没有找到买家。
厥后 MySQL2.0 推出后,这类可插拔的存储引擎吸收了 Innobase Oy 公司创始人 Heikki Tuuri 的注重,在和 MySQL 沟通以后,决定将 InnoDB 作为一个存储引擎引入到 MySQL 中,MySQL 虽然支撑 InnoDB ,然则现实上照样主推自家的 MyISAM。
然则 InnoDB 实在太优异了,终究在 2006 年的时侯,胜利吸收到大魔王 Oracle 的注重,大手一挥,就把 InnoDB 收买了。
MySQL 主推自家的 MyISAM ,日子过得也很昏暗,终究在 2008 年被 sun 公司以 10 亿美圆拿下,这个操纵稳固了 sun 在开源范畴的首脑的职位,但是一直以来 sun 公司的变现才能都比较弱,终究 sun 本身在 2009 年被 Oracle 收入囊中。那会我还在读高中,某一天吃午餐的时侯,餐厅的电视机上播放央视的午间音讯,看到了这条音讯,如今另有一些印象。
Oracle 收买 sun 以后,InnoDB 和 MySQL 就都成了 Oracle 的产物了,这下整合就变得异常轻易了,在厥后宣布的版本中,InnoDB 逐步就成为了 MySQL 的默许存储引擎。在最新的 MySQL8 中,元数据表也运用了 InnoDB 作为存储引擎。
InnoDB 存储引擎重要有以下特性:
1. 支撑事件
2. 支撑 4 个级别的事件断绝
3. 支撑多版本读
4. 支撑行级锁
5. 读写壅塞与事件断绝级别相干
6. 支撑缓存,既能缓存索引,也能缓存数据
7. 全部表和主键以 Cluster 体式格局存储,构成一颗均衡树
8. ...
固然也不是说 InnoDB 肯定就是好的,在现实开辟中,照样要根据细致的场景来挑选究竟是运用 InnoDB 照样 MyISAM 。
所以第一个题目不攻自破。
第二个题目
第二个题目确实是一个硬伤。
你如果拿 MySQL 和 Oracle 比,肯定是要差一点点觉得。毕竟一个免费一个收费,而且收费的还很贵。然则这个题目并不是无解。
置信许多小伙伴都听过国内许多大厂都运用了 MySQL 来存储数据。大厂用 MySQL ,是因为他们有才能研发出本身的存储引擎,小厂平常没有这个气力,没法去研发出本身的存储引擎,然则 Oracle 又用不起,那末怎么办呢?
这几年鼓起的分布式数据库中间件恰好能够很好的处理这个题目。Java 范畴,相似的东西许多,比方 Sharding-JDBC 、MyCat 等,经由过程这些东西,能够很好的完成数据库分库分表,以及数据表的动态扩大、读写星散、分布式事件处理等。有了这些东西,极大的提高了 MySQL 的运用场景。
另一方面,近年盛行微效劳,这不是纯真的炒观点,微效劳架构将一个大的项目拆分红许多个小的微效劳,各个微效劳处置惩罚本身很小的一部分事变,这更相符人类分工协作的特性。在微效劳架构中,我们对大表的需求、对多表团结查询的需求都邑有所下降,MySQL 也更具用武之地。
因而,第二个题目也是能够处理的。
据我相识,互联网公司运用 MySQL 照样比较多的,传统软件公司,可能会更喜爱 Oracle 等数据库。
不过话说回来,云盘算,也是将来一个方向。
更多MySQL相干技术文章,请接见MySQL教程栏目举行进修!
以上就是MySQL只能做小项目?是时刻说几句公道话了!的细致内容,更多请关注ki4网别的相干文章!