自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 深入理解 MySQL 8.0 慢日志:原理、使用与案例分析

在 MySQL 数据库管理中,慢查询日志(Slow Query Log)是一个至关重要的工具,它能够帮助我们识别执行时间较长的 SQL 查询,从而为性能优化提供有力支持。

2025-06-24 22:50:58 808

原创 MySQL Binlog 深度解析:原理、应用与最佳实践

MySQL的二进制日志(binlog)是数据库架构中至关重要的组件,它记录了所有更改数据的SQL语句或数据本身,是实现数据复制、恢复和审计的核心机制。本文将全面解析MySQL 8.0中的binlog机制。Master-Slave架构中,Master将binlog发送给Slave,Slave重放日志实现数据同步结合全量备份 + binlog重放,可恢复到任意时间点通过解析binlog追踪数据库变更历史。

2025-06-24 16:58:02 630

原创 MySQL 查询缓存技术深度解析

MySQL 查询缓存的核心思想是将查询语句和其对应的查询结果存储在内存中。当一个查询请求到达数据库时,查询缓存模块会首先检查该查询语句是否已经存在于缓存中。如果存在,并且缓存的结果仍然有效,那么数据库将直接返回缓存的查询结果,而无需执行实际的查询操作。这种机制可以显著减少数据库的计算和 I/O 负载,提高查询性能。MySQL 查询缓存技术是一种有效的查询性能优化手段,通过缓存查询结果,可以显著减少数据库的负载和查询时间。

2025-02-17 15:08:36 973

原创 揭秘MySQL索引下推(ICP)的底层原理与高并发场景性能调优

索引下推作为MySQL查询优化的利器,需要DBA深入理解其工作原理,并结合业务特点设计合适的索引。建议在压测环境中通过验证执行计划,同时监控系列状态变量。

2025-02-17 15:05:43 831

原创 MySQL 中可以通过添加主键来节省磁盘空间吗?(译文)

因此,即使有问题的表的现有列都不是唯一的,最好还是添加另一个唯一列作为主键。不过,这种要求是通过两种复制方法施加的:组复制和 Percona XtraDB 集群 (PXC),默认情况下不允许使用没有主键的表。对于缺少主键的表,有许多众所周知的负面性能影响,其中最痛苦的是糟糕的复制速度。但是,如果由于遗留应用程序问题而无法添加新的 PK 列,则仍应使用不可见的主键来强制实施主键。这样,您将获得性能优势,同时,更改对应用程序是透明的。无论如何,拥有一个不可见的 PK 应该是遗留应用程序的双赢解决方案。

2025-02-10 14:09:40 459

原创 MySQL 数据库服务器的优化步骤

如果缓存策略没有解决,或者不是周期性波动的原因,就需要进一步分析查询延迟和卡顿的原因,接下来进入S2这一步,我们需要开启慢查询。如果A2和A3都不能解决问题,我们需要考虑数据库自身的SQL查询性能是否已经达到了瓶颈,如果确认没有达到性能瓶颈,就需要重新检查,重复以上的步骤。还是查询关联的数据表过多?我们可以通过观察了解数据库整体的运行状态,通过性能分析工具可以让我们了解执行慢的SQL都有哪些,查看具体的SQl执行计划,甚至是SQL执行中的每一步成本计划,这样才能定位问题所在,找到了问题,再采取相应的行动。

2025-02-10 10:31:49 377

原创 MySQL int(10) 与 int(11) 的区别

不知道大家是不是和我一样,每次给有个列添加int(11)的时候都会想,会不会是int(10),偶尔也会发神经的想,如果int(32)这样的可否?这个纠结,恐怕我写完读完这篇文章时还会继续索性,我们就先来解决这个问题吧。int 类型的底层存储采用的是 4 字节,也就是 32 位,这样能够存储的实际最大值为 4 294 967 296,大家数数一下这个数字,总共有多少位?对的,没错,就是 10 位,所以,感觉 int(11) 这个应该是错误的?实际上,真的错了吗?

2025-02-08 10:17:50 775

原创 MySQL InnoDB锁机制深度解析及高并发场景调优实践

锁优化是DBA的必修课,需要结合具体业务场景进行定制化设计。建议定期使用分析锁状态,同时配合performance_schema进行深度监控。

2025-02-08 10:03:20 608

原创 聚焦 MySQL 优化器:探究 Adaptive Hash Index 与 Query Cache 那些事儿

Adaptive Hash Index 和 Query Cache 是 MySQL 优化器中的两个重要功能,它们各自有着独特的适用场景和优势。我们需要根据具体的业务场景和查询模式,合理地启用和配置这些功能,以达到最佳的性能优化效果。同时,我们也需要关注它们的局限性,避免在不适当的场景下使用,以免导致性能下降。分析查询模式,确定等值查询和静态数据查询的频率。启用 Adaptive Hash Index 和/或 Query Cache,并根据实际情况调整相关配置参数。

2025-02-07 14:37:34 982

原创 计算 MySQL 表行的成本是多少?

那么我们如何检查在 count 查询执行期间实际读取了什么索引,以及必须获取多少数据呢?根据上述结果,我们可以看到加载了多少个索引页面来执行计数,其中小型二级索引胜出,因为它不包含数据。在这种情况下,它并没有直接转化为执行时间,具体原因等我明白了再给大家开篇贴来说。除了观察执行时间(与具有主键的表相当)之外,很难判断,因为状态处理程序既不会递增,也不会从慢速日志中。在另一个表中,相同的查询成本是否会有所不同,这次没有定义任何索引。第一个惊喜是,在上述执行后,慢日志没有报告任何。

2025-02-07 10:22:20 501

原创 一文读懂MySQL数据类型

选对数据类型=性能UP!精度UP!维护UP!别再随意瞎选,浪费资源行动起来!看完这篇文章,赶紧去检查你的表结构。用TINYINT存年龄DECIMAL存金额VARCHAR存昵称。

2025-01-16 16:05:18 544

原创 MySQL查询优化

查询优化、索引优化、库表结构优化需要齐头并进,一个不落,从查询设计的一些基本原则开始——这也是在发现查询效率不高的时候首先需要考虑的因素。然后会介绍一些更深的查询优化的技巧,并会介绍一些MySQL优化器内部的机制。我们将展示MySQL是如何执行查询的,你也将学会如何去改变一个查询的执行计划。最后,我们要看一下MySQL优化器在哪些方面做得还不够,并探索查询优化的模式,以帮助MySQL更有效地执行查询。

2025-01-16 16:03:42 767

原创 gdb在线修改mysql版本号

修改任何信息前,都要仔细确认和验证. 最好是备份. 而不能备份的时候,最好是多个人复核一下再操作.(比如本教程这种修改内存的操作,没法备份,只能复核的时候仔细一点了.)这个(server_version)看起来就是mysql的版本值了, 然后我们只需要修改该值即可,比如我们可以将8.0.28修改为9.0.28 只需要执行如下命令即可。gdb正好就能做到修改内存中的参数变量. 也就是我们只需要找到对应的变量, 然后使用gdb来修改内存中的值即可。然后我们搜索version关键字就能找到如下信息。

2025-01-15 14:22:49 349

原创 MySQL DBA 日常运维常用命令总结

以上就是常用的,欢迎大家补充!

2025-01-15 14:09:15 566

原创 MySQL从库 Last_SQL_Errno: 1197 问题处理过程

记录一个遇到过的错误,今天整理一下。

2025-01-14 16:30:04 439

原创 MySQL主从部署(保姆版)

一般数据库都是读取压力大于写数据压力,主从复制即为了实现数据库的负载均衡和读写分离。通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,主服务器只负责写,而从服务器只负责读。如生产环境中,使用redis数据库作为缓存数据库,用户访问业务数据时,先从缓存数据库查询,如果缓存数据库没有,再从业务数据库读取。架构图如下。

2025-01-14 15:51:11 7597

原创 何时需要手动刷新授权表

是 flush 语句集合里的一条子项,执行它的作用是来同步 MySQL 磁盘和内存中的授权数据,让其保持一致。说详细点就是全量读取授权表的磁盘数据并且完全覆盖内存中的授权数据,又或者反着同步磁盘上的授权数据。所以只要按照 MySQL 内置的用户管理语句来操作用户授权信息,则不需要手动执行 flush privileges 语句,反之则需要。手动执行 flush privileges 语句:再次查看用户 ytt_u1 的权限数据,数据已经同步为最新。查看用户 ytt_u1 的权限数据:数据也是及时同步的。

2025-01-13 17:01:06 455

原创 恢复失败的 pt-online-schema-change

是 Percona Toolkit 中的一个工具,其主要作用是在不阻塞数据库写入操作的情况下在线修改 MySQL 表结构。后,它将创建包含作业详细信息的记录。如果作业失败,您可以在工具输出或历史记录表中轻松找到其唯一标识符,然后重新启动它。接下来,它会创建触发器来捕获对原表的任何更改,并将这些更改应用到新表上。就会重命名原表和新表(这个过程需要短暂的元数据锁),然后用新表替换原表,最后删除旧表和触发器。该工具将检查之前创建的表副本及其触发器是否仍然存在,并将从之前失败的 chunk 开始作业。

2025-01-12 15:31:29 1042

原创 学习 MySQL 必备的经典示例数据库

SakilaEmployeesworldworld_xmenagerie这些数据库既可以用于日常学习和测试,也可以作为我们设计时数据库的一个参考。本文就来介绍一下这些数据库的模式结构以及如何下载和安装。

2025-01-12 15:09:10 1662

原创 MySQL主从:如何处理“Got Fatal Error 1236”或 MY-013114 错误(percona译文)

但是,有关错误原因的更多详细信息。该消息解释说,源不再具有所需的二进制日志,并且 GTID 详细信息提供了更精确的见解:“缺少的事务是’00022739-2222-2222-2222-22222222222222222222222222222’。进一步挖掘,我们可以看到源在 gtid_executed 中有两个 GTID 集,而副本只有一个:— 来源— 副本此外,此额外集将标记为已清除。因此,无法将其提供给副本。我们称之为错误交易。

2025-01-10 16:37:56 1454

原创 sysbench测压MySQL数据库

书接上回,接下来为大家带来一篇详细的MySQL压测,如果没有安装sysbench的话请参考上文,接下来直接开干!

2025-01-09 16:30:29 669

原创 sysbench安装以及使用(超详细)

接着在/etc/ld.so.cnf中加入/usr/loca/lib这一行。问题原因:sysbench无法找到mysql的库文件。对于磁盘I/O测试,首先需要创建一个测试文件。首先要确保你的系统已经安装并配置好MySQL数据库。执行ldconfig -v更新下配置就可以了。基本的CPU性能测试命令格式为。

2025-01-09 15:47:58 1157

原创 Delete 表数据后,磁盘空间并未释放,为什么?

通用删除整页数据也将记录标记删除,数据就复用用该位置,与删除默写记录不同的是,删除整页记录,当后来插入的数据不在原来的范围时,都可以复用位置,而如果只是删除默写记录,是需要插入数据符合删除记录位置的时候才能复用。MySQL底层是以数据页为单位来存储和读取数据的,每次向磁盘读一次数据就是读一个数据页,每访问一个数据页就对应一次IO操作,磁盘IO访问速度是很慢的。MySQL数据库中的表,一般为表结构和表数据。因此,无论是数据行的删除还是数据页的删除,都是将其标记为删除的状态,用于复用,所以文件并不会减小。

2025-01-08 16:25:33 1369

原创 Zabbix安装,配置模板监控主机(在线安装和离线安装)

在被控端创建key。被控端被监控的内容叫作key,可以理解为它就是一个变量名,具体的名字自己决定。在web页面中创建监控项。监控项对应key值。

2025-01-08 15:43:57 2001

原创 一文搞懂MySQL InnoDB工作原理

多个数据页之间通过页号构成了双向链表。而每一个数据页的行数据之间,又通过下一条记录的位置构成了单项链表。

2025-01-07 10:42:57 1235

原创 MySQL 规范(最详细,最完整,适合公司用)

没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用Innodb存储引擎(mysql5.5之前默认使用Myisam,5.6以后默认的为Innodb)Innodb 支持事务,支持行级锁,更好的恢复性,高并发下性能更好兼容性更好,统一字符集可以避免由于字符集转换产生的乱码,不同的字符集进行比较前需要进行转换会造成索引失效使用comment从句添加表和列的备注 从一开始就进行数据字典的维护500万并不是MySQL数据库的限制,过大会造成修改表结构,备份,恢复都会有很大的问

2025-01-06 17:43:51 1268

原创 常见的 MySQL 性能问题

MySQL 数据库中最常见的性能问题之一是查询执行速度慢。缓慢的查询会增加等待时间和阻碍应用程序响应能力,从而显著影响用户体验。这些缓慢的查询可能由各种因素引起,例如缺少适当的索引、设计不佳的数据库架构、查询逻辑本身效率低下,甚至硬件资源不足。:在 MySQL 数据库中,事务会获取数据资源(表或行)的锁,以确保更新期间的数据一致性。当多个事务尝试同时获取同一资源上的锁时,会出现锁争用,导致它们等待直到锁被释放。这种等待可能会导致查询处理出现严重延迟,并降低整体数据库并发性。

2025-01-04 15:46:23 1262

原创 10条避免故障的法则

故障是运维人员永远的痛。相信每一个运维人员的KPI中都有一项:可用性。可用性高就是不出故障,各个公司对可用性和故障评级的标准都不相同,但是避免故障的方法却是殊途同归。我们怎么避免故障,简单列举了以下几条,与大家共勉!

2025-01-04 15:44:59 672

原创 MySQL 快速创造实验数据

我已经有表结构,想造一些实验数据。除了用存储过程和自己写程序,还有什么快速的方法?本期的主角是。

2025-01-03 15:58:36 404

原创 一文搞定:MySQL索引,如何创建高性能索引

索引基本分为B+树和全文索引,在MySQL中使用B+树较多,重点说说B+树索引在选索引和创建索引时,有三点要素单行访问很慢,特别是在机械存储中按顺序访问范围数据是很快的,有两个原因顺序I/O不需要多次磁盘寻找按顺序读取数据,不需要再额外的排序操作并且GROUP BY查询也无须再做排序和将行按组进行聚合计算了索引覆盖查询是很快的。如果一个索引包含了查询需要的所有列,那么存储引擎就不需要再回表查找行。

2025-01-03 14:31:11 883

原创 InnoDB引擎的内存结构

Buffer Pool:有缓存页(Page)和控制块组成1.缓存页:InnoDB引擎以页为单位,作为磁盘和内存的交互,一个页默认大小16KBBuffer Pool除了 索引页和数据页,还有undo页,插入缓存页,锁信息,自适应哈希索引页。2.控制块:存储着缓存页的表空间信息,数据页编号,与缓存页在Buffer Pool的地址信息3.默认大小是128M,以Page页为单位,Page页16KB,控制块一般为数据页的5%如何判断一个页是否在BP中存储?

2025-01-02 15:36:01 286

原创 MySQL日常巡检

巡检没啥特别的,就直奔主题把。df - h查看是否使用numa和swap,或是否频繁交互信息等。还有其他的监控项目,这里就不赘述了。

2024-12-31 15:53:53 1186

原创 MySQL DBA需要掌握的 7 个问题

数据量建议单实例T级或以内,不依赖存储过程、函数、触发器的传统oltp场景都适用,因为是一个相对轻量级的数据库灾备使用MySQL各类的高可用方案即可,比如主从、mha、mgr等。可以从以下几个方面去做:服务器配置操作系统配置及重要参数MySQL层配置及重要参数MySQL对象MySQL运行时的重要状态(日志、锁)

2024-12-31 15:20:06 1450

原创 记录一次MySQL 主从复制遇到 1590 报错

权限变更操作只处理了一部分并发生错误时,会导致 binlog 写一条 INCIDENT_EVENT,从而导致主从复制报错。在使用密码复杂度插件时,使用 CREATE 语句同时创建两个用户,会出现一个用户创建成功另外一个用户创建失败的情况。

2024-12-30 20:00:00 665

原创 MySQL:一文弄懂时区&time_zone

你还在被以下问题困扰吗:MySQL 的安装规范中应该设置什么时区?JAVA 应用读取到的时间和北京时间差了 14 个小时,为什么?怎么解决?已经运行一段时间的业务,修改 MySQL 的时区会影响已经存储的时间类型数据吗?迁移数据时会有导致时间类型数据时区错误的可能吗?看完这篇文章,你能解决上面所有的疑惑。

2024-12-30 15:24:25 3752

原创 MySQL主从架构数据同步方式有哪些?

MySQL主从同步类型主要有三种:异步复制同步复制半同步复制主库(Master)在执行完客户端提交的事务后,会立即将结果返回给客户端,并不关心从库(Slave)是否已经接收并处理。从库会异步地读取主库的二进制日志(binlog),并将其应用于自身的数据库中。MySQL的同步方式默认是异步复制异步复制的优点高性能:事务提交快速,主服务器无需等待从服务器响应。低延迟:客户端请求处理迅速,减少等待时间。异步复制的缺点数据一致性风险:主服务器故障可能导致从服务器数据不完整或不一致。故障恢复复杂:从服务器升级为主服务

2024-12-27 14:13:49 563

原创 怎么模仿磁盘 IO 慢的情况?并用于MySQL进行测试

通过mysqlslap –help可以获得可用的选项,这里列一些主要的参数,更详细的说明参考官方手册。

2024-12-26 17:05:47 1647

原创 MySQL 数据”丢失”事件之 binlog 解析应用

本文是对 binlog 解析的一个实践案例,binlog 记录的信息非常多,可以对 binlog 进行不同维度的解析,同时binlog 在线上环境的配置使用上也有着一些技巧,如本案例中,线上环境因为是规范化部署,参数设置合理,不会由于单个 binlog 文件过大导致 binlog 解析时间过长,以及如参数的开启,使得在 row 模式下也可以明确记录下具体的 SQL语句。

2024-12-25 16:31:58 1267

原创 MySQL中Performance Schema库的详解(下)

表包含关于当前由不同线程设置的锁的信息,以及处于等待状态的锁请求信息。除了特定错误信息,performance_schema还提供摘要表,可以按用户、主机、账户、线程和错误号聚合错误信息。Performance Schema中的statement类型的插桩对于理解工作负载是受读还是受写限制非常有用。SELECT查询的数量大于任何其他查询的数量。中的行是按照当前分配的内存降序排序的,所以很容易就能找到哪个线程占用了大部分内存。表包含关于当前由不同线程设置的锁的信息,的列,标识了引发错误的线程,表。

2024-12-25 14:57:59 735

原创 MySQL中Performance Schema库的详解(上)

将通过一些示例来演示如何使用Performance Schema解决常见的故障案例。

2024-12-24 14:52:33 1616

空空如也

ansible安装不了

2023-11-04

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除