
MySQL
文章平均质量分 94
无休居士
莫欺中年穷
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MySQL面试攻略:从基础到高级,全面解析
基础知识:包括MySQL的基本概念、数据类型、存储引擎等。高级特性:如事务处理、锁机制、索引优化等。实际操作:编写SQL语句、性能调优、故障排除等。面试技巧:如何在面试中展现你的MySQL知识和实践经验。MySQL是一个关系型数据库管理系统(RDBMS),它使用SQL(结构化查询语言)进行数据的存储、检索和管理。MySQL因其高性能、可靠性、易用性和开放源代码而受到广泛欢迎。原创 2024-11-25 23:50:29 · 1295 阅读 · 0 评论 -
Mysql中的 TEXT 和 BLOB 解析
InnoDB 表是行格式存储的,这适用于包括TEXT和BLOB类型在内的所有数据列。TEXT和BLOB列的数据存储方式与普通数据列不同——它们可能会存储在数据页内(如果数据较小),或者会被分配到**溢出页**中(如果数据较大)。行格式存储并不会影响TEXT和BLOB的使用,它们依然是作为 InnoDB 行的一部分进行管理,只是它们的存储位置可能会有所不同。因此,虽然你可以在 InnoDB 表中使用TEXT和BLOB数据类型,但这并不改变表使用行格式存储的方式。前缀索引:对于TEXT和BLOB。原创 2024-11-24 23:53:34 · 1436 阅读 · 0 评论 -
Mysql没有开启binlog日志还会执行二阶段提交吗?
即使没有开启binlog,InnoDB存储引擎仍然会执行二阶段提交,以确保事务的ACID特性。原子性:通过Undo Log和Redo Log的二阶段提交机制保证。一致性:通过事务管理和二阶段提交机制保证。隔离性:通过锁机制和MVCC保证。持久性:通过Redo Log和配置参数保证。通过这些机制,InnoDB能够在没有binlog的情况下,仍然提供高度可靠和一致的事务处理能力。乐于分享和输出干货的WXGZG:JavaPersons。原创 2024-11-21 23:55:07 · 1677 阅读 · 0 评论 -
MySQL · 最佳实践 · 如何索引JSON字段
MySQL从5.7.8起开始支持JSON字段,这极大的丰富了MySQL的数据类型。也方便了广大开发人员。但MySQL并没有提供对JSON对象中的字段进行索引的功能,至少没有直接对其字段进行索引的方法。本文将介绍利用MySQL 5.7中的虚拟字段的功能来对JSON对象中的字段进行索引。原创 2024-11-21 23:52:59 · 1337 阅读 · 0 评论 -
Mysql没有开启binlog如何保证持久性?
大家好,我是无休居士!一枚任职于一线Top3互联网大厂的Java开发工程师!🚀🌟 在这里,你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人,我不仅热衷于探索一些框架源码和算法技巧奥秘,还乐于分享这些宝贵的知识和经验。💡。原创 2024-11-20 23:54:31 · 841 阅读 · 0 评论 -
如果 MySQL 主库出现了问题,从库该何去何从呢?
这篇文章我们主要介绍了在 MySQL 数据库中两种主从复制的方式。首先我们解释了传统的 MySQL 主从复制的方式在主从切换的过程中很有可能会导致主从数据不一致的问题;为此,MySQL 5.6之后的版本又为我们提供了一个 GTID 的方式,通过判断 GTID 是否存在,进而判断是否执行该事务。一般在生产环境中,强烈建议使用 GTID 的方式部署 MySQL 主从复制集群。原创 2024-11-05 04:30:00 · 1921 阅读 · 0 评论 -
哪些因素导致了 MySQL 数据库的延时呢?
MySQL复制是一种机制,允许一个MySQL实例(主服务器)将数据更改同步到一个或多个其他MySQL实例(从服务器)。这种机制可以用于实现高可用性、负载均衡和备份等多种用途。本篇文章主要介绍 MySQL 主从复制的过程中遇到的问题,当 MySQL 数据库遇到大流量时,很有可能会遇到从库延时更新的情况;如果遇见这种情况,MySQL 数据库为从库提供了针对不同场景下的并发模式。其中,最有效的就是组提交这种模式,它是将不同次的提交分成组,如果该组跟其他组不存在交集则可以并发,如果存在则按照事务的前后顺序进行执行。原创 2024-11-04 04:00:00 · 1025 阅读 · 0 评论 -
揭秘MySQL数据一致性:从原理到实践,助你征服大厂面试官
在当今的互联网世界中,数据是企业最为宝贵的资产之一。而保证数据的一致性、可靠性和可用性则成为了数据库系统设计的核心问题。作为最受欢迎的关系型数据库管理系统之一,MySQL通过其强大的主备复制(也称为Master-Slave复制)机制来确保数据的一致性。本文将深入解析MySQL主备复制的工作原理,并探讨如何利用这一机制应对实际场景中的挑战。原创 2024-11-04 04:45:00 · 1186 阅读 · 0 评论 -
深入浅出MySQL幻读:面试大厂必备知识点
在数据库领域,事务是确保数据一致性和完整性的关键机制。然而,在并发环境下,事务可能会遇到一些复杂的问题,其中之一就是“幻读”(Phantom Read)。本文将深入探讨什么是幻读、它对数据库的影响以及如何解决这一问题。通过本文的学习,你将能够更好地理解和应对互联网大厂的面试考察。原创 2024-11-02 04:30:00 · 1210 阅读 · 0 评论 -
深入理解 MySQL 中的日志类型及其应用场景
今天我们介绍了错误日志、事务日志、慢日志以及二进制日志。错误日志主要是用来记录数据库运行过程中的一些警告或者错误的日志,有利于我们排查数据库问题。事务日志主要是利用 MVCC 快照和 Redo 记录脏数据的方式来保证事务的提交和回滚。慢日志主要是通过设置 long_query_time 时间阈值来记录执行时间超过这个阈值的 SQL 的,这样做有利于直接排查执行时长较长的 SQL 进而进行优化。但是这个阈值不要设置得太低,以为越低记录的 SQL 就越多,消耗的磁盘 IO 就越高。原创 2024-11-02 03:15:00 · 914 阅读 · 0 评论 -
面试官:通过Mysql查询的时候,为什么有时候即使查询一条数据也很慢呢?
导致查询慢的几个方面的原因,一是 MySQL 数据库偶发性地需要flush数据,此时因为redo log空间的问题或者是buffer pool空间的问题导致数据库阻塞,进而导致数据库查询偶发性地变慢。二是锁机制导致的问题,如果上一个事务增加了排他锁而其他事务同时也加上了锁,那么就会导致阻塞,此时也会导致数据查询变慢。可能是死锁了,然后又释放了!三是索引不合理或条件不合理。原创 2024-11-01 04:00:00 · 1625 阅读 · 0 评论 -
Mysql的行锁,改一行锁一行
共享锁主要是用来解决数据一致性问题的。加上共享锁之后,该条数据在其他事务中只读但不可以修改。排他锁就像它的名字一样,排斥其他的锁机制,也就是说加上排他锁之后,将无法再添加任何其他锁。原创 2024-11-01 04:00:00 · 2123 阅读 · 1 评论 -
redo log 日志 与 undo log 日志工作原理
MySQL 数据库的事务主要是由redo log和undo log来实现的,这是我们理解 MySQL 事务原理的关键所在。redo log是在事务执行之前才产生的,并且在事务执行过程中,redo log也是不断产生,当产生的脏数据全部都写入磁盘之后,redo log随即也就完成了它的使命。undo log是在事务执行之前产生的,事务回滚时使用undo log日志中的数据覆盖新修改的数据,进而达到事务回滚的效果。原创 2024-10-26 05:00:00 · 1557 阅读 · 0 评论 -
Mysql事务:你敢肯定你发的红包媳妇一定能收到了吗?
在数据库操作中,确保数据的一致性和完整性是非常重要的。MySQL 通过事务来实现这一目标。事务是一组数据库操作,这些操作要么全部成功执行,要么全部不执行。事务的主要目的是确保数据的一致性和完整性,避免部分操作成功而另一部分失败的情况。事务的作用:利用 MySQL 数据库内部的数据结构来保证一系列修改数据的操作要么全部成功,要么全部不修改。事务的特性:原子性、一致性、隔离性和持久性。日志文件:redo log 和 undo log 分别用于保证数据的持久性和支持数据回滚。原创 2024-10-26 05:30:00 · 1635 阅读 · 0 评论 -
InnoDB 存储引擎的底层逻辑架构白话-必知必会
我们都知道 MySQL 数据库有很多个存储引擎,其中另我们印象深刻的应该是 InnoDB 存储引擎,它从 MySQL 5.5 之后就是默认的存储引擎,它有支持事务、行级锁、MVCC 以及外键等优点。那么你知道InnoDB存储引擎的底层逻辑架构吗?下面我们就来聊一下InnoDB存储引擎。InnoDB存储引擎是 MySQL 数据库中最重要的一个存储引擎之一。今天我们一起通过它的内存架构和磁盘架构深入地了解了它的底层架构。在内存架构中,自适应哈希索引有利于提高查询速度;原创 2024-10-25 00:41:28 · 867 阅读 · 0 评论 -
几张图就让你掌握InnoDB 存储引擎底层逻辑架构
在互联网大厂的技术面试中,对数据库的理解是一个重要的考察点。尤其是对于像MySQL这样的关系型数据库,其核心存储引擎InnoDB的底层逻辑架构是很多面试官会关注的重点。本文将通过几张图和详细的讲解,帮助你掌握InnoDB存储引擎的核心知识,从而在面试中脱颖而出。原创 2024-10-24 20:26:42 · 1521 阅读 · 0 评论 -
MySQL 中的连表是怎样实现的?为什么大厂不使用连表查询?
在实际应用场景中,不建议join超过三个表,应该join的数据表越多,扫描的数据表就越多,性能也就越差;能使用索引的就使用索引,如果不使用索引并且驱动表跟join_buffer的比值比较大的情况下,建议拆分查询,因为这样可以减少扫描数据表的次数,从侧面提高性能。原创 2024-10-24 20:01:27 · 969 阅读 · 0 评论 -
MySQL 中的排序在底层是怎样实现的呢?
本次我从根本上给你介绍了各种索引的情况。对于单个字段的索引来说,要直接使用,而不能写成一个表达式,写成表达式将会无法命中索引。对于多个字段需要索引来说,一般需要创建组合索引,这样有利于命中索引,但是一定要注意组合索引的前缀性。对于索引的类型,我还给你介绍了唯一索引和普通索引,在读的场景比较多的情况下普通索引和唯一索引都能胜任,不过在写场景比较多的情况下,普通索引的性能要优于唯一索引。在实际应用中,我们通常建议使用普通索引,对于需要唯一的字段,我们一般在代码的层面去控制其唯一性。原创 2024-10-23 14:03:32 · 908 阅读 · 0 评论 -
你真的了解 count(*) 的底层原理吗?
在 MySQL 中,统计数据一般情况下会使用 count() 函数。它在不同的存储引擎中的结果是不一样的,主要原因是在支持事务的存储引擎中不同的情况得到的结果不同。如果使用 Redis 作为存储计数结果的对象,是不能够保证计数的精确性的,所以不能使用 Redis 等缓存数据库作为计数结果的存储数据的对象。而不同的 count 使用形式,其计数的结果可能是不一样的,性能也有一些差别。原创 2024-10-23 13:56:37 · 1102 阅读 · 0 评论 -
深入理解InnoDB底层原理:从数据结构到逻辑架构
InnoDB是MySQL中最常用的存储引擎之一,它提供了高性能、事务安全以及外键等特性。InnoDB的设计目标是高效处理大量数据和高并发访问,同时保证数据的一致性和可靠性。通过上述两种解题思路,我们可以更好地理解InnoDB的底层数据结构和逻辑结构。B+树索引提供了高效的查询性能,而缓冲池则通过减少磁盘I/O进一步提升了系统的响应速度。这两种方法都是InnoDB存储引擎的核心组成部分,对于理解和优化数据库性能至关重要。原创 2024-10-22 15:40:49 · 1512 阅读 · 0 评论 -
进阶功法:SQL 优化指南
SQL 优化包括批量插入、手动提交事务、主键顺序插入和使用 LOAD DATA INFILE 提升插入性能;通过合理设计主键和索引,利用 ORDER BY 和 GROUP BY 的索引优化查询效率;使用 LIMIT 和子查询优化分页,选择合适的 COUNT 方法提高统计速度;更新操作时使用索引以避免表锁,提升并发性能。原创 2024-10-10 05:00:00 · 933 阅读 · 0 评论 -
进阶功法:Mysql存储引擎详解
存储数据,建立索引,更新/查询数据等技术的实现方式存储引擎是基于表的,而不是基于库的,所以不同表可以有不同的存储引擎,同时存储引擎也被称为表类型# 下面是一个表的创建语句~~~~~~~~# 在上面的engine = 存储引擎类型 就是存储引擎的设计语句# 我们默认情况下是InoDB存储引擎show create table 表名;InnoDB 是一种兼顾可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后成为 MySQL 的默认存储引擎。原创 2024-10-10 10:00:00 · 598 阅读 · 0 评论 -
Mysql数据库存储引擎有哪些? 区别是什么?
简单来说,存储引擎就是指表的类型以及表在计算机上的存储方式。在MySQL中的存储引擎有很多种,可以通过“SHOW ENGINES”语句来查看。下面重点关注InnoDB、MyISAM、MEMORY这三种。原创 2024-10-08 07:00:00 · 3160 阅读 · 0 评论 -
MySQL索引机制精讲
接触MySQL数据库的小伙伴一定避不开索引,索引的出现是为了提高数据查询的效率,就像书的目录一样。某一个SQL查询比较慢,你第一时间想到的就是“给某个字段加个索引吧”,那么索引是什么?是如何工作的呢?一起静下心来,耐心看完这篇文章吧,干货不啰嗦,相信你一定会有所收获。原创 2024-10-05 00:20:13 · 1431 阅读 · 0 评论 -
MySQL之分库分表后带来的“副作用”你是怎么解决的?
对于需要扩容时的情况,首先依旧把新的数据写入到老库中,然后写完之后同步给MQ一份,后续再由MQ的消费者去将新数据写到新库中,同时新库在这期间,会去同步老库中原有的数据,这个动作持续到所有旧数据全部同步完成后,再以老库作为校验基准,核对数据无误后,再将模式切换为扩容后的分库模式。这里可以看到,垂直分表虽然会有后患问题,但带来的问题本质上也不算大问题,就是读写数据的操作会相对麻烦一些,下面来看看其他的分库分表方案,接下来是真正的重头戏。其实异步双写方案,也可以用来做后续的节点扩容,但会相对来说比较麻烦一些。原创 2024-09-30 05:00:00 · 1675 阅读 · 0 评论 -
分库分表很常见,但这些面试问题90%的人都答不全
以上,本文介绍了分库分表的一些原因,以及如何做分库分表,并且讨论了其中比较关键的分表字段和分表算法的问题。还介绍了几款比较不错的分库分表的相关框架。最后,还有一些需要大家注意的就是分库分表会引入一些新的问题,这些问题的解决成本也都不低,所以在做技术选型的时候也要做好这方面的评估。原创 2024-09-28 17:09:11 · 1211 阅读 · 0 评论 -
分库分表常见算法,每个高级开发必知必会?
分库分表是一种数据库设计技术,其目的是为了提高数据库的性能和扩展性。它通过将数据库的表拆分到多个数据库中来实现这一目的。要根据实际的业务情况进行组合,例如省、市;男、女;年龄;等等都可以作为策略。增加了系统的复杂性:分库分表会增加系统的复杂性,有时候需要额外的中间件(MyCat)来实现,并且需要在程序中额外处理分库分表的逻辑。分页、排序、跨节点联合查询等等问题。降低了事务的原子性:由于分库分表会将数据存储在多个数据库或表中,因此在一次事务中可能涉及多个数据库,降低了事务的原子性。如何解决跨库事务问题。原创 2024-09-28 16:48:55 · 786 阅读 · 0 评论 -
分布式环境中解决主从延时的一些思路
主从复制,是指建立一个和主数据库完全一样的数据库环境(称为从数据库),并将主库的操作行为进行复制的过程:将主数据库的DDL和DML的操作日志同步到从数据库上,然后在从数据库上对这些日志进行重新执行,来保证从数据库和主数据库的数据的一致性。但是由于分布式环境中网络等不稳定因素存在,主从延迟基本时长发生,如何破解呢?原创 2024-09-22 01:14:59 · 1205 阅读 · 0 评论 -
大家都在用MySQL count(*) 统计总数,到底有什么问题?
在日常开发工作中,我经常会遇到需要统计总数的场景,比如:统计订单总数、统计用户总数等。一般我们会使用MySQL 的count函数进行统计,但是随着数据量逐渐增大,统计耗时也越来越长,最后竟然出现慢查询的情况,这究竟是什么原因呢?本篇文章带你一下学习一下。原创 2024-09-21 05:00:00 · 980 阅读 · 0 评论 -
DriverManager连接MySQL数据库
import java.sql.Connection;import java.sql.DriverManager;public class exam2 { Connection conn = null;public Connection getConnection()原创 2016-12-24 15:40:58 · 3116 阅读 · 0 评论