
mysql
文章平均质量分 96
找不到、了
纵有千古,横有八荒。
前途似海,来日方长。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MySQL的事务和锁机制的详细介绍
MySQL事务与锁机制详解 摘要: 本文详细解析MySQL的事务特性和锁机制。首先介绍事务的ACID特性(原子性、一致性、隔离性、持久性)和四种隔离级别(读未提交、读提交、可重复读、串行化),重点分析多线程并发事务可能产生的脏读、不可重复读和幻读问题。其次深入探讨MVCC多版本并发控制原理及其解决并发问题的方式。然后系统讲解MySQL锁的分类,包括独占锁、共享锁及其兼容性,以及InnoDB引擎特有的记录锁、间隙锁、临键锁等实现细节。最后提供锁监控方法和优化建议,包括缩短事务长度、合理设计索引等,并比较不同隔原创 2025-07-05 22:49:51 · 1367 阅读 · 0 评论 -
MySQL的窗口函数介绍
MySQL窗口函数是8.0版本的重要特性,允许在不减少行数的情况下进行数据分析。主要包括三类函数:排名函数(RANK、DENSE_RANK、ROW_NUMBER)、分析函数(LEAD/LAG、FIRST_VALUE/LAST_VALUE)和聚合函数。窗口定义包含PARTITION BY分组、ORDER BY排序和窗口框架设置。高级用法包括多窗口定义、百分比计算、分组TopN查询等。使用窗口函数时需注意大数据集的性能问题。窗口函数将复杂的数据分析计算高效地转移到数据库层完成。原创 2025-07-03 22:21:36 · 914 阅读 · 0 评论 -
MySQL的5.0和8.0版本区别
MySQL 5与8版本核心差异摘要 MySQL 5(2005年发布)主要特性包括:默认InnoDB引擎、存储过程/触发器支持、视图功能、查询优化器增强及外键约束。而MySQL 8(2018年发布)实现了重大升级:性能提升2倍,默认utf8mb4字符编码支持表情符号,新增JSON原生数据类型与操作函数,引入窗口函数和CTE语法。安全方面强化了密码策略和SSL支持,存储引擎改为插件化架构,并改进索引算法(隐藏索引/降序索引)。兼容性上需注意:MySQL 8驱动类更改为com.mysql.cj.jdbc.Driv原创 2025-07-02 23:17:51 · 816 阅读 · 0 评论 -
深入学习MySQL的页分裂(Page Split)
MySQL数据表以文件方式存放在磁盘中,默认使用共享表空间(0)存储。共享表对于Innodb来说:当使用共享表空间时,所有表的数据和索引会存储在一个共享的 ibdata 文件中。表结构以frm文件的形式存储在与表对应的文件夹中。页为mysql的innodb引擎的存储磁盘的最小单元,每个页默认为16kb。64个连续的数据页称为一个extent(区),64个页组成一个区,所以区的大小为1MB(16*64=1024),连续的256个数据区称为一组数据区。原创 2025-06-27 20:08:54 · 1163 阅读 · 0 评论 -
关于B+树的介绍
本文系统介绍了B+树的数据结构及其特性。B+树是一种平衡多叉搜索树,其节点最多包含m个子节点(m为阶数),属于N叉树的一种。与B树不同,B+树的所有数据都存储在叶子节点,且叶子节点通过指针连接形成有序链表。文章详细阐述了B+树的节点结构、N叉特性、与B树的区别,并通过示例演示了查找和插入元素的过程。作为数据库索引的核心结构,B+树通过多路分支降低树高,提高磁盘IO效率,使其成为MySQL InnoDB等存储引擎的理想选择。原创 2025-06-13 11:00:33 · 1130 阅读 · 0 评论 -
关于MySql深分页的问题及优化方案
在mysql中索引分为聚簇索引和非聚簇索引。节点存储:B+树是一种自平衡的树结构,其中每个节点可以有多个子节点。非叶子节点存储的是指向子节点的指针和分隔值,而叶子节点存储的是实际的数据记录或记录的指针。顺序访问:叶子节点中的数据是按照索引列的顺序存储的,这使得范围查询非常高效。聚簇索引(主键索引)的叶子节点直接存储行数据,而非聚簇索引(二级索引)的叶子节点存储的是主键值。原创 2025-06-12 13:32:32 · 1163 阅读 · 0 评论 -
关于布隆过滤器的使用
布隆过滤器(Bloom Filter)则提供了一种空间效率极高的概率型数据结构,它可以告诉你“可能存在”或“一定不存在”,用极小的错误率换取了内存占用的大幅降低。如下图所示:当缓存中不存在某个数据,而用户频繁查询该数据时,可能导致缓存穿透问题。而布隆过滤器可以在缓存层之前迅速过滤掉不存在的数据,减轻数据库的压力。原创 2025-06-10 10:25:32 · 1187 阅读 · 0 评论 -
本地缓存在Java中的实现方式
引入缓存,主要用于实现系统的高性能,高并发。如下图所示:将数据库查询出来的数据放入缓存服务中,因为缓存是存储在内存中的,内存的读写性能远超磁盘的读写性能,所以访问的速度非常快。但是电脑重启后,内存中的数据会全部清除,而磁盘中的数据虽然读写性能很差,但是数据不会丢失。原创 2025-06-08 13:49:01 · 1152 阅读 · 0 评论 -
Mysql中select查询语句的执行过程
MySQL 查询语句可以分为 Server 层和存储引擎层。而 Server 层包括连接器、查询缓存、解析器、预处理器、优化器、执行器等,原创 2025-06-06 14:23:48 · 1305 阅读 · 0 评论 -
MySQL的memory存储引擎的深入了解
MySQL Memory引擎是一种完全基于内存的存储引擎,数据读写速度快但无持久性。其特点包括:仅支持哈希索引和表锁,适合等值查询但不支持事务和范围查询;重启后数据会丢失,主备架构可能出现不一致。与InnoDB相比,Memory引擎数据以无序数组存储,扫描时按插入顺序返回结果。适用于缓存、临时表等非持久化场景,使用时需注意内存限制和并发性能影响。生产环境中不建议作为主要数据存储,可搭配InnoDB引擎使用。原创 2025-05-30 14:36:56 · 1031 阅读 · 0 评论 -
msql的乐观锁和幂等性问题解决方案
在分布式系统中,乐观锁幂等性设计和数据插入失败处理是保障数据一致性和系统可靠性的三大核心机制,它们共同协作以解决并发冲突、重复请求和网络异常等问题。1.乐观锁通过在数据库中添加version或timestamp字段,确保并发更新时的数据一致性。每次更新时检查版本号是否匹配。若匹配则更新并递增版本号,否则抛出异常(如适用于读多写少的场景,减少锁竞争,但需业务层配合处理冲突重试。2.幂等性设计确保同一请求多次执行的结果与一次执行相同,常用于支付、订单等关键业务。通过唯一业务标识符(如订单号)请求ID。原创 2025-05-27 14:30:55 · 1296 阅读 · 0 评论 -
谈谈mysql表空间结构和日志的用途
MySQL 中的 binlog 和 redolog 是两种核心日志机制,它们在数据库的 数据持久化、主从复制 和 崩溃恢复 中扮演关键角色。undolog提供事务回滚日志记录。原创 2025-05-20 11:15:06 · 1115 阅读 · 0 评论 -
分布式事务的处理思路
在分布式系统中,分布式事务确保多个独立服务或数据库操作要么全部成功,要么全部失败,以维护系统一致性。处理分布式事务的复杂性主要源于网络延迟、节点故障和服务异步等因素。事务具有ACID特性:原子性、一致性、隔离性和持久性。常见的隔离级别包括读未提交、读已提交、可重复读和串行化。分布式事务协议主要有2PC和3PC,分别通过准备和提交阶段来协调事务。Seata框架提供了AT、TCC、Saga和XA四种分布式事务解决方案,适用于不同场景。AT模式对业务无侵入,TCC模式需实现Try、Confirm和Cancel操作原创 2025-05-14 10:49:39 · 720 阅读 · 0 评论 -
多线程下的事务失效及解决形式
本文探讨了多线程和并发的基本概念,并深入分析了多线程事务与单线程事务的主要区别和联系。多线程事务在并发性、数据一致性、锁的使用和性能方面与单线程事务存在显著差异,但两者都遵循事务的ACID属性。使用TransactionSynchronizationManager手动绑定事务上下文,以及通过join()方法确保子线程完成后再提交事务。这些方法有助于在多线程环境中维护数据的一致性和完整性。原创 2025-05-12 15:13:13 · 1349 阅读 · 0 评论 -
聊聊对MySQL数据库的见解
Structure Query Language(结构化查询语言)简称SQL。而mysql属于关系型数据库。MySQL最新版8.0.21安装配置教程~-CSDN博客以上为数据库在服务中的使用。原创 2025-05-04 23:05:43 · 1561 阅读 · 1 评论