![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 83
小厂程序员
https://fofcn.tech/
太阳会落山,但明天又会升起!
展开
-
MySQL SQL基础入门-你想要的我尽可能覆盖全
关系型数据是一种数据库类型,关系型数据库存储和提供数据都是相互关联的。关系型数据库是通过关系模型来组织数据的。通常关系型数据通过多张表中的行和列来组织关系。表中的行也叫记录或者元组。列也叫属性。数据库是在按照数据模型来组织,存储和管理数据的集合。数据库一般由很多表组成,这些表之间有直接或者间接的关系。我们可以把表定义为图中的节点,关系为他们之间的边。数据库管理系统是数据库系统的核心部分,他复杂各种CRUD,没有它根本就不会存在数据库系统。原创 2024-04-12 22:52:44 · 1914 阅读 · 0 评论 -
MySQL limit N offset M 速度慢?来实际体验下
在对大表进行LIMIT和OFFSET操作时,随着偏移量(OFFSET)的增加,性能会显著下降。由于 MySQL 必须首先跳过OFFSET之前的所有行,才能获取到LIMIT指定的数据量,因此当OFFSET值较大时,这会导致显著的性能开销,尤其是在没有对排序列添加索引的情况下。通过性能测试得出,即使LIMIT的值相同,越大的OFFSET会使 MySQL 扫描的行数越多,因此执行时间越长。当没有索引支持ORDER BY子句时,即使是小范围的LIMIT查询,随着OFFSET的增加,查询性能会急剧下降。原创 2024-04-10 22:16:33 · 1213 阅读 · 0 评论 -
MySQL 8 交集和差集
MySQL 交集和差集转载 2024-04-10 20:52:25 · 46 阅读 · 0 评论 -
一次MySQL事务的旅程:Buffer Pool, Binlog, Redo Log揭秘
MySQL中一次事务涉及了各种Buffer,Log和表空间,主要涉及:Buffer Pool, Binlog, Undo Log, Redo Log以及表空间。我们来探讨下。Buffer Pool主要存放在内存中,它是一个缓存区域,用来缓存InnoDB读取的数据页和索引页。此外,它也暂存了那些待写入磁盘的修改后的数据页,也就是“脏页”。原创 2024-04-02 20:34:25 · 1195 阅读 · 0 评论 -
MySQL 8.0 的魔法:即刻列操作——再也不用等待了
在MySQL 8.0.12版本之后我们不用为大表添加列问题担心了,然后MySQL 8.0.28版本之后我们不用为大表删除列而担心了。原创 2024-03-31 21:02:42 · 920 阅读 · 0 评论 -
解决MySQL幻读?可重复读隔离级别背后的工作原理
在大多数情况下,MySQL的可重复读(RR)事务隔离级别为绝大多数业务场景提供了适当的一致性保证,并有效地通过MVCC和Next-Key Locks机制解决了幻读问题。尽管如此,RR隔离级别可能会由于锁机制而导致某些性能问题,特别是在密集型的写操作或高并发场景时。如果业务需求对数据的实时一致性要求不是特别严格或者你可以在应用层处理这些问题,并且更加关注于系统性能,可以考虑将事务隔离级别降低到读提交(RC)。读提交隔离级别在某些情况下可以提供更高的并发性,因为它只在必要时锁定数据行,以此减少锁争用。原创 2024-03-30 23:08:58 · 1666 阅读 · 1 评论 -
MySQL 锁合集与事务隔离级别
2. [排他锁(X 锁): 允许获得排他锁的事务更新数据,阻止其他事务取得相同数据集的共享读锁和排他写锁](https://fofcn.tech/2023/08/09/mysql-innodb-%e5%85%b1%e4%ba%ab%e8%af%bb%e9%94%81%e4%b8%8e%e6%8e%92%e4%bb%96%e5%86%99%e9%94%81%ef%bc%88s-lock-and-x-lock%ef%bc%89/)排他锁是比共享锁更严格的锁,当事务持有排他锁时,它可以对数据行进行更新操作。原创 2024-03-29 21:21:52 · 573 阅读 · 1 评论 -
自增不再简单:深入探索MySQL自增ID的持久化之道
数据持久化和一致性的重要性设计系统时要考虑到异常情况,如果没有考虑到异常情况,出一些意料之外的问题你会很蒙蔽全局唯一ID的重要性,这个ID非常重要,要是混乱了,你的饭碗可能瞬间都没了,而且后面的就刷库吧。原创 2024-03-25 21:31:06 · 1267 阅读 · 0 评论 -
告别MySQL查询缓存:了解8.0版本改革背后的真相!
MySQL 从8.0版本开始彻底移除了查询缓存(Query Cache),是不是我们用太多Redis导致MySQL的查询缓存没有了用武之地?其实并不是这样,主要还是因为MySQL查询缓存对MySQL的可扩展性问题和性能瓶颈的影响。原创 2024-03-24 21:37:01 · 1452 阅读 · 0 评论 -
MySQL 排序的那些事儿
如果涉及排序,可以把sort_buffer_size设置大点如果使用Tmpfs就把MySQL物理内存配置的大点如果使用xfs/ext4就用高速SSD硬盘。原创 2024-03-23 23:59:23 · 1492 阅读 · 3 评论 -
MySQL 8.0-索引- 不可见索引(invisible indexes)
好了,那我们可以对不可见索引下定义了。不可见索引是MySQL 8.0引入的一个索引开关,主要是用来控制优化器在进行SQL优化时是否使用该索引,如果对索引设置了不可见,那么SQL优化器就不会使用这个索引。也就是说,这个索引对SQL优化器透明或者SQL优化器眼瞎看不到它。原创 2024-03-23 23:55:42 · 1025 阅读 · 0 评论 -
你是不是MySQL老司机?来看看这些explain结果你能解释吗?[害羞]
表结构表数据行数这里Extra为什么是Filesort?这里Extra为什么Using index从这儿你可以猜出我MySQL的版本吗?这里Extra为什么是NULL?这里Extra为什么是Filesort?你知道平时SQL该怎么写了吗?原创 2024-03-23 22:40:09 · 178 阅读 · 0 评论 -
MySQL高效连接查询秘籍:掌握这四种Join算法
两个for循环进行简单联接 – Nested Loop Join排序好的数组,二分查找 -Index Join对数组进行排序,查找匹配 – Sort Merge Join对数组进行哈希,哈希查找 – Hash JoinMySQL主要使用了以上的Join算法,我们只是大概模拟,MySQL实现比我们代码复杂多了。算法名称时间复杂度描述O(M * N)适合小数据集,大数据集很慢。Index JoinO(M log N)适用于有索引的数据集。原创 2024-03-23 17:09:14 · 779 阅读 · 0 评论 -
MySQL InnoDB限制
MySQL InnoDB 限制 表 行 列 表空间原创 2023-03-17 20:00:00 · 813 阅读 · 0 评论 -
MySQL ONLY_FULL_GROUP_BY
MySQL only full group by any_value原创 2023-03-13 20:00:00 · 1398 阅读 · 0 评论 -
MySQL 事务与事务隔离级别
1、 事务事务是由一系列SQL组成,是数据库的原子操作。事务内的一些列SQL要么全部执行完成,要么全部执行失败,不存在部分执行完成部分执行失败的情况。MySQL 事务示例:-- 创建用户余额表CREATE TABLE `user_balance` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', `balance` int NOT NULL COMMENT '余额', PRIMARY KEY (`id`)) ENGINE = InnoD原创 2022-03-03 23:14:11 · 496 阅读 · 0 评论 -
MySQL InnoDB中的锁-自增锁(AUTO-INC Locks)
MySQL InnoDB 锁 自增锁AUTO-INC Locks原创 2022-03-02 23:33:55 · 2130 阅读 · 0 评论 -
MySQL InnoDB中的锁-插入意向锁(Insert Intention Lock)
MySQL InnoDB中的锁-插入意向锁(Insert Intention Lock)原创 2022-03-01 23:56:00 · 9346 阅读 · 4 评论 -
MySQL InnoDB中的锁-临键锁(next-key lock)
锁列表共享与列排他锁意向锁记录锁间隙锁Next-Key锁插入意向锁AUTO-INC锁这次我们只来讨论和实验意向锁。Next-Key锁概述Next-Key锁称为临键锁。临键锁可以理解为锁住的是索引本身以及索引之前的间隙,是一个左开右闭的区间。当 SQL 执行按照非唯一索引进行数据的检索时,会给匹配到行上加上临键锁。锁定区间实验以下实验基于MySQL 8.0.x版本。建表语句:CREATE TABLE `sys_user` ( `id` int NOT NULL AUTO原创 2022-02-28 22:34:11 · 8995 阅读 · 14 评论 -
MySQL InnoDB中的锁-间隙锁(Gap Lock)
MySQL InnoDB 锁 间隙锁Gap Lock原创 2022-02-27 02:03:17 · 3694 阅读 · 0 评论 -
MySQL COUNT 函数及其优化
MySQL COUNT 优化 MyISAM InnoDB原创 2022-02-26 00:33:21 · 2269 阅读 · 0 评论 -
MySQL InnoDB中的锁-记录锁
MySQL InnoDB 锁 记录锁 record lock原创 2022-02-25 01:10:50 · 577 阅读 · 2 评论 -
MySQL 覆盖索引(Cover Index)
MySQL 覆盖索引(Cover Index)原创 2022-02-23 22:32:28 · 7217 阅读 · 0 评论 -
MySQL InnoDB 共享读锁与排他写锁
MySQL InnoDB X S 共享锁 排他锁 shared lock exclusive lock S锁 X锁原创 2022-02-21 14:44:49 · 587 阅读 · 0 评论 -
MySQL存储引擎
MySQL 存储引擎 InnoDB MyISAM Memory CSV ARCHIVE BLCKHOLE MERGE FEDERATED EXAMPLE原创 2022-02-21 11:32:33 · 623 阅读 · 0 评论 -
MySQL-B-Tree和哈希索引比较
概述理解B-Tree和哈希索引数据结构有助于预测不同的查询在不同的存储引擎如何使用这些索引来执行查询,尤其是MEMORY存储引擎可以让你选择B-tree或哈希索引。B-Tree索引特性哈希索引特性B-Tree索引特性B-Tree可以使用的操作符有:=,>,>=,<,<=,BETWEEN。如果LIKE的参数不以通配符开始,B-Tree索引也可以用于LIKE比较。例如,下面的SELECT语句会使用索引:SELECT * FROM tbl_name WHERE key_co原创 2022-02-18 16:32:05 · 174 阅读 · 0 评论 -
MySQL Explain
概述本文主要说明MySQL EXPLAIN用途、输出字段说明、Join Type和Extra及实验。MySQL中explain语句是让你知道MySQL的执行计划,也是为你提供优化器是如何优化你的SQL的。在实际业务中,我们主要用EXPLAIN来分析SELECT语句为什么会慢,为什么这个SELECT查询没有使用索引,或者SELECT语句使用了查询为什么依然很慢等等。功能explain用于想用户提供MySQL如何执行SQL语句。可以用于分析的语句有SELECT、DELETE、INSERT、UPDA原创 2022-02-18 16:29:33 · 150 阅读 · 0 评论 -
InnoDB限制
InnoDB 限制 Limits MySQL原创 2022-02-17 14:39:40 · 1064 阅读 · 0 评论 -
使用filesort来满足ORDER BY (Use of filesort to Satisfy ORDER BY )
filesort ORDER BY (Use of filesort to Satisfy ORDER BY ) MySQL翻译 2022-02-17 11:37:49 · 158 阅读 · 0 评论 -
MySQL-优化INSERT、UPDATE和DELETE
MySQL MyISAM INSERT UPDATE DELETE Optimizing原创 2022-02-17 11:35:46 · 1775 阅读 · 0 评论