中间件与数据库:MySQL
Sourcerer: MySQL Ingestion at Scale
Architecture and Challenges faced at scale.
mysql锁机制的再研究
在分布式系统中,分布式锁已经的使用越发常见,我们系统由于较为老旧,使用数据库实现分布式锁,方案为:使用lock_key, lock_biz组成唯一索引,利用数据库对一条记录insert和delete操作的事务性来实现不可重入的db分布式锁。
前一段时间,发现系统分布式锁出现死锁告警,在处理完问题后,重新去看现场日志,发现数据库出现了死锁,在阿里云性能诊断系统中的锁分析里找出死锁日志,但奇怪的是不同的唯一索引值出现了死锁,如下图所示。抱着不懂就研究的心态,重新去研究了mysql Inndb的锁机制(ps:公司mysql 默认是RC隔离级别)。
MySQL 分布式事务的“路”与“坑”
什么是分布式事务?MySQL分布式事务应当如用使用?是否有什么坑需要注意?它的读写一致性是如何保证的?点我,听我一一道来!
MySQL中的IO问题分析与优化
在业务迭代中,随着数据量的上升,会出现慢SQL情况,但是当我们去分析单条SQL的时候,发现其执行速度并没有那么慢,原因是什么呢,那么就可能是RDS服务器IO产生了瓶颈。
关于 MySQL 自增 ID 的事儿
本文以 Innodb 引擎为主进行介绍,使用自增主键的好处有很多,如:索引空间占比小、范围查询与排序都友好、避免像 UUID 这样随机字符串带来的页分裂问题等...
MySQL 常用备份工具流程解析
通过剖析备份流程,带你了解备份工具的加锁类型和时机。
MySQL Hash Join实现分析
连接操作是一种数据库中最基本的操作,连接算法的执行效率直接影响到整个数据库的效率、吞吐和资源。通常商业数据库系统一般有三种主流的连接实现:Nested Loop Join、Hash Join和Sort Merge Join。本文概述目前主流的Hash Join实现方式,以及分析MySQL中Hash Join的实现方式。
inno_space: MySQL 数据修复访问工具
inno_space 是一个可以直接访问InnoDB 内部文件的命令行工具,可以打印出文件的内部结构。
利用binlog进行MySQL数据闪回
从MySQL binlog解析出你要的SQL。根据不同选项,你可以得到原始SQL、回滚SQL、去除主键的INSERT SQL等。DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚。传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog来恢复数据。此法费时费力,甚至需要停机维护,并不适合快速回滚。也有团队利用LVM快照来缩短恢复时间,但快照的缺点是会影响mysql的性能。
Upgrading MySQL at Shopify
Learn how the Database Platform team performed the most recent MySQL upgrade at Shopify and how this changed our upgrade guidelines moving forward.
MySQL 索引长度限制的案例
我们知道,MySQL 和 Oracle 在索引上最大的一个区别,就是索引存在长度的限制。如果是超长键值,可以支持创建前缀的索引,顾名思义,取这个字段的前多少个字符/字节作为索引的键值。
之所以可以定义一个字段前缀作为键值,存储效率是考虑的一个因素,如果列名的前10个字符通常都是不同的,检索这10个字符创建的索引应该会比检索整个列作为索引的效率更高,使用列前缀作为索引会让索引树更小,不仅节省空间,还可能提高插入操作的速度。
MySQL表联接原理分析
用过MySQL的同学肯定都知道表联接,关键字即为 join ,使用的场景就是“当只查询一个表的信息不能满足我们需求”的时候,就需要用到两个甚至多个表联接查询。那么该如何降低查询成本呢?
适当的使用 MySQL 原生表分区
MySQL 数据库现在主要用的引擎是 InnoDB ,InnoDB 没有类似于 MERGE 引擎这样的原生拆表方案,不过有原生分区表,以水平方式拆分记录集,对应用端透明。
分区表的存在为超大表的检索请求、日常管理提供了一种额外的选择途径。分区表使用得当,对数据库性能会有大幅提升。
Debugging Systems in the Cloud: MySQL, Kubernetes, and Cgroups
An overview of how we investigated and solved the issue of some Kubernetes Pods running MySQL starting up and shutting down slower than other similar Pods with the same data set.
MySQL 突如其来的主从复制延迟
大佬前几天来自生产上的一个问题,又涨知识了,今天拿来分享给大家。
谁动了我的数据?去哪儿网MySQL嗅探程序
本文主要介绍去哪儿网DBA团队如何通过抓包、解析MySQL协议,获取数据库全量访问日志,解决了“谁动了我的数据”问题。