数据库内核月报 - 2015 / 10-MySQL · 捉虫动态 · start slave crash 诊断分析
问题现象 研发同学执行下列语句序列 stop slave; set global slave_parallel_workers=0; start slave; 后程序 hang 住,不一会返回了2013 错误,即服务器连接异常中断,检查 mysqld error log, 发现在mysqld在将并行复制转化为串行复制的过程中异常 crash,其中错误信息为: [ERROR] Error rea.....
数据库内核月报 - 2015 / 10-MySQL · 特性分析 · 跟踪Metadata lock
背景 MySQL 从5.5.3版本,对Metadata lock进行了调整,主要是MDL锁持有的周期从语句变成了事务, 其原因主要是解决两个问题: 问题1: 破坏事务隔离级别 在repeatable read的隔离级别下,多次的select语句执行过程中,会因为其它session的DDL语句,而导致select语句执行的结果不相同,破坏了RR的隔离级别。 问题2: 破坏binlog的顺序 在对表....
数据库内核月报 - 2015 / 09-MySQL · 特性分析 · 5.6 并行复制恢复实现
在上一期的月报中,我们分析了 MySQL 5.6 并行复制是如何实现的,介绍了主要数据结构、Coordinator 线程的分发、Worker 线程的执行和checkpoint过程,读者朋友可以回顾下,本篇将对恢复逻辑进行介绍。 在并行复制之前,SQL线程的恢复很简单,从 relay-log.info 中取得上次执行到的位点,然后从这个位点开始执行即可。有了并行复制之后,情况就变得稍微复杂了些,w....
数据库内核月报 - 2015 / 09-PgSQL · 答疑解惑 · 诡异的函数返回值
背景 修改PG源码时,在elog.c文件中准备调用timestamp.c中的TimestampTz GetCurrentTimestamp(void),以获取当前时间,TimestampTz是个int64类型,但是返回值类型不是期望的(是个int32值),但是在另外一个文件postgres.c调用返回的是正常的,如下: elog.c: GetCurrentTimestamp() = 389137....
数据库内核月报 - 2015 / 09-PgSQL · 特性分析 · clog异步提交一致性、原子操作与fsync
本文分为三节,分别介绍clog的fsync频率,原子操作,与异步提交一致性。 PostgreSQL pg_clog fsync 频率分析 分析一下pg_clog是在什么时候需要调用fsync的? 首先引用wiki里的一段pg_clog的介绍 Some details here are in src/backend/access/transam/README: 1. “pg_clog recor.....
数据库内核月报 - 2015 / 09-MySQL · 引擎特性 · InnoDB Adaptive hash index介绍
前言 我们知道InnoDB的索引组织结构为Btree。通常情况下,我们需要根据查询条件,从根节点开始寻路到叶子节点,找到满足条件的记录。为了减少寻路开销,InnoDB本身做了几点优化。 首先,对于连续记录扫描,InnoDB在满足比较严格的条件时采用row cache的方式连续读取8条记录(并将记录格式转换成MySQL Format),存储在线程私有的row_prebuilt_t::fetch_c....
数据库内核月报 - 2015 / 08-MySQL · 功能分析 · MySQL表定义缓存
表定义 MySQL的表包含表名,表空间、索引、列、约束等信息,这些表的元数据我们暂且称为表定义信息。 对于InnoDB来说,MySQL在server层和engine层都有表定义信息。server层的表定义记录在frm文件中,而InnoDB层的表定义信息存储在InnoDB系统表中。例如: InnoDB_SYS_DATAFILES InnoDB_SYS_TABLESTATS Inno...
数据库内核月报 - 2015 / 08-MySQL · 功能分析 · 5.6 并行复制实现分析
背景 我们知道MySQL的主备同步是通过binlog在备库重放进行的,IO线程把主库binlog拉过去存入relaylog,然后SQL线程重放 relaylog 中的event,然而这种模式有一个问题就是SQL线程只有一个,在主库压力大的时候,备库单个SQL线程是跑不过主库的多个用户线程的,这样备库延迟是不可避免的。为了解决这种n对1造成的备库延迟问题,5.6 引入了并行复制机制,即SQL线程在....
数据库内核月报 - 2015 / 08-MySQL · 答疑解惑 · open file limits
背景 最近在Aliyun RDS的环境上,有些用户碰到了打开文件句柄数过多的错误,查看用户实例的打开句柄个数,确实超过了系统设置的值,一旦出现了这种错误,将会带来连锁的各种错误(取决于当时正在操作什么类型的文件,以及什么操作)。下面,我们就一起来看一下MySQL在操作过程中,牵涉到文件打开和关闭的关键点,以及你一直以来可能存在的认识误区。 参数和名词 关联参数 我们先列一下几个关键的参数,不了解....
数据库内核月报 - 2015 / 07-MySQL · TokuDB · TokuDB Checkpoint机制
导读:TokuDB在“云端”的优势 为了降低用户数据存储成本,2015年4月份,云数据库(Aliyun RDS)增加了TokuDB引擎支持(MySQL5.6版本),也是第一家支持TokuDB的RDS。 我们知道,当一个实例的数据空间超过TB级别时,空间存储和运维成本都是非常高的,尤其是做实例迁移和备份,整个过程耗时会非常长。 我们对线上一些大的InnoDB实例(TB级)平滑迁移到TokuDB后,....
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。