中间件与数据库:MySQL
MySQL 索引的底层逻辑
本文以 MySQL 数据库为研究对象,讨论与数据库索引相关的一些话题。
详解 MySQL 三表 JOIN
三表 JOIN 的执行流程和效率到底跟两表 JOIN 有什么区别?
MySQL Binlog 入门
binlog 是一个二进制格式的文件,用于记录用户对数据库更新的 SQL 语句信息,例如更改数据库表和更改内容的 SQL 语句都会记录到 binlog 里,但是对库表等内容的查询不会记录。
MySQL死锁浅析
数据库锁设计的初衷是处理并发问题。作为共享资源,当出现并发访问的时候,数据库需要合理地控制共享资源的访问。锁就是用来实现这些访问规则的重要数据结构。然而,不合理地使用锁也带来了其他问题。
记一次线上问题引发的对 Mysql 锁机制分析
本文以一个线上问题为背景,对 Mysql 中的各种锁机制进行了详细的总结,分析了各个锁的加锁时机和具体使用场景,其中特别要注意间隙锁的使用,因间隙锁和间隙锁之间不互斥,当多个事务之间并发执行时很容易形成死锁。
浅谈MySQL分页查询的工作原理
MySQL 的分页查询在我们的开发过程中还是很常见的,比如一些后台管理系统,我们一般会有查询订单列表页、商品列表页等。
浅析MySQL之MVCC机制
MVCC 在 MySQL InnoDB 中的实现主要是为了提高数据库并发性能,用更好的方式去处理读写冲突,做到即使有读写冲突时,也能做到不加锁,做到非阻塞并发读。
研发日常踩坑-Mysql分页数据重复
MySQL 分页查询接口出现重复数据?你日常有没有遇到这样的坑?本文详细讲解了order by和limit混用的时候,为什么出现了排序的混乱情况。
浅谈Mysql读写分离的坑以及应对的方案
为什么我们要进行读写分离?个人觉得还是业务发展到一定的规模,驱动技术架构的改革,读写分离可以减轻单台服务器的压力,将读请求和写请求分流到不同的服务器,分摊单台服务的负载,提高可用性,提高读请求的性能。
高性能MySQL实战(三):性能优化
这篇主要介绍对慢 SQL 优化的一些手段,而在讲解具体的优化措施之前,我想先对 EXPLAIN 进行介绍,它是我们在分析查询时必要的操作,理解了它输出结果的内容更有利于我们优化 SQL。为了方便大家的阅读,在下文中规定类似 key1 的表示二级索引,key_part1 表示联合索引的第一部分,unique_key1 则表示唯一二级索引,primary_key 表示主键索引。
MySQL到TiDB:Hive Metastore横向扩展之路
vivo在大数据元数据服务横向扩展道路上的探索历程。
高性能MySQL实战(二):索引
我们在上篇 高性能MySQL实战(一):表结构 中已经建立好了表结构,这篇我们则是针对已有的表结构和搜索条件为表创建索引。
MySQL事务死锁问题排查
一个简单的MySQL事务竟然暗藏死锁风险,通过深入分析MySQL锁机制,逐步解开死锁背后的神秘面纱。
我跟面试官说MySQL单表数据量不要超过两千万,面试官不信
作为一个合格的 DBA,在遇到线上单表数据量超过千万级别的时候,往往会建议用户通过分表来缩减单表数据量,当用户问为什么单表数据量不能超过千万时,DBA 往往会说:单表数据量超过千万,会影响查询性能。知其然而不知所以然,学习技术不能停留在表面,而是要进一步去深入挖掘其中的原理,这样才能不断进步和成长。回到这个问题:为什么单表数据量不能超过两千万,其中的依据是什么?
高性能MySQL实战(一):表结构
最近因需求改动新增了一些数据库表,但是在定义表结构时,具体列属性的选择有些不知其所以然,索引的添加也有遗漏和不规范的地方,所以我打算为创建一个高性能表的过程以实战的形式写一个专题,以此来学习和巩固这些知识。
一文了解MySQL中的多版本并发控制
希望借助今天这篇文章,能用大白话说清楚这个相对比较底层和复杂的MVCC机制。