【重磅】MySQL 8.0 pre release看点

导读

MySQL 8.0即将发布,一起来看看都有什么料。

昨天就收到了官方发给ACEs的邮件,不过今天白天一直在忙着给新房子做保洁,没来得及认真查看邮件内容,只是简单扫了一眼,整体感觉还是有很多惊喜,不过也大体上在意料之中。

重大变更

  1. 彻底将数据字典表引擎从MyISAM改为InnoDB。显然地,这是要更进一步放弃MyISAM引擎的节奏,还在负隅顽抗的亲们,要认清形势了,哈哈。事实上,我当初的预期是在5.7就该这么做的。
  2. 增加了ROLE特性。这是继续向ORACLE看齐啊,我个人没啥特别感觉。
  3. 修改默认字符集为utf8mb4。这个,见仁见智吧,各有喜好,不管怎样,也算是紧跟着时代发展的决定了。
  4. 新增INVISIBLE(不可见)索引属性。可将一个索引设置为不可见,那么查询优化器不再识别该索引。这么做的用意是,方便DBA判断某个索引过一阵子是否可以删除,不再担心误杀。
  5. 位运算功能增强。以前只能针对INT类型做位运算,现在增加支持二进制类型的运算,比如 [VAR]BINARY/[TINY|MEDIUM|LONG]BLOB 等多种类型。另外,也支持对 IPV6 和 UUID 类型的位运算。
  6. 在线修改全局选项(GLOBAL VARIABLES)时,增加 PERSIST 关键字后,可以将该调整持久化,即便实例重启。这就可以避免了在线修改某些选项后,忘了同时修改 my.cnf,造成了实例重启后,这个修改又被恢复原样的问题。这个功能显然也是在学习ORACLE的控制文件做法呀。
  7. 增强P_S(performance_schema)功能,主要有几点:
    1. 可以在P_S中直接查看错误日志;
    2. 在P_S中增加了类似自适应哈希索引的索引机制,便于快速检索P_S中的数据;
    3. 在线修改全局选项(GLOBAL VARIABLES)时,增加 PERSIST 关键字后,可以将该调整持久化,即便实例重启。这就可以避免了在线修改某些选项后,忘了同时修改 my.cnf,造成了实例重启后,这个修改又被恢复原样的问题。这个功能显然也是在学习ORACLE的控制文件做法呀。
  8. 重构SQL解析器。简单来说,原先的解析器有严重的问题,维护性、扩展性都不好,在8.0里进行了重构,以后会做的更牛逼。
  9. 查询优化器Hints功能增强。在5.6及更早版本中,子查询中的派生表总是要进行物化,效率很低。从5.7开始,优化器会根据情况进行判断,自行决定在哪些情形下需要物化,哪些直接合并进外部查询中,通常来说,后一种做法效率会搞很多。在8.0中,可以在SQL中增加 /*+ merge */ 关键字来决定哪些情形下将派生表合并到外部查询中以提升查询效率。
  10. 查询优化器功能增强。它会判断InnoDB Buffer中数据、索引缓冲比例的情况,决定每个SQL的访问模式,尽量避免发生物理读。
  11. 增加直方图功能。不知道直方图什么意思的话,可以了解下MariaDB分支中的QUERY RESPONSE TIME这个插件的功能,和这个基本相似。又是学习ORACLE的做法呀,汗(⊙﹏⊙)b
  12. GIS功能增强。增加了经度、纬度、平面地图等功能。
  13. 提高数据扫描查询效率。例如下面这样的SQL大概能有5-20%的效率提升:

    SELECT * FROM t;

    或是

    SELECT * FROM t WHERE pk BETWEEN 1000 AND 10000;

  14. 增强InnoDB引擎中部分读取或更新BLOB数据类型的效率。
  15. InnoDB Memcached功能增强,增加一次取多个值(mget),以及范围搜索。
  16. 修复了InnoDB重启后,自增值丢失的bug,这个bug历史非常悠久(bug id是199,可想而知,嗯…)。
  17. 会对那些损坏的数据页加上标记,数据库实例在进行recovery时,就会忽略这些page了。
  18. 临时表增强。首先,将压缩类型临时表映射成未压缩格式。其次,将临时表的元数据存储在内存中。
  19. InnoDB性能大幅提升,主要做了几个事情:
    1. 可以把想通table ID组内的undo数据批量purge;
    2. 废除buffer pool mutex。将原来一个mutex拆分成多个,提高并发;
    3. 拆分LOCK_thd_list 和 LOCK_thd_remove 这两个mutex,大约可提高线程链接效率5%。
  20. MySQL复制功能方面的改进或提升不多,这个让我非常诧异,我也就没写出来了。

写到凌晨一点半,实在有点累(开头说过,今天做了一天保洁)。其他更多新特性,我大概过了一眼,好像不是太有诱惑性,这次就先不列出来了。

毕竟,现在还只是pre release,在后续的计划中,肯定还会发生很大变化。比如这次就完全没提到group replication,也压根没提到之前广大中国MySQL用户提交给官方的新功能需求,汗一个(⊙﹏⊙)b

再小小吐槽下,安装包真的是是越做越大了,建议官方发布的时候,再提供一个strip过后的二进制包吧,下载起来更快一些~~~

好了,先到这里,下次再扯。

【深度总结】服务器硬件管理

0、导读

17173系统部系统工程师余祥军倾心总结的多年服务器硬件管理经验。

1、内容简介

余祥军是17173系统部系统工程师,入职几年进步飞快,更是特别擅长总结分享。余祥军根据自己多年和服务器(尤其是DELL机型)打交道的经验,整理成本文,不吝拿出来和大家分享。

本次分享的PPT资料已经上传到百度云盘,链接: https://pan.baidu.com/s/1pLITS3h ,欢迎转存及转发。

【友情提示】知数堂培训全新MySQL DBA课程第八期已火爆开课,全新Python运维开发班第二期8.27开课,请加入QQ群:529671799 获得最新信息。

【干货】分享总结:MySQL数据一致性

0、导读

沃趣科技数据库工程师罗小波为大家全面分析如何保证MySQL的数据一致性。

1、活动总结

罗小波老师从MySQL的崩溃数据恢复安全性、MySQL复制原理及异步&semi sync复制原理、MySQL主从服务器如何保证数据一致性等多方面分析如何保证MySQL的数据一致性。

分享内容满满的干货,非常给力!

值得一提的是,罗小波是知数堂MySQL DBA实战优化班第5期学员,学习非常努力,在结业考试中名列前三甲。后来有幸加入沃趣科技,在职业道路上获得了飞跃。祝福小波!

本次分享的音视频、PPT相关资料已经上传到百度云盘,链接: https://pan.baidu.com/s/1miuDuDM ,欢迎转存及转发。

【友情提示】知数堂培训全新MySQL DBA课程第八期已火爆开课,全新Python运维开发班第二期8.27开课,请加入QQ群:529671799 获得最新信息。

最后再次感谢大家对知数堂培训的支持和关注!

闲扯DBA品质对日常生活的影响

导读

本来也想凑热闹说下宝宝的话题,想想还是算了。还是闲扯下DBA品质对日常生活的影响吧。

还有,今天(8.15)是日本无条件投降纪念日,勿忘国耻,奋发图强才是正道,别整天吵吵抵制日货,没毛用。

囧事

上周末带小孩回了趟老家,结果往车里放完东西后,很帅的顺手把车门一关,然后再很顺手的摸了一下钥匙,完蛋,给锁车里了。

按理说,钥匙在车里的情况下,不应该还能锁车才对,可是科帕奇居然还是给锁了,显然不合理(虽然可能由于其他什么原因这么设计的),问了几位其他车型的朋友,都没有这种情况。

幸运的是,我每次出远门,都习惯带两把钥匙(DBA重要品质之一:备份意识,告诉我应该这么做,O(∩_∩)O哈哈~),后来让家里人把备用钥匙从40公里之外的地方送过来,终于解救了。

之后,又发生了一件囧事,因为钥匙的问题耽误了很长时间,急着从老家赶到县城,结果钱包和驾照落在老家了,汗啊😓。这说明了DBA的重要品质之二:标准化/checklist,我没做到位才导致这个问题发生。

DBA重要品质有哪些

我觉得,想作为一个优秀的DBA,应该至少具备以下几个重要的品质:

  1. 备份意识。可以不够精通优化,可以不够深入核心,但一定要重视备份,没有备份的话,万一误操作数据被删,就一切无可挽回。备份意识不仅仅是数据备份,可能还有人员备份(备岗),需要从制度上强化备份意识。

    比如我会把家里钥匙放一把在附近朋友家,再放一把在公司,遇到出门忘带钥匙时就不怕了。

  2. 抗压/稳健。遇事不慌张,万一不慎“删库”了咋整,可别真的“跑路”啊。只有强大的抗压力,稳健的心态,在遇到大事时才能及时找到合适的应对方案。

    做男人压力很大啊,凡事都得自己扛,别趴下。。。

  3. 标准化/checklist。把一些重要操作参照流程,提前准备好各个环节要做的事情。如果有自动化运维平台,则可以把这个流程整合进去,由平台来帮我们完成标准化检查,避免漏掉个别环节,造成不可估量的损失。

    出门之前检查下手机、钱包、钥匙是不是都带了(现在我家小朋友出门前都会提醒我老婆要带这三样东西)

其他诸如思维敏捷、勤奋努力,以及要对数据库各种XXX原理深入理解的废话我就不多说啦。好了,闲扯结束,各位看官别嫌我啰嗦,抱歉抱歉 O(∩_∩)O~