数据库

 首页 > 数据库 > MySql > 【数据库】如果对MySQL还停留在这个印象,就out了

【数据库】如果对MySQL还停留在这个印象,就out了

分享到:
【字体:
导读:
         摘要:笔者明白,有些错误印象是因为某些无良技术服务公司,为了赚钱而误导相关人员所致。有些问题是由于历史原因而导致的错误印象,但是任何事物都是发展的,或许有些问题早已在新版本中给解决了。为此,笔者整理了一些常见的MySQL错误印象,希望开发人员能够以发展的眼光来看待事物。...

【数据库】如果对MySQL还停留在这个印象,就out了
全系列PHP视频教程:细说PHP - http://www.xishuophp.com/

笔者明白,有些错误印象是因为某些无良技术服务公司,为了赚钱而误导相关人员所致。有些问 题是由于历史原因而导致的错误印象,但是任何事物都是发展的,或许有些问题早已在新版本中给解决了 。为此,笔者整理了一些常见的MySQL错误印象,希望开发人员能够以发展的眼光来看待事物。


如何对MySQL还停留在这个印象,就out了 

错误印象一:InnoDB存储引擎适合写密集型应用,MyISAM适合读密集型应用

回答:这个问题大该在8,9年前,也就是2005年的时候在论坛是非常有争论的话题,而上述答案 算是在那个年代的一种总结。其实这个答案仅回答了堆表与索引组织表在更新时的区别,其他很多问题没 有考虑。到目前的MySQL 5.6为止,InnoDB存储引擎已经完胜MyISAM了,看不到任何其他应用使用MyISAM的 必要性。当然,MyISAM存储引擎本身已经彻底停止开发了。


错误印象二:InnoDB存储引擎存在并发问题,大并发下性能较差

回答:InnoDB的并发问题其实一直是官方改进的重点,目前已经调优的非常不错,MySQL 5.7下只 读查询可以轻松达到50W QPS就是最好的证明。另外,Oracle官方对于各种并发瓶颈也进行了优化,比如 SSD盘并行刷新优化,重做日志优化,undo多线程purge优化等等,所以InnoDB存储引擎本身存在的并发问 题其实已经很少了。如果是上层的并发瓶颈,比如之前笔者说的电商秒杀问题(回复77可以查看),则可以 通过线程池技术来进行优化。


错误印象三:MySQL复制是不可靠的,经常会导致数据丢失或者复制失败

回答:的确,在MySQL 5.6版本之前,MySQL的复制是存在一些问题的,复制可能是不可靠的。但 是在2年半前发布的MySQL 5.6版本中,已经完全解决了复制可靠性问题。如果小伙伴们还出现出错问题, 基本可以定义为配置问题,有需求的可以联系笔者来帮你调优。使用笔者的开源MySQL版本InnoSQL,可以 免费获得技术支持。


错误印象四:MySQL复制是逻辑复制,所以速度慢,不及Oracle这类的物理复制

回答:逻辑复制肯定慢于物理复制?不一定吧,各种综合因素都很多吧。之前MySQL复制比较慢是 因为其复制是单线程的,所以延迟问题比较严重。然MySQL 5.7、MariaDB 10.0已经支持并行复制功能,延 迟问题基本已经解决。比如网易电商使用并行复制后,复制延迟从5个小时降低为0。


错误印象五:MySQL复制不能保证主从数据完全一致,不适合数据严格一致要求的场景

回答:上述这个错误观点竟然出自淘宝的VP,笔者只能说为了推广淘宝自己的OceanBase,已经不 择手段的来抹黑MySQL了。MySQL 5.7已提供了数据零丢失的复制方法,配置一个参数就能解决。类似的 PostgreSQL、Oracle也都是通过先写远程日志来保障数据零丢失,这本身并不是很新的技术。而网易也已 经在云数据库中使用该技术有近3年的时间(InnoSQL早在5.5就已经支持),可以说是完全经过线上应用考验 的技术。只能说有些细节问题可能需要考虑,不过有问题,同样可以咨询笔者。


错误印象六:sync_binlog需设置为0或者2

回答:MySQL 5.6版本之前存在组提交失效的问题,所以需要把这个参数设置为0或者2来提高性能 。但这意味着开启了番多拉魔盒,存在很多的隐藏问题。MySQL 5.6,InnoSQL 5.5,MariaDB 5.5版本都已 经解决组提交失效问题。so,sync_binlog务必设置为1

【数据库】如果对MySQL还停留在这个印象,就out了
分享到:
超越MySQL:三个流行MySQL分支的对比
超越MySQL:三个流行MySQL分支的对比     导读:尽管MySQL是最受欢迎的程序之一,但是许多开发人员认为有必要将其拆分成其他项目,并且每个分支项目都有自己的专长。该需求以及Oracle对核心产品增长缓慢的担忧,导致出现了许多开发人员感兴趣的子项目和分支。本文将讨论受人们关注的三个流行MySQL分支:Drizzle、Mari...
mysql表类型MyISAM和InnoDB区别(mysql 不...
mysql表类型MyISAM和InnoDB区别(mysql 不支持事务解决)学PHP推荐到:细说PHP - http://www.xishuophp.com/ mysql表类型MyISAM和InnoDB区别 MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method ( 有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与其他存储引擎...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……