
mysql
文章平均质量分 73
SHENKEM
跳出舒适区
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
online ddl 期间dml会执行吗
MySQL 的 Online DDL 功能允许在执行 DDL (如 ALTER TABLE) 的同时,不阻塞并发的 DML (INSERT/UPDATE/DELETE) 操作,但具体行为取决于使用的算法和操作类型。原创 2025-06-30 16:39:45 · 428 阅读 · 0 评论 -
mysql mvcc
MVCC (Multi-Version Concurrency Control) 是 MySQL InnoDB 存储引擎实现高并发读写的核心技术,它通过数据多版本来避免读写冲突,同时保证事务的隔离性。原创 2025-06-30 15:33:26 · 314 阅读 · 0 评论 -
小表驱动大表更快吗,不是
"小表驱动大表"是通用原则,但在LEFT JOIN、特殊索引结构和特定数据分布下,可能会出现大表驱动更优的情况。优化器根据成本估算选择了更适合当前表结构和数据分布的执行计划。原创 2025-05-29 22:56:25 · 941 阅读 · 0 评论 -
sql优化
**组合索引策略**:遵循最左匹配原则(如索引 `(a,b,c)` 支持 `a=1`、`a=1 AND b=2`,但不支持单独 `b=2`)。- **索引覆盖**:将查询字段包含在索引中(如 `SELECT a,b FROM table`,索引设为 `(c,a,b)`)。- **常用列加索引**:对高频查询的 `WHERE`、`JOIN`、`ORDER BY` 列建立索引。- 关注 `type` 列:避免 `ALL`(全表扫描),目标至少为 `range` 或 `ref`。原创 2025-04-01 08:22:47 · 448 阅读 · 0 评论 -
mysql深度分页优化方案
深度分页的优化核心在于减少MySQL扫描的数据量,避免全表扫描。通过使用索引、游标分页、延迟关联等技术,可以显著提升分页查询的性能。根据具体的业务场景选择合适的优化方案。延迟关联通过先获取主键,再关联查询实际数据的方式,减少了回表次数和I/O操作,特别适合深度分页场景。通过合理设计索引和查询语句,可以显著提升MySQL分页查询的性能。原创 2025-03-03 18:16:30 · 1516 阅读 · 0 评论 -
MVCC(多版本并发控制)
后续的所有读操作都基于这个一致性视图,即使其他事务插入或删除了数据,当前事务也不会看到这些变化。这种机制在保证数据一致性的同时,提供了较高的并发性能,是 MySQL 默认的隔离级别。范围内的所有记录和间隙加锁,防止其他事务插入满足条件的新记录。:锁定索引记录之间的间隙,防止其他事务在间隙中插入新记录。由于间隙锁的存在,事务2的插入操作会被阻塞,从而避免幻读。提供一致性视图,确保事务在读取数据时看到的是稳定的快照。确保事务在读取数据时看到的是稳定的快照,避免了。锁定记录和间隙,防止其他事务插入新记录。原创 2025-02-09 11:07:35 · 606 阅读 · 0 评论 -
mysql事物隔离级别
MySQL的事务隔离级别定义了事务在并发操作时的可见性和一致性规则。-- 第二次读取,结果不一致。:使用记录锁和间隙锁(Next-Key Lock),避免不可重复读和幻读。:事务在执行期间看到的数据是一致的,即使其他事务修改了数据。:其他事务插入新数据时,可能导致当前事务读取到新插入的数据。:MySQL的默认隔离级别,适用于大多数需要高一致性的场景。MySQL的四种事务隔离级别提供了不同的并发控制机制。:同一事务中多次查询同一范围的数据,结果集不一致。:同一事务中多次读取同一数据,结果可能不一致。原创 2025-02-09 11:06:27 · 864 阅读 · 0 评论 -
mysql优化方案
索引:控制索引数量,函数,like,or(in 代替 or,in不要太多,分批500),null,注意字段类型。尽可能使用小的类型,比如:用bit存布尔值,用tinyint存枚举值等。能用数字类型,就不用字符串,因为字符的处理往往比数字要慢。小表驱动大表,exist 与 in,连接代替子查询。分批,JOB,充分利用索引,先查索引,再取数据。批量,分批,调用第三方接口,限制2000一批。长度可变的字符串字段,用varchar类型。长度固定的字符串字段,用char类型。增量查询,调用第三方接口,>原创 2025-01-15 12:21:12 · 279 阅读 · 0 评论 -
mysql 索引下推,举例说明
索引下推是 MySQL 的一个重要优化特性,旨在提高查询效率。它通过将部分查询条件下推到索引扫描阶段,减少了无效数据的读取,减少了内存操作,特别在处理大数据量时显著提高性能。在某些情况下,索引下推能够避免全表扫描,显著提高查询性能。索引下推的实现和效果依赖于查询条件、索引的结构和数据分布,因此实际效果可能会有所不同。原创 2025-01-06 13:21:00 · 930 阅读 · 0 评论 -
sql左关联查询,条件放在on后与where后区别
ON子句:用于控制联接的逻辑,决定了如何将左表和右表的记录匹配。将条件放在ON后,可以保留左表的所有记录,即使右表没有匹配的记录。WHERE子句:用于过滤查询结果,作用于整个结果集。将条件放在WHERE后,会在结果集中去除没有右表匹配的左表记录,甚至会改变LEFT JOIN为INNER JOIN。希望这个解释能帮助你更好地理解LEFT JOIN中ON和WHERE条件的区别!原创 2025-01-06 11:56:16 · 1277 阅读 · 0 评论 -
查询多级菜单名称sql实现方案
如果少于4级呢,查询结果null,通过函数concat_ws,可自动过滤为null的数据。默认只查询最多四级菜单,此方案弊端,多于四级无法查询到。现在知道最里层菜单ID,想查看上级菜单名称。原创 2023-06-16 16:12:17 · 1377 阅读 · 0 评论 -
mysql order by 索引问题综合分析
一,文章1总结:0,索引 与 查询条件 与 排序字段关系,Using filesort出现场景1.联合索引,最左匹配原则,不仅查询条件需要遵循,排序也需要遵循,查询+排序组合也要遵循2.extra 避免出现filesort,使用index排序3.关于排序算法,内存排序 还是 磁盘排序,缓冲区大小4.结论中,举例了,最左匹配的成功与否样例二,文章2此文主要说明以下问题1.为什么order by要加索引,从以下几个方面说明explan 是否使用索引key,扫描行数rows,extra优化。原创 2023-06-02 18:01:01 · 2876 阅读 · 0 评论 -
15个必知的Mysql索引失效场景,别再踩坑了!
也就是说,当Mysql发现通过索引扫描的行记录数超过全表的10%-30%时,优化器可能会放弃走索引,自动变成全表扫描。此时,索引失效的原因与第三种情况一样,都是因为数据库要先进行全表扫描,获得数据之后再进行截取、计算,导致索引索引失效。的含义为:表示索引使用的字节数,根据这个值可以判断索引的使用情况,特别是在组合索引的时候,判断该索引有多少部分被使用到非常重要。当然,还有其他一些是否走索引的规则,这与索引的类型是B-tree索引还是位图索引也有关系,就不再详细展开。的条件再走一次索引反而是浪费了。转载 2023-06-15 13:25:12 · 2917 阅读 · 1 评论 -
数据库的主键生成策略,你知道几种?
针对主库单点,如果有多个Master库,则每个Master库设置的起始数字不一样,步长一样,可以是Master的个数。比如:Master1 生成的是 1,4,7,10,Master2生成的是2, 5, 8, 11 Master3生成的是 3, 6, 9, 12。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。转载 2023-06-15 16:14:34 · 1271 阅读 · 0 评论 -
MySQL中生成唯一值性质的工具UUID()和自增序列
l 第五组值是一个IEE 802的节点标识值,它是空间上唯一的。假如主机没有网卡,或者我们不知道如何在某系统下获得机器地址,则空间唯一性就不能得到保证,即使这杨,出现重复值的机率还是非常小的。l 多次调用或执行得到的后2组值相同,若把mysqld服务器关闭,重新启动之后,会发现第四组的组与未重启前的值发生变化,然后一直不变化,只要重新启动mysqld服务就会发生变化。UUID()函数产生的值,并不适合作为InnoDB引擎表的主键,至于详细的原因,请阅读文章。l 前三组值是时间戳换算过来的;转载 2023-06-15 15:36:58 · 1010 阅读 · 0 评论 -
mysql语句:group by后显示using filesort之解决方法
如果你希望使用语句的时候避免出现, 那么只需在其后追加语句即可, 即:1、默认情况下,mysql在使用group by之后,会产生临时表,而后进行排序(此处排序默认是快排),这会消耗大量的性能。2、本质是3、默认会按照column分组, 然后根据column升序排列;则默认按照分组,然后根据标的主键升序排列。转载 2023-06-15 15:30:03 · 612 阅读 · 0 评论 -
记录一次数据库异常,事物未回滚
事物未回滚原创 2023-02-23 14:20:03 · 190 阅读 · 0 评论 -
SQL之UNION ALL用法前置条件——使用NULL凑齐字段
union union all NULL凑字段转载 2022-11-29 17:16:08 · 965 阅读 · 0 评论 -
我说MySQL里每张表不要超过100w数据
MVCC原创 2022-11-25 15:00:14 · 193 阅读 · 0 评论 -
1亿条数据批量插入 MySQL,哪种方式最快?
大批量数据写入操作转载 2022-11-25 14:36:23 · 513 阅读 · 0 评论 -
数据库新增了一条数据,但是查询不到,是代码玄学么?
写入无法查询问题转载 2022-11-14 16:49:53 · 1516 阅读 · 0 评论 -
mysql四种隔离级别-测试
数据库隔离级别测试转载 2022-11-14 16:43:49 · 201 阅读 · 0 评论 -
Spring的事务原理分析、与mysql的事务关系
spring事物 mysql事物转载 2022-11-14 16:20:19 · 428 阅读 · 0 评论 -
表数据过大,查询数据总量太慢怎么办
mysql查询大表数据总量的方案原创 2022-11-02 13:12:44 · 794 阅读 · 0 评论 -
sql查询优化or篇
or查询优化转载 2022-10-18 16:19:10 · 1566 阅读 · 0 评论 -
为啥有些limit那么慢?
limit查询慢转载 2022-10-18 16:17:59 · 406 阅读 · 0 评论 -
史上最详细的mysql底层和explan type和type中index和all的区别
explain type index 与 all转载 2022-10-18 14:37:39 · 725 阅读 · 0 评论 -
mysql 字段值分布很少的字段要不要加索引
mysql 字段值分布很少的字段要不要加索引转载 2022-09-22 09:41:51 · 1081 阅读 · 0 评论 -
MySQL批量更新死锁案例分析(转载)
死锁转载 2022-06-27 15:25:10 · 1099 阅读 · 0 评论 -
数据库技术:MySQL 加锁和死锁解析
死锁转载 2022-06-27 15:11:23 · 514 阅读 · 0 评论 -
MySQL造成更新死锁及插入死锁的几种常见原因
死锁转载 2022-06-27 14:46:13 · 2878 阅读 · 0 评论 -
mysql的update更新及delete删表记录where不带索引字段导致死锁
死锁转载 2022-06-27 14:39:42 · 1809 阅读 · 0 评论 -
记一次mysql数据库死锁实验
死锁转载 2022-06-27 14:23:38 · 244 阅读 · 0 评论 -
mysql死锁的例子_MySQL数据库的一次死锁实例分析
mysql 死锁转载 2022-06-27 14:17:58 · 1386 阅读 · 0 评论 -
sql优化之Explain sql详解
explan转载 2022-06-27 10:46:45 · 1799 阅读 · 0 评论 -
记录一次mysql死锁
mysql死锁原创 2022-06-27 08:51:17 · 1840 阅读 · 3 评论 -
mysql写入后,无法读取到数据问题
一,MySQL同一事务中先更新在查询,结果与数据库中不一致问题问题背景:java 代码在同一个事务中先执行update 再执行select 发现select 的数据是update之后的结果,此时事务还没有提交, 但直接查询数据库,数据库的数据还没有发生变更.问题结论:在数据库事务是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行,这是一种机制,用以维护数据库的完整性。在你这个事务单元中存在两个操作,一个是update,一个是select;你前面的update执行成功了原创 2022-05-31 09:33:33 · 1103 阅读 · 1 评论 -
mysql如何获取慢SQL,以及慢查询的解决方式
浅谈MySQL中优化sql语句查询常用的30种方法1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列...原创 2022-01-06 17:04:36 · 1735 阅读 · 0 评论 -
MySQL百万级数据分页查询及优化
点击蓝色“程序猿DD”关注我哟加个“星标”,不忘签到哦来源:https://www.cnblogs.com/geningchao关注我,回复口令获取可获取独家整理的学习资料:-001:领取《Spring Boot基础教程》-002:领取《Spring Cloud基础教程》- 003:领取《Java开发规范1.5》(最新版)方法1: 直接使用数据库提供的SQL语句 语句样式:MySQL中,可用如下方法: SELECT * FROM 表名称 LIM...转载 2021-12-30 23:00:24 · 245 阅读 · 0 评论 -
为什么开发人员必须要了解数据库锁?
1.锁?1.1何为锁锁在现实中的意义为:封闭的器物,以钥匙或暗码开启。在计算机中的锁一般用来管理对共享资源的并发访问,比如我们java同学熟悉的Lock,synchronized等都是我们常见的锁。当然在我们的数据库中也有锁用来控制资源的并发访问,这也是数据库和文件系统的区别之一。1.2为什么要懂数据库锁?通常来说对于一般的开发人员,在使用数据库的时候一般懂点DQL(select),DML(insert,update,delete)就够了。小明是一个刚刚毕业在互联网公司工作的Java开发转载 2021-12-17 12:45:56 · 196 阅读 · 0 评论