在MySQL 5.7存储引擎InnoDB崩溃恢复中,我们一定看到过MLOG_CHECKPOIN的身影。从上一个检查点(LOG CHECKPOINT)开始,进行第一次redo日志扫描(参考函数recv_group_scan_log_recs() ),就是要找到MLOG_CHECKPOINT。那么MLOG_CHECKPOINT是用来做什么的?
近期,有线上5.6版本event用户反映了两个问题: (1) 部分event莫名其妙的延迟执行 (2) 慢日志不记录event中的更新及插入语句 经过一系列的分析及验证,我们确认这两个问题是mysql原生代码的bug,并向官方report。下面就介绍一下相关代码及这两个bug的具体原因及修复方案。
buffer pool 是 innodb的数据缓存,保存了 data page、index page、undo page、insert buffer page、adaptive hash index、data dictionary、lock info。buffer pool绝大多数page都是 data page(包括index page)。innodb 还有日志缓存 log buffer,保存redo log。
MySQL是多存储引擎的数据库系统,其中innodb是所有存储引擎中对事务系统实现最完善的,这体现在innodb支持SQL标准中的全部隔离级,以及提高并发读效率的MVCC(多版本并发控制)的实现。网上对innodb的锁和MVCC有很多介绍,我们在这里就不在这里过多描述。此篇文章我们将介绍事务隔离级的基础知识,以及innodb中事务隔离级入门代码,帮助大家了解和学习innodb事务隔离级。
InnoDB是一种数据按照行存储的引擎。当记录删除时,InnoDB只进行删除标记,后续再异步回收相应空间。
对于使用MySQL来说,有一个让人苦恼的事情就是处理字符集的问题,众多的字符概念和设置,常常让用户感到束手无策而不知如何使用。对事务所来说客户的需求就是我们命令,了解到大家的这种困惑后。经过一番探索,X侦探所的探员T将给大家捋顺字符集的来龙去脉以及MySQL中的字符集秘密,下面就将开启我们的字符探索之旅。
本文的目的是对 InnoDB 的锁模块做个简单的介绍,使读者对这块有初步的认识。 此外,我们在对MySQL 5.7做性能分析的时候发现lock_sys mutex成为热点瓶颈,官方在MySQL 8.0上对lock_sys锁也做了很多优化,本文针对一些重大的性能优化做一些介绍。
关系型数据库是一个通用系统软件,SQL作为一种结构化查询语言,用户不需要关注怎么做,只需要描述做什么,然后交由SQL引擎来处理。因为关系代数提供的等价性,同一个查询可以用不同的SQL语句描述。为防止用户所写的"不好的"SQL执行慢,这就需要查询优化器快速而准确地选择出一个效率较高的执行计划。
MySQL-8.0中新增了resource group资源组的功能。MySQL资源组的想法来源很简单:每个资源组是一个资源独立的单位,每个资源组能够容纳一个或者多个MySQL线程。拥有设置资源组权限的DBA们能够创建、配置资源组以及指定、切换MySQL线程从属的资源组,从而更加精准地管控MySQL。
MySQL WriteSet并行复制分析