合集-MySQL

摘要:MySQL索引详解 索引介绍 索引是一种用于快速查询和检索数据的数据结构,其本质可以看成是一种排序好的数据结构。索引的作用就相当于书的目录。打个比方: 我们在查字典的时候,如果没有目录,那我们就只能一页一页的去找我们需要查的那个字,速度很慢。如果有目录了,我们只需要先去目录里查找字的位置,然后直接翻 阅读全文
posted @ 2024-07-05 11:52 Duancf 阅读(8) 评论(0) 推荐(0) 编辑
摘要:索引底层数据结构选型 Hash 表 哈希表是键值对的集合,通过键(key)即可快速取出对应的值(value),因此哈希表可以快速检索数据(接近 O(1))。 为何能够通过 key 快速取出 value 呢? 原因在于 哈希算法(也叫散列算法)。通过哈希算法,我们可以快速找到 key 对应的 inde 阅读全文
posted @ 2024-08-25 22:12 Duancf 阅读(8) 评论(0) 推荐(0) 编辑
摘要:索引失效 https://mp.weixin.qq.com/s/mwME3qukHBFul57WQLkOYg 未遵循最左匹配原则 由于构建一棵 B+树只能根据一个值来确定索引关系,所以联合索引的B+树依赖联合索引最左侧的元素建立树结构。所以如果想要利用B+树进行数据筛选,必须要提供联合索引的最左列。 阅读全文
posted @ 2024-07-05 11:49 Duancf 阅读(22) 评论(0) 推荐(0) 编辑
摘要:范式 第一范式:所有属性都是不可再分的基本数据项 第二范式:一是表必须有一个主键;二是非主属性必须完全依赖于主键。去掉部份依赖,比如一张表是(学生id,课程id,成绩,课程名称),主键是学生id加上课程id,但是课程名只部分依赖于主键中的课程id 第三范式:每一个非主属性都不传递依赖于该范式的候选键 阅读全文
posted @ 2024-09-12 22:30 Duancf 阅读(6) 评论(0) 推荐(0) 编辑
摘要:数据库优化 1)从设计层面,在数据库设计阶段需要遵从数据库设计的范式,避免冗余数据。对于大表,可以采用拆表的方式,将一个大表拆分为多个小表,减少单表的数据量。同时避免数据类型不当、字段过多等原因导致数据库查询效率降低。 2)从索引层面,需要优化索引的数量、字段选择、索引类型等。应该将经常查询的字段, 阅读全文
posted @ 2024-07-05 11:57 Duancf 阅读(30) 评论(0) 推荐(0) 编辑
摘要:Explain执行计划分析 什么是执行计划? 执行计划 是指一条 SQL 语句在经过 MySQL 查询优化器 的优化后,具体的执行方式。 执行计划通常用于 SQL 性能分析、优化等场景。通过 EXPLAIN 的结果,可以了解到如数据表的查询顺序、数据查询操作的操作类型、哪些索引可以被命中、哪些索引实 阅读全文
posted @ 2024-07-05 11:48 Duancf 阅读(13) 评论(0) 推荐(0) 编辑
摘要:Log undo log(回滚日志):是 Innodb 存储引擎层生成的日志,实现了事务中的原子性,主要用于事务回滚和 MVCC; redo log(重做日志):是 Innodb 存储引擎层生成的日志,实现了事务中的持久性,主要用于掉电等故障恢复; binlog (归档日志):是 Server 层生 阅读全文
posted @ 2024-07-05 11:55 Duancf 阅读(10) 评论(0) 推荐(0) 编辑
摘要:事务 在理解事务的概念之前,接触数据库系统的其他高级特性还言之过早。事务就是一组原子性的SQL查询,或者说一个独立的工作单元。如果数据库引擎能够成功地对数据库应用该组查询的全部语句,那么就执行该组查询。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有的语句都不会执行。也就是说,事务内的语句 阅读全文
posted @ 2024-07-05 14:12 Duancf 阅读(9) 评论(0) 推荐(0) 编辑
摘要:慢查询 如何找到慢查询语句 要找出项目中的慢查询语句,可以通过几种方法,主要取决于你使用的数据库系统。以下是一些通用的步骤和针对MySQL和PostgreSQL数据库的具体方法: 通用步骤: 启用慢查询日志:大多数数据库管理系统都支持慢查询日志,通过配置可以记录执行时间超过指定阈值的查询。 分析日志 阅读全文
posted @ 2024-07-05 11:56 Duancf 阅读(106) 评论(0) 推荐(0) 编辑
摘要:隔离级别 下面介绍四种因为事务的并发产生的问题: 脏写 假设银行账户中有100元, 有事务A,B A事务把余额改为200,但还未提交 这时,B事务把余额改为300,提交, 如果A发生了回滚,那么账户余额回到100元,事务B无效。 脏写就是已经提交的事务的写操作因为另一个还未提交的事务的回滚而失去效果 阅读全文
posted @ 2024-07-12 15:49 Duancf 阅读(7) 评论(0) 推荐(0) 编辑
摘要:多版本并发控制 MVCC MVCC 只在 读取已提交(Read Committed)和 可重复读(Repeatable Read)两个事务级别下有效, 依靠ReadView,undo log,记录的隐藏字段实现, 用一句话概括MVVC的原理就是,在创建事务或者select的时候生成readview快 阅读全文
posted @ 2024-07-05 14:15 Duancf 阅读(20) 评论(0) 推荐(0) 编辑
摘要:[Mysql]持久化 阅读全文
posted @ 2024-07-05 21:39 Duancf 阅读(6) 评论(0) 推荐(0) 编辑
摘要:MySQL 的数据都是存在磁盘中的,那么我们要更新一条记录的时候,得先要从磁盘读取该记录,然后在内存中修改这条记录。那修改完这条记录是选择直接写回到磁盘,还是选择缓存起来呢? 当然是缓存起来好,这样下次有查询语句命中了这条记录,直接读取缓存中的记录,就不需要从磁盘获取数据了。 为此,Innodb 存 阅读全文
posted @ 2024-07-12 16:31 Duancf 阅读(13) 评论(0) 推荐(0) 编辑
摘要:这个问题我看网上有人做了实验,是in的效率会比or高 去查了官方文档 expr IN (value,...) Returns 1 (true) if expr is equal to any of the values in the IN() list, else returns 0 (false) 阅读全文
posted @ 2024-07-12 19:43 Duancf 阅读(7) 评论(0) 推荐(0) 编辑
摘要:共享锁 排他锁 表锁 行锁 意向锁 意向锁是表锁,为了协调行锁和表锁的关系,支持多粒度(表锁与行锁)的锁并存。 当有事务A有行锁时,MySQL会自动为该表添加意向锁,事务B如果想申请整个表的写锁,那么不需要遍历每一行判断是否存在行锁,而直接判断是否存在意向锁,增强性能。 悲观锁 乐观锁 间隙锁 间隙 阅读全文
posted @ 2024-07-16 21:18 Duancf 阅读(18) 评论(0) 推荐(0) 编辑
摘要:next-key lock 参考资料1 这一节我们通过实验验证next-key-lock在各种情况下的表现: 在唯一索引上的等值查询 我们利用主键展现这一特性 命中记录 下面我们来解释这张图发生了什么, 会话A 会话B 1 开启事务 开启事务 2 快照读整张表,查到所有数据 3 对id为10的数据进 阅读全文
posted @ 2024-07-17 20:00 Duancf 阅读(75) 评论(0) 推荐(0) 编辑
摘要:如何避免主从延迟? 读写分离对于提升数据库的并发非常有效,但是,同时也会引来一个问题:主库和从库的数据存在延迟,比如你写完主库之后,主库的数据同步到从库是需要时间的,这个时间差就导致了主库和从库的数据不一致性问题。这也就是我们经常说的主从同步延迟。 如果我们的业务场景无法容忍主从同步延迟的话,应该如 阅读全文
posted @ 2024-07-23 16:02 Duancf 阅读(60) 评论(0) 推荐(0) 编辑
摘要:InnoDB和MyISAM InnoDB和MyISAM是MySQL数据库系统中最常用的两种存储引擎。它们各自拥有不同的特性和优化点,适用于不同的应用场景。以下是它们之间的一些主要区别: 事务支持 InnoDB:支持事务(ACID兼容)。它提供了提交、回滚和崩溃恢复功能,非常适合处理大量的短期事务。I 阅读全文
posted @ 2024-07-24 10:36 Duancf 阅读(7) 评论(0) 推荐(0) 编辑
摘要:CHAR与VARCHAR CHAR(M)为固定长度字符串,在定义时指定字符串列长。 VARCHAR(M)是长度可变的字符串,M表示最大列长度,占用的空间为字符串的实际长度加1。 当检索到CHAR值时,尾部的空格将被删除。VARCHAR在值保存和检索时尾部的空格仍保留。 TEXT与BLOB 保存较大文 阅读全文
posted @ 2024-08-06 17:05 Duancf 阅读(3) 评论(0) 推荐(0) 编辑
摘要:大家都知道索引分聚集索引和非聚集索引,性别字段因为可重复肯定只能建立非聚集索引,然而因为非聚集索引叶子节点存储的是索引值和聚集索引值,需要回表。所以在性别这种辨别度较低的字段上建立索引,索引树可能只有两个节点,跟线性查找没有太大区别,并且因为回表的存在导致在聚集索引树和非聚集索引树来回切换反而导致查 阅读全文
posted @ 2024-08-07 19:26 Duancf 阅读(153) 评论(0) 推荐(0) 编辑

more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示