中间件与数据库:MySQL

MySQL 加锁处理分析

MySQL 二进制日志格式基础(一)

MySQL的二进制日志格式包含了magic number和event描述包。每个日志以magic number开头,用于判断是否为二进制日志。每个event包含类型、时间和MySQL版本信息。第一个event是format descriptor event,用于说明日志的格式。其余的event根据描述结构不同记录数据。最后一个event是日志切换事件,用于指定下个日志的文件名。每个event包含header和变更信息。该日志格式的详细描述可以帮助我们理解MySQL二进制日志的结构和内容。

mysql批量插入和ON DUPLICATE KEY UPDATE结合使用

使用tcpdump排查mysql数据库tps飙升的问题

上线后习惯性的观察数据库的变化。发现数据库的tps有很大的飙升。不过幸好在双十一的时候在数据库方面做了一些完善,虽然主库的tps有飙升,但是总体load还不是很高。但是问题既然出现了,还是要解决的。 排查过程 确定是insert

MySQL优化案例 — RAND()优化

MySQL中使用ORDER BY RAND()效率低下,会多次执行。文章通过对比不同SQL的执行计划和执行耗时,解释了这个问题。作者尝试了常量等值检索、改造成普通子查询模式以及改造成JOIN关联查询的方式。结果显示,这些方式的执行计划和执行耗时都不理想。因此,无论如何改造,使用RAND()函数乘以常量进行检索仍然效率较差。根据新的上下文,主要是通过对比不同的SQL执行计划和执行耗时,来说明使用ORDER BY RAND()效率低下的问题。作者尝试了常量等值检索、改造成普通子查询模式以及改造成JOIN关联查询的方式,但结果都不理想。无论如何改造,使用RAND()函数乘以常量进行检索仍然效率较差。此外,还提到了一种改造范围查找的方法,通过使用LIMIT 1来解决查询不到记录的问题。

使用MySQL自身复制来恢复binlog

这篇文章主要讨论了恢复二进制日志的方法。文章指出使用MySQL自身复制来恢复binlog比使用mysqlbinlog工具更好。具体的操作步骤有两种:将binlog作为relay log来执行或者从专门构建的binlog server上拉binlog。这些方法可以帮助用户在指定时间点进行数据恢复。另外,还需要注意在配置文件中加上skip-slave-start来避免不需要时slave线程自动执行,可以通过start slave until来控制slave执行的位点,使用relay-log.info或change master to来指定slave执行的起始位点。

MySQL协议分析

一个最不可思议的MySQL死锁分析

这篇文章主要是作者对MySQL/InnoDB加锁实现的深入分析和经验分享。作者通过实验和源码分析,发现了一个违反自己锁知识体系的死锁场景。文章详细介绍了死锁的具体情况,包括死锁日志和执行计划。根据死锁日志的分析,作者确认了死锁的存在,并分析了导致死锁产生的原因。文章还提到了关于删除操作的加锁逻辑,以及事务间的循环等待导致死锁的产生。根据事务的权重,死锁中的事务会被选择为牺牲者并回滚。

MySql性能监控

Express rendered markdown. Contribute to blueshen/markdown-blog development by creating an account on GitHub.

MySQL索引背后的数据结构及算法原理

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.3. UTC+08:00, 2024-11-25 10:03
浙ICP备14020137号-1 $Map of visitor$