中间件与数据库: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机制。
技术同学必会的MySQL设计规约,都是惨痛的教训
怎么才能很好的避免低级故障?以下规范在大型互联网公司经过了充分的验证,尤其适用于并发量大、数据量大的业务场景。
QQA: MySQL 竟然无法区分大小写?
MySQL 执行 select 'a' = 'A'; 得到的结果竟然是真(1)?同学,collation 了解一下。
究其原因,是因为默认的 Collation 设置为 utf8mb4_general_ci(不同机器/字符编码下不同),任何的字符串比较都会忽略大小写。
QA视角的MySQL探险之旅:穿越慢查询沼泽,揭示实战避坑指南
数据库是“按照数据结构来组织、存储和管理数据的仓库”,承接核心的业务数据,在业务中占有非常重要的地位。
MySQL网络写超时分析
某客户使用TDSQL MySQL8.0版本,在跑批场景下出现连接中断现象。业务反馈的错误信息如下:
ERROR c.a.d.p.DruidPooledPreparedStatement - getMaxFieldSize error
java.sql.SQLException: No operations allowed after statement closed.
...
客户跑批场景是每次从数据库流式获取 2000 条数据,完成相应业务逻辑后再继续获取下一批数据,每批数据之间的间隔约 30s。