文章 2016-05-23 来自:开发者社区

数据库内核月报 - 2015 / 09-MySQL · 备库优化 · relay fetch 备库优化

业务背景 MySQL 主备通过 binlog 实现数据同步的功能,主库将生成的 binlog 通过 binlog send 线程发送到备库,备库通过应用这些 binlog 来更新数据,实现主备数据一致,其应用 binlog 的读取操作与更新操作的堆栈分别如下。 读取操作: #0 row_search_for_mysql #1 0x0000000000c200c2 in ha_innobase...

文章 2016-05-23 来自:开发者社区

数据库内核月报 - 2015 / 09-MySQL · 特性分析 · 5.6 并行复制恢复实现

在上一期的月报中,我们分析了 MySQL 5.6 并行复制是如何实现的,介绍了主要数据结构、Coordinator 线程的分发、Worker 线程的执行和checkpoint过程,读者朋友可以回顾下,本篇将对恢复逻辑进行介绍。 在并行复制之前,SQL线程的恢复很简单,从 relay-log.info 中取得上次执行到的位点,然后从这个位点开始执行即可。有了并行复制之后,情况就变得稍微复杂了些,w....

数据库内核月报 - 2015 / 09-MySQL · 特性分析 · 5.6 并行复制恢复实现
文章 2016-05-23 来自:开发者社区

数据库内核月报 - 2015 / 09-PgSQL · 特性分析 · 谈谈checkpoint的调度

在PG的众多参数中,参数checkpoint相关的几个参数颇为神秘。这些参数与checkpoint的调度有关,对系统的稳定性还是比较重要的,下面我们为大家解析一下,这要先从PG的数据同步机制谈起。 PG的数据同步机制 众所周知,数据库的后台进程在执行用户事务时,发生的数据更改是先写入缓冲池中,对应PG就是shared buffers。PG的缓冲池一般设置为总内存的1/4左右,缓冲池里面的这些数据....

数据库内核月报 - 2015 / 09-PgSQL · 特性分析 · 谈谈checkpoint的调度
文章 2016-05-23 来自:开发者社区

数据库内核月报 - 2015 / 09-PgSQL · 答疑解惑 · 诡异的函数返回值

背景 修改PG源码时,在elog.c文件中准备调用timestamp.c中的TimestampTz GetCurrentTimestamp(void),以获取当前时间,TimestampTz是个int64类型,但是返回值类型不是期望的(是个int32值),但是在另外一个文件postgres.c调用返回的是正常的,如下: elog.c: GetCurrentTimestamp() = 389137....

文章 2016-05-23 来自:开发者社区

数据库内核月报 - 2015 / 09-MySQL · 捉虫动态 · BUG 几例

随着RDS MySQL用户越来越多,隐藏很久很深的bug也逐渐被挖出来了,下面分享一下最近遇到的三例bug,都是官方版本存在的。 trigger/function中drop temporary table导致slave中断 只有5.6受到影响。 复现步骤 打开gtid_mode=ON create function `test_func_1` () returns varchar(30) ch.....

文章 2016-05-23 来自:开发者社区

数据库内核月报 - 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.....

文章 2016-05-23 来自:开发者社区

数据库内核月报 - 2015 / 09-MySQL · 引擎特性 · InnoDB Adaptive hash index介绍

前言 我们知道InnoDB的索引组织结构为Btree。通常情况下,我们需要根据查询条件,从根节点开始寻路到叶子节点,找到满足条件的记录。为了减少寻路开销,InnoDB本身做了几点优化。 首先,对于连续记录扫描,InnoDB在满足比较严格的条件时采用row cache的方式连续读取8条记录(并将记录格式转换成MySQL Format),存储在线程私有的row_prebuilt_t::fetch_c....

文章 2016-05-23 来自:开发者社区

数据库内核月报 - 2015 / 08-MySQL · 功能分析 · MySQL表定义缓存

表定义 MySQL的表包含表名,表空间、索引、列、约束等信息,这些表的元数据我们暂且称为表定义信息。 对于InnoDB来说,MySQL在server层和engine层都有表定义信息。server层的表定义记录在frm文件中,而InnoDB层的表定义信息存储在InnoDB系统表中。例如: InnoDB_SYS_DATAFILES InnoDB_SYS_TABLESTATS Inno...

文章 2016-05-23 来自:开发者社区

数据库内核月报 - 2015 / 08-MySQL · 功能分析 · 5.6 并行复制实现分析

背景 我们知道MySQL的主备同步是通过binlog在备库重放进行的,IO线程把主库binlog拉过去存入relaylog,然后SQL线程重放 relaylog 中的event,然而这种模式有一个问题就是SQL线程只有一个,在主库压力大的时候,备库单个SQL线程是跑不过主库的多个用户线程的,这样备库延迟是不可避免的。为了解决这种n对1造成的备库延迟问题,5.6 引入了并行复制机制,即SQL线程在....

数据库内核月报 - 2015 / 08-MySQL · 功能分析 · 5.6 并行复制实现分析
文章 2016-05-23 来自:开发者社区

数据库内核月报 - 2015 / 08-MySQL · TokuDB · 疯狂的 filenum++

问题描述 收到一枚RDS TokuDB实例crash导致HA切换的报警,上去一看错误如下: tokudb/ft-index/ft/cachetable/cachetable.cc toku_cachetable_openfd_with_filenum: Assertion `filenum.fileid != FILENUM_NONE.fileid' failed /bin/mysqld(_Z1....

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。