
MySQL 篇
文章平均质量分 97
深入了解 MySQL 数据库的知识
小扳
有一天,小扳手走进了一家五金店。它看到了各种各样的工具,有锤子、钳子、螺丝刀等等。小扳手觉得自己在这里太小了,不起眼,很容易被忽视。
展开
-
MySQL 篇-深入了解 InnoDB 引擎的逻辑存储结构、架构、事务原理、MVCC 原理分析(RC 级别、RR 级别)
需要注意的是,此时修改之后的数据页在缓冲区中,是根据一定的时间才将脏数据页刷新到磁盘中,而不是数据修改完之后马上刷新的,也不是提交事务完之后马上提交的。2)Change Buffer:更改缓冲区(针对于非唯一的二级索引页),在执行 MDL 语句时,如果这些数据 Page 没有在 Buffer Pool 中,不会直接操作磁盘,而会将数据变更存放到更改缓冲区 Change Buffer 中,在未来数据被读取时,再将数据合并恢复到 Buffer Pool 中,再将合并后的数据刷新到磁盘中。原创 2024-10-11 10:46:24 · 17326 阅读 · 100 评论 -
MySQL 篇-深入了解 MySQL 锁的机制(表锁、意向锁、行锁、间隙锁、临键锁等)
对于一张表进行数据的增删改的时候,会自动加上 shared_write 锁,而进行查询的时候,会自动加上 share_read 锁,对于 shared_write 与 shared_read 都是兼容的。可以发现,在 3 加上了临键锁,将 3 的行数据锁上,还把 3 之前的全部间隙锁上,再有 3 的行锁,将 3 的行数据锁上,再接着将 3 - 7 之间的全部间隙锁上。此时锁的类型为间隙锁,将 id 为 8 - 10 之间的空隙锁起来了,而 id 为 8 和 10 的行数据不会被锁起来,锁的只是间隙。原创 2024-10-10 10:06:40 · 1731 阅读 · 81 评论 -
MySQL 篇-深入了解视图、SQL 优化(主键优化、order by 优化、group by 优化、update 优化等)
在对数据进行修改的时候,条件中的字段是存在索引且没有失效的时候,则会对索引进行加锁,也就是说其他线程再来对该行数据进行修改的时候会阻塞等待,直到锁被释放。只不过,在视图中进行增删改查的操作之前,可以对条件进行检查,满足条件就可以在表中操作数据,需要注意的是,实际是对表中的数据进行操作,视图只是映射基表中的数据。但是,对于多个字段的排序的方式不同,就需要在创建索引的时候,分别指定的排序方式,否则在查询的时候,没有对应的索引排序方式,就会走全表查询,使用 using filesore 的方式,效率较低。原创 2024-10-08 10:15:09 · 7572 阅读 · 93 评论 -
MySQL 篇-深入了解存储引擎、索引(InnoDB 索引结构 B+Tree、索引使用规则)
索引是帮助 MySQL 高效获取数据的有序的数据结构。在数据之外,数据系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用指向数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。索引的优缺点:优点:1)提高数据检索的效率,降低数据库的 IO 成本。2)通过索引列对数据进行排序,降低数据排序的成本,降低 CPU 的消耗。缺点:1)索引列也是要占用空间的。原创 2024-10-06 19:50:43 · 3681 阅读 · 76 评论 -
MySQL 篇- Java 连接 MySQL 数据库并实现数据交互
JDBC(Java Database Connectivity)是 Java 编程语言用于与数据库进行交互的标准 API。它提供了一种统一的方式来访问不同数据库系统,并执行 SQL 查询、更新和管理数据库。通过 JDBC,开发人员可以轻松地连接到数据库、执行 SQL 查询、管理事务、处理异常等,实现与数据库的数据交互和管理。简单来说,Java 提出的一套关于数据库操作的接口,各个数据库厂商要把自己的 API 对接到适配到 JDBC 上。程序元只需要掌握一套 API 就原创 2024-03-17 09:39:14 · 25912 阅读 · 53 评论 -
MySQL 篇-深入了解事务四大特性及原理
用简单通俗的话来说,将多条 SQL 语句打包在一起并作为一个逻辑单元执行,可以构成一个事务,如果某一条语句出现错误,则进行回滚操作,最终可以使得数据回复到原来的样子;如果 “打包” 在一起的语句都没有出现错误,则进行提交操作,数据就会进行相应的变化并保持持久性。原创 2024-03-14 17:13:17 · 3099 阅读 · 61 评论 -
MySQL 篇-深入了解索引的内部结构(哈希表、红黑树与 B+ 树)
实际上,在 innodb 存储引擎中底层的数据结构就是 B+ 树的结构,就会按照主键的索引的 B+ 树的叶子节点来保存每一行的数据。如果表中已经创建了主键,自然是通过已经创建的主键索引的 B+ 树来组织所有行;如果没有创建主键,MySQL 其实生成了一个隐藏的主键,按照隐藏主键构造的 B+ 树来组织行。原创 2024-03-12 19:22:00 · 3312 阅读 · 51 评论 -
MySQL 篇-快速了解事务、索引
将 SQL 每一条语句都 “打包” 起来一起执行,如果某一条语句出现错误,则进行回滚操作,最终可以使得数据回复到原来的样子;如果 “打包” 在一起的语句都没有出现错误,则进行提交操作,数据就会进行相应的变化并保持持久性。原创 2024-03-09 08:59:03 · 2720 阅读 · 101 评论 -
MySQL 篇-深入了解多表设计、多表查询
多表设计是指在数据库中将数据分散存储在多个表中的设计方法。这种设计方法通常用于将数据按照不同的实体或属性进行划分,以便更好地组织和管理数据。在多表设计中,不同的表之间通常会通过外键来建立关联关系,从而实现数据之间的引用和关联。这种设计方法有助于减少数据冗余、提高数据的一致性和完整性,并且可以更好地支持数据的查询和分析。原创 2024-03-06 15:23:55 · 7677 阅读 · 114 评论 -
MySQL 篇-深入了解 DML、DQL 语言(二)
DML(数据操作语言)是SQL(结构化查询语言)的一个子集,用于在数据库中操作数据。DML命令包括INSERT、UPDATE、DELETE和MERGE,用于向数据库表中添加、修改或删除数据。DQL(数据查询语言)也是SQL的一个子集,用于从数据库中检索数据。DQL命令包括SELECT,用于根据指定的条件从一个或多个表中检索数据。总而言之,DML用于操作数据库中的数据,而DQL用于查询和检索数据库中的数据。原创 2024-02-28 15:32:51 · 2589 阅读 · 90 评论 -
MySQL 篇-深入了解 DDL 语言(一)
详细讲解:DDL 语言 — 定义数据库操作 、DDL 语言 — 定义表格操作原创 2024-02-26 11:41:58 · 5333 阅读 · 83 评论