中间件与数据库:MySQL

set names 都做了什么

最近有同事问,set names 时会同时设置了3个session变量 SET character_set_client = charset_name; SET character_set_results

MySQL高可用浅析

对于多数应用来说,MySQL都是作为最关键的数据存储中心的,所以,如何让MySQL提供HA服务,是我们不得不面对的一个问题。当master当机的时候,我们如何保证数据尽可能的...

通过协程实现mysql查询的异步化

最近学习了赵海平的演讲,了解到facebook的mysql查询可以进行异步化,从而提高性能。由于facebook实现的比较早,他们不得不对php进行hack才得以实现。现在的php5.5,已经无需hack就可以实现了。 对于一个web网站的性能来说,瓶颈多半是来自于&

InnoDB undo log 漫游

本文是对整个Undo生命周期过程的阐述,代码分析基于当前最新的MySQL5.7版本。本文也可以作为了解整个Undo模块的代码导读。由于涉及到的模块众多,因此部分细节并未深入。 前言 Undo log是InnoDB MVCC事务特性的重要组成部分。当我们对记录做了变更操作时就会产生undo记录,Undo记录默认被

Advanced MySQL Query Tuning

个性化设置 MySQL prompt 提示符

下面谈 4 种方法 ㈠ 在 Bash 层修改 MYSQL_PS1 变量 [root@localhost ~]# export MYSQL_PS1="(\u@\h) [\d]> " [root@localhost ~]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g.…

[MySQL优化案例]系列 — discuz!热帖翻页优化

MySQL:如何实现高性能高并发的计数器功能(如:网站点击数)

这篇文章讨论了在实现网站文章点击数时,如何设计数据表以减轻数据库压力。文章提到了两种方法,一种是将文章详细内容和计数器放在同一张表中,但会导致并发问题和长等待时间;另一种是将计数器放在单独的表中,每个文章的计数器有多行,每次随机更新其中一行。文章还给出了插入和获取文章访问量的示例代码。作者提醒在加快读的速度时需要权衡开发成本和维护成本,找到一个平衡点。

Specified key was too long; max key length is 1000 bytes in mysql 5.6

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协议分析

首页 - Wiki
Copyright © 2011-2025 iteam. Current version is 2.143.0. UTC+08:00, 2025-05-17 04:17
浙ICP备14020137号-1 $访客地图$