第1章技术选型
1.1.MySQL版本说明:
版本分为四种:Alpha版、Beta版、RC版(Release Candidate)、GA版(Generally Available)。
Alpha版
Alpha版软件,这是软件工程对软件开发过程软件版本定义使用的版本说明。Alpha是内部测试版,一般不向外部发布,会有很多Bug.除非你也是测试人员,否则不建议使用.是希腊字母的第一位,表示最初级的版本,alpha 就是α。
Beta版
Beta版软件,这也是软件工程中对软件开发测试版本控制的版本说明。Beta一般是Alpha后面的版本。该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一缺陷,需要经过多次测试来进一步消除。这个阶段的版本会一直加入新的功能。beta 就是β。
RC版
RC版,RC即Release Candidate的简写。这是Beta后面的版本,一般RC版并没有新增功能,而是修复了一些反馈的Beta中存在的BUG。所以RC版更接近最终发行版即稳定版(GA版)
GA版
GA版,GA即Generally Available的简写。这就是软件最终的发行版。这个版本一般BUG相对较少。这个发行版也可以叫稳定版。
Release版
Release版,在有些软件存在,在MySQL中一般没有这个版本。该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。该版本有时也称为标准版。一般情况下,Release不会以单词形式出现在软件封面上,取而代之的是符号(R)。
选择说明:
1、首先选择社区版的GA版(稳定版)。
2、选择发行时间6-10个月以上的GA版。
3、选择最近几个月没有修复重大BUG的版本,软件工程原理修复了较大BUG则说明还隐含较多的BUG。
1.2.MySQL各版本的比较:
mysql5.7 : 2015年发布,mysql5.7查询性能得以大幅提升,比 MySQL 5.6 提升 1 倍降低了建立数据库连接的时间。
mysql5.6 : 2013年2月发布,mysql5.6版本其中InnoDB可以限制大量表打开的时候内存占用过多的问题InnoDB性能加强。如大内存优化等InnoDB死锁信息可以记录到 error 日志,方便分析InnoDB提供全文索引能力。
mysql5.5 : 2010年12月发布mysql5.5版本默认存储引擎更改为InnoDB 多个回滚段(Multiple Rollback Segments),之前的innodb版本最大能处理1023个并发处理操作,现在mysql5.5可以处理高达128K的并发事物 改善事务处理中的元数据锁定。例如,事物中一个语句需要锁一个表,会在事物结束时释放这个表,而不是像以前在语句结束时释放表。 增加了INFORMATION_SCHEMA[ˈski:mə]]表,新的表提供了与InnoDB压缩和事务处理锁定有关的具体信息。
mysql5.1 : 20o8年发布的MySQL 5.1 的版本,基本上就是一个增加了崩溃恢复功能的MyISAM,使用表级锁,但可以做到读写不冲突,即在进行任何类型的更新操作的同时都可以进行读操作,但多个写操作不能并发。
mysql-5.0 : mysql-5.0版本之前,myisam默认支持的表大小为4G。从mysql-5.0以后,myisam默认支持256T的表单数据。myisam只缓存索引数据。 2005年的5.0版本又添加了存储过程、服务端游标、触发器、查询优化以及分布式事务功能。
mysql-4.1 : 2002年发布的4.0 Beta版,至此MySQL终于蜕变成一个成熟的关系型数据库系统。 2002年mysql4.1版本增加了子查询的支持,字符集增加UTF-8,GROUP BY语句增加了ROLLUP,MySQL.user表采用了更好的加密算法。支持每个innodb引擎的表单独放到一个表空间里。innodb通过使用MVCC(多版本并发控制)来获取高并发性,并且实现sql标准的4种隔离级别,同时使用一种被称成next-key locking的策略来避免幻读(phantom)现象。除此之外innodb引擎还提供了插入缓存(insert buffer)、二次写(double write)、自适应哈西索引(adaptive hash index)、预读(read ahead)等高性能技术。
具体而言那个MySQL版本好需要根据实际应用来确定,这里推荐大家参考以下MySQL数据库GA版本选择的流程,如下所述:
1、分析本企业业务是否需要使用到MySQL的那些基本功能和特性,特性重点研究方向为:MySQL复制、分区表、Plugin-innodb等。
2、MySQL数据库产品线第一个GA版本推出时间,至少要超过10个月,再考虑使用到生产环境中去。
3、MySQL数据库产品线的最新GA版本,一般不要作为首选目标,可考虑比最新版本晚3~4个版本的GA版本数据库。
4、仔细阅读目标数据库GA版本的信息,若是在之前的版本的基础上修改了大量的BUG,则此GA版本慎重选择。
5、仔细阅读目标数据库GA版本之后的第一个版本的信息,若是修改的BUG信息量非常大,请直接放弃目标版本,向前推进一个版本号作为目标版本。
6、按照第四、第五步骤所描述的办法来选择,直到选定的版本之后的一个版本,BUG修改量不大,严重BUG极少,并且不是最新的GA版本
7、详细阅读选定的数据库GA版本之后2~3个版本的BUG修复信息,主要是跟目标GA版本相关的,并且想办法重现,以及寻找规避的办法。
8、对经过上述七个步骤挑选的GA版本,结合企业业务可能需要用的功能,都必须进行功能测试和性能测试。
9、挑选的数据库GA版本,作为内部开发测试数据库环境,通常要试运行大概3-6个月的时间。
10、企业非核心业务可以考虑采用新的GA版本。
11、经过上述10个工序之后,若是没有重要的功能BUG或性能瓶颈,则可以开始考虑作为所有的业务数据服务的后端数据库。
结论
本次测试mysql5.7和mysql8.0 分别在读写、只读、只写模式下不同并发时的性能(tps,qps)。
整体来看,mysql5.7在读写模式、只读模式、只写模式下的表现是优于mysql8.0的
注:本次测试结果是在配置很低的情况下进行的,不代表绝对
最终建议选择mysql5.7版本。