MySQL
文章平均质量分 82
mysql
xiaolyuh123
凡是过去,皆为序幕
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MySQL MVCC(多版本并发控制)实现机制深度解析
MVCC是InnoDB专为读已提交(RC)和可重复读(RR)核心思想:为每一行数据维护多个版本(快照),不同事务读取时,根据规则选择对应版本的数据,而非直接读取最新数据;适用场景:仅针对快照读(普通SELECT生效,当前读(INSERTUPDATEDELETE)仍需加锁;解决“读写冲突”,避免传统锁机制中“读阻塞写、写阻塞读”的问题,提升并发性能。核心依赖:MVCC基于行记录隐藏字段(DB_TRX_ID)、Undo Log版本链、Read View可见性规则实现;核心逻辑。原创 2026-01-27 14:54:58 · 743 阅读 · 0 评论 -
MySQL 四种事务隔离级别
Session A 插入数据但未提交,Session B 能读到 A 未提交的数据。四级隔离各不同,读未提交最放松;读已提交不脏读,可重复读防两读;想要无幻串行化,性能代价别小觑。原创 2025-06-30 10:10:08 · 505 阅读 · 0 评论 -
MySQL的BTree索引和Hash索引的区别
维度BTree 索引Hash 索引是否有序✅ 是❌ 否支持范围查询✅ 是❌ 否支持模糊匹配(LIKE)✅ 是❌ 否支持排序✅ 是❌ 否查询性能稳定 O(log n)理想情况下 O(1)存储引擎默认支持Memory(默认)💡 选择合适的索引类型能够显著提升查询效率,应结合实际业务场景进行优化设计。原创 2025-06-30 10:26:38 · 705 阅读 · 0 评论 -
MySQL索引失效场景分析
在 MySQL 中,即使你为某列建立了索引,也有不少情况会导致,从而退化为全表扫描,影响查询性能。原创 2025-06-30 10:32:15 · 556 阅读 · 0 评论 -
基于binlog恢复误删除MySQL数据
。原创 2025-06-10 18:17:02 · 582 阅读 · 0 评论 -
Mysql 脚本转换为drawio ER 脚本
Mysql SQL脚本导入drawio原创 2024-08-07 13:43:32 · 1091 阅读 · 0 评论 -
MySQL 5.5、5.6、5.7的主从复制改进
最先进入队列的事务线程成为leader线程,其他后续进入的成为follower线程,leader线程将会获得这个队列的控制权,就是会获得一个锁,全权负责本次队列中所有事务的落盘操作。但如果业务始终只有一个库,或者数据库压力都集中在一个库上,其他库基本没什么操作,这样的两种情况下,针对库的多线程基本没有意义,还是和以前的单线程复制是一样的速度。在这样的模式下,从机可以同时消费主机的多个事务队列,在同一时间接收到更多的数据传输,有效降低了宕机情况下由于同步延迟导致数据丢失的概率。的落盘(保存到磁盘)效率。原创 2024-03-03 14:48:55 · 1417 阅读 · 0 评论 -
Mysql事务的两段式提交
为了满足Mysql的事物ACID特性,InnoDB引入了和 日志文件。为了满足主从同步Mysql引入了日志文件。和文件都保存的数据库对数据库的修改,但是和本质上是不一样的:当和数据不一致时就可能导致主从数据不一致,比如:为了避免这种情况,MySQL 引入了两阶段提交的机制。MySQL采用了如下的二阶段提交流程:通过机制,MySQL可以保证在任何时刻,redo log和bin log都是逻辑上一致的。如果MySQL发生崩溃,可以根据恢复数据页的状态,也可以根据恢复SQL语句的执行。原创 2024-03-03 13:49:33 · 683 阅读 · 0 评论 -
数据库分库分表中间件选择
以Sharding-Proxy为例,中间层将自身定义为透明的数据库代理,它提供了一种数据库服务器,该服务器封装了数据库二进制协议以支持异构语言。对DBA友好的是,现在提供的MySQL版本可以使用与MySQL协议兼容的任何类型的终端(例如MySQL Command Client,MySQL Workbench等)。它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容JDBC和各种 ORM 框架。4、性能高,JDBC 直连数据库,无需二次转发。原创 2024-02-29 11:52:30 · 2481 阅读 · 0 评论 -
MySQL内存碎片的产生和消除方法
清理表的碎片可以提高MySQL性能,在日常工作中我们可以定期执行表碎片整理,从而提高MySQL性能。原创 2024-02-27 15:26:00 · 1526 阅读 · 0 评论 -
MySQL性能优化
MySQL性能优化主要考虑几个方面:CPU、内存、硬盘、操作系统、文件系统等。CPU数据库的应用类型一般可以分为OLTP(OnlineTransaction Processing,在线事务处理)和OLAP(Online Analytical Processing,在线分析处理。OLTP主要用来解决事务性应用,如银行交易,在线商品交易等,所以对CPU需求较低;OLAP一般需要执行复杂的SQL语...原创 2020-05-07 19:56:41 · 993 阅读 · 0 评论 -
MySQL高可用化
服务在运行过程中存在很多意外情况,如:如服务器宕机、磁盘损坏、RAID卡损坏等。如何保证数据库在服务发生意外的情况下数据不丢失呢?服务还能继续提供服务呢?我们一般通过备份的方式来解决数据丢失问题,通过复制来解决MySQL的高可用问题。备份备份的方法不同可以将备份分为:Hot Backup(热备,在线备份):在数据运行过程中进行备份,对数据库操作没有影响。Cold Backup(冷备,离...原创 2020-05-07 14:42:22 · 2259 阅读 · 1 评论 -
MySQL的日志类型
重做日志(redo log)作用重做日志用来实现事务的持久性,即事务ACID中的D。其由两部分组成:一是内存中的重做日志缓冲(redo log buffer),其是易失的;二是重做日志文件(redo log file),其是持久的。原理InnoDB是事务的存储引擎,其通过Force Log at Commit机制实现事务的持久性,即当事务提交(COMMIT)时,必须先将该事务的所有日志写入...原创 2020-05-06 18:18:30 · 988 阅读 · 0 评论 -
MySQL事务特性和事物分类
事务是访问并更新数据库中各种数据的最小单元,在事务的操作中,要么都修改成功,要么都修改失败。它的主要目的是:将数据库从一个一直状态转换成另一种一直状态。事务的四个特性是:原子性(atomicity):原子性指整个数据库事务是不可分割的工作单位。只有使事务中所有的数据库操作都执行成功,才算整个事务成功。一致性(consistency):一致性指事务将数据库从一种状态转变为下一种一致的状态。...原创 2020-05-02 15:53:21 · 750 阅读 · 0 评论 -
MySQL索引原理
定义索引(Index)是帮助MySQL高效获取数据的数据结构。那么什么数据结构可以用来高效的获取数据呢?查看索引mysql> show index from user;+-------+------------+------------------+--------------+-------------+-----------+-------------+----------+--...原创 2020-04-23 11:00:14 · 660 阅读 · 0 评论 -
MySQL中各数据类型占用字节数
数字类型类型字节数TINYINT1 字节SMALLINT2 个字节MEDIUMINT3 个字节INT4 个字节INTEGER4 个字节BIGINT8 个字节FLOAT(X)4 如果 X < = 24 或 8 如果 25 < = X < = 53FLOAT4 个字节DOUBLE8 个字节D...原创 2020-04-22 10:01:23 · 10217 阅读 · 4 评论 -
InnoDB存储引擎
InnoDB体系架构后台线程分类Master Thread主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性。Master Thread具有最高的线程优先级别。其内部由多个循环(loop)组成:主循环(loop)、后台循环(backgroup loop)、刷新循环(flush loop)、暂停循环(suspendloop)。Master Thread会根据数据库运行的状态在loop、...原创 2020-04-21 09:21:54 · 567 阅读 · 0 评论 -
MySQL常见的存储引擎
查看存储引擎查看当前mysql所支持的所有存储引擎mysql> show engines;+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| Engine ...原创 2020-04-20 11:36:59 · 410 阅读 · 0 评论 -
MySQL查询的执行过程
Mysql 的逻辑架构MySQL执行一个查询的过程如图:客户端发送一个查询给服务器。服务器先检查查询缓存,如果命中,则直接返回缓存中的结果。如果没有没有命中,则进入下一阶段(解析器)。服务器由解析器检查sql语法是否正确,然后由预处理器检查sql中的表和字段是否存在,最后由查询优器生成执行计划。这一步很耗资源。mysql根据优化器生成的执行计划,调用存储引擎的API来执行查询。...原创 2020-04-20 10:00:16 · 677 阅读 · 0 评论 -
MySQL优化 - EXPLAIN执行计划全解析
EXPLAIN是我们最常用的SQL分析工具,在使用工具之前我们需要先了解下工具中每一项代表的含义,如下是EXPLAIN中的所有列:mysql> explain select * from user u1 left join user u2 on u1.id=u2.id where u1.name='wyh';+----+-------------+-------+-----------...原创 2020-04-14 17:00:43 · 532 阅读 · 0 评论 -
Mysql 数据库压力测试工具 - MySqlSlap
MySQLSlap是从MySQL的5.1.4版引入的压力测试工具。该工具我们可以在Mysql的安装目录的bin目录里面找到,如C:\Program Files\MySQL\MySQL Server 5.7\bin>。名词解释TPS:Transactions Per Second(每秒传输的事物处理个数),这是指服务器每秒处理的事务数,支持事务的存储引擎如InnoDB等特有的一个性能指标...原创 2020-04-11 16:56:02 · 920 阅读 · 0 评论 -
为什么表设计时必须把字段定义为NOT NULL并设默认值
表示“空值”优先用空字符串'',而非NULL,减少存储占用和后续查询/统计问题查询NULL值必须使用**is null**,杜绝使用!等普通比较运算符聚合统计时,需统计全量记录用COUNT(*),统计非空字段用COUNT(字段名),避免结果偏差若业务需频繁查询,表设计时将字段设为NOT NULL并指定默认值(如空字符串''),避免索引失效建表时尽量明确字段是否允许为NULL,减少索引对NULL值的特殊处理开销。原创 2020-04-10 10:49:23 · 4044 阅读 · 0 评论 -
58到家MySQL军规升级版
转载 2018-03-30 58到家DBA 架构师之路一、基础规范表存储引擎必须使用InnoDB表字符集默认使用utf8,必要时候使用utf8mb4解读:通用,无乱码风险,汉字3字节,英文1字节utf8mb4是utf8的超集,有存储4字节例如表情符号时,使用它禁止使用存储过程,视图,触发器,Event解读:对数据库性能影响较大,互联网业务,能让站点层和服务层干的事情...转载 2020-04-10 09:43:51 · 499 阅读 · 0 评论 -
MySQL 通过 kill process 解决死锁
MySQL死锁处理与预防指南 摘要:本文介绍了MySQL死锁的基础概念、产生条件和典型表现,重点讲解了通过kill process解决死锁的应急方法。详细步骤包括:1)使用SHOW ENGINE INNODB STATUS或SHOW PROCESSLIST精准定位死锁进程;2)执行KILL命令终止阻塞线程。同时强调了操作风险与注意事项,建议优先kill阻塞方进程并做好日志记录。文章最后指出,根本解决方案在于优化锁使用逻辑:统一锁申请顺序、缩小锁粒度、控制事务大小、设置锁等待超时等预防措施。kill proc原创 2017-03-14 16:19:33 · 46182 阅读 · 2 评论 -
MySQL 隐式类型转换规则
表定义:CREATE TABLE `ids` ( id int(11) not null auto_increment, PRIMARY KEY (id));表中存在一些IDs: 111, 112, 113, 114 等.查询:SELECT * FROM `ids` WHERE id = '112abcdefg'Msql会将sql处理...原创 2017-03-21 15:09:50 · 14029 阅读 · 0 评论
分享