0%

前言

这是一篇旧文,之前做项目时遇到的问题,通过查阅相关资料和代码整理而来。本文不会介绍GTID的用法及配置,相关资料网上有一大堆,可自行查阅,主要是为了说明MySQL的GTID在5.6和5.7两个大版本之间的差异,这方面的介绍除了官方文档中有一些介绍外,其他资料到还不多。希望可以让你对GTID的了解更深入一些。

阅读全文 »

一致性视图的创建时间

  • start transaction 并不是一个事务的起点,在执行到它之后的第一个操作InnoDB表的语句,事务才真正启动。如果要立即启动一个事务,可以使用start transaction with consistent shapshot
  • 在使用start transaction 时,一致性视图是在执行第一个快照读语句是创建的;
  • 使用start transaction with consistent shapshot 时,一致性视图是在该语句执行时就创建了;
阅读全文 »

知识点

  • 行锁是在引擎层实现的,不是所有的引擎都实现了行锁,比如MyISAM引擎就不支持行锁;
  • 行锁相比表锁,锁粒度更小,所以并发性能更好,所以,对应对并发有要求的业务,推荐不要使用MyISAM引擎;
  • 在InnoDB事务中,行锁是需要时才加上的,但并不是不需要了就立刻释放,只有在事务结束的时候才释放掉,这个过程叫两阶段锁协议;
阅读全文 »

知识点

  • 平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和CPU使用率并没有直接关系;
  • 可运行状态的进程是指正在使用CPU和正在等待CPU的进程,即使用PS命令看到的R状态的进程;
阅读全文 »

前言

最近一直在使用NFS做一些开发和测试,功能开发完毕后,需要对NFS的可用性做一些监控,没有使用crontab+shell脚本的方式,总觉得这么做的都是临时方案,不成体系,所以就基于现有的框架写了一个轻量级的服务。具体的监控事项包括NFS的挂载和卸载、基本的读写、剩余空间等,发现异常后给出告警提示。基本的功能比较简单,但是在开发的时候却遇到一个问题:
在C++代码中,如何使用系统调用mount()来挂载NFS?

阅读全文 »

问题描述及定位

上周做测试时遇到一个比较奇怪的问题,也不算是bug,只能说是c语言的缺陷。具体是这样的,我们自己封装了一个字符串的append函数,参数是可变参数列表,最后一个参数必须是NULL结尾,原型如下:

阅读全文 »

前言

同上篇一样,本文翻译自《Redo Logging in InnoDB》,原文属于InnoDB官方blog。我认为学习mysql一个比较好的方式应该是文档加源码,翻译此文的目的也是为了学习,有翻译错误的地方,烦请指出。

阅读全文 »

前言

本文翻译自《Data Organization in InnoDB》,原文属于InnoDB官方blog,后来Oracle修改了官方blog的地址,没有找到原文链接,如果哪位找到原文链接,烦请告知。另本人水平有限,如发现翻译错误或有问题的地方,也欢迎指出。

阅读全文 »