中间件与数据库:MySQL

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索引背后的数据结构及算法原理

首页 - Wiki
Copyright © 2011-2025 iteam. Current version is 2.144.0. UTC+08:00, 2025-07-08 15:41
浙ICP备14020137号-1 $访客地图$