随笔分类 -  数据库

摘要:目录方案一:游标分页方案二:延迟关联(针对超大 offset 的优化)方案三:Elasticsearch 等搜索引擎(专业方案)方案四:子查询优化(特定场景)方案五:数据归档 + 分表(架构层解决)总结与选型建议 当数据量达到千万级别时,传统的 LIMIT offset, size 分页(尤其是翻到 阅读全文
posted @ 2026-04-14 15:30 LARRY1024 阅读(56) 评论(0) 推荐(0)
摘要:目录场景1:每个班级成绩前三的学生准备数据查询语句解析整体结构内部查询(CTE 部分)FROM 和 JOIN 部分WHERE 过滤窗口函数(核心)PARTITION BY s.class_id(分区)ORDER BY sc.score DESC(排序)DENSE_RANK()(密集排名)SELECT 阅读全文
posted @ 2026-04-14 11:48 LARRY1024 阅读(5) 评论(0) 推荐(0)
摘要:ROW_NUMBER()、RANK()、DENSE_RANK() 这三个都是 SQL 中的窗口函数,用于为结果集中的每一行分配一个排名。它们的核心区别在于如何处理并列(相同排序值) 以及后续排名是否连续。 快速对比表 函数 并列处理 排名是否连续 举例(分数: 100,100,90) ROW_NUM 阅读全文
posted @ 2026-04-14 11:42 LARRY1024 阅读(17) 评论(0) 推荐(0)
摘要:目录查询计划查询计划输出格式解释输出列列格式idselect_typetypepossible_keyskeyref 查询计划 根据表、列、索引的详细信息以及子句中的 WHERE 条件不同,MySQL 优化器会考虑多种技术来有效地执行 SQL 查询中涉及的查找。 例如, 对大表进行查询可能无需读取所 阅读全文
posted @ 2024-01-05 15:11 LARRY1024 阅读(362) 评论(0) 推荐(0)
摘要:目录简介索引失效场景未遵循最左前缀匹配导致索引失效索引列参与运算索引列使用了函数类型转换导致索引失效OR 引起的索引失效负向查询导致索引失效索引字段使用 IS NOT NULL 导致失效两列数据做比较会导致索引失效 简介 发生索引失效的情况: 当我们使用左或者左右模糊匹配的时候,即 like %xx 阅读全文
posted @ 2023-09-14 17:03 LARRY1024 阅读(185) 评论(0) 推荐(0)
摘要:[TOC] # InnoDB 磁盘架构 ## 表 ### 创建 InnoDB 表 建表语句: ```sql mysql> CREATE TABLE t1 (a INT, b CHAR (20), PRIMARY KEY (a)) ENGINE=InnoDB; ``` 默认情况下,InnoDB 表会被 阅读全文
posted @ 2023-08-25 17:20 LARRY1024 阅读(91) 评论(0) 推荐(0)
摘要:[TOC] # InnoDB 存储引擎 - MySQL Server 管理 - MySQL Server Logs - The Binary Log - 优化 - SQL 语句优化 - SELECT 语句优化 - 索引条件下推优化 - 避免全表扫描 - 索引优化 - 数据结构优化 - InnoDB 阅读全文
posted @ 2023-08-25 15:20 LARRY1024 阅读(90) 评论(0) 推荐(0)
摘要:[TOC] # InnoDB 磁盘 I/O InnoDB 尽可能使用异步磁盘 I/O,通过创建多个线程来处理 I/O 操作,同时允许在 I/O 仍在进行时继续进行其他数据库操作。 - 在 Linux 和 Windows 平台上,InnoDB使用可用的操作系统和库函数来执行“本机”异步 I/O。 - 阅读全文
posted @ 2023-08-25 11:13 LARRY1024 阅读(219) 评论(0) 推荐(0)
摘要:[TOC] # 死锁 死锁是指不同事务无法继续进行的情况,因为每个事务都持有另一个事务需要的锁。因为两个事务都在等待资源变得可用,所以都不会释放它所持有的锁。 当事务锁定多个表中的多个行(通过 UPDATE 或 SELECT ... FOR UPDATE 等语句)但顺序相反时,可能会发生死锁。当此类 阅读全文
posted @ 2023-08-24 19:39 LARRY1024 阅读(164) 评论(0) 推荐(0)
摘要:[TOC] # InnoDB 中不同 SQL 语句设置的锁 [加锁读(locking read)](https://dev.mysql.com/doc/refman/8.1/en/glossary.html#glos_locking_read)、UPDATE 语句或者 DELETE 语句通常会对在 阅读全文
posted @ 2023-08-24 17:18 LARRY1024 阅读(100) 评论(0) 推荐(0)
摘要:[TOC] # InnoDB 事务模型 InnoDB 事务模型旨在将[多版本(multi-versioning)](https://dev.mysql.com/doc/refman/8.1/en/glossary.html#glos_mvcc) 数据库的最佳属性与传统的两阶段锁定结合起来。 Inno 阅读全文
posted @ 2023-08-23 15:23 LARRY1024 阅读(103) 评论(0) 推荐(0)
摘要:目录InnoDB 的锁共享锁和排它锁意向锁总结记录锁间隙锁总结Next-Key 锁总结插入意向锁总结AUTO-INC 锁空间索引的断言锁加锁总结加锁规则 InnoDB 的锁 InnoDB 使用的锁类型包括: 共享锁(shared lock)和排它锁(exclusive lock) 意向锁(inten 阅读全文
posted @ 2023-08-18 18:09 LARRY1024 阅读(96) 评论(0) 推荐(0)
摘要:目录Doublewrite Buffer刷盘策略Linux 上的刷新策略Windows 上的刷新策略刷新策略总结双写缓冲区的配置innodb_doublewriteinnodb_doublewrite_dirinnodb_doublewrite_filesflush 链表双写文件LRU 链表双写文件 阅读全文
posted @ 2023-08-17 19:47 LARRY1024 阅读(551) 评论(0) 推荐(0)
摘要:目录TablespaceSystem TablespaceFile-Per-Table TablespacesFile-Per-Table Tablespace Data Files优缺点优点缺点General Tablespaces通用表空间的行格式 Tablespace System Table 阅读全文
posted @ 2023-08-17 14:51 LARRY1024 阅读(101) 评论(0) 推荐(0)
摘要:目录InnoDB 架构概念pagepage sizecheckpointInnoDB 内存架构Buffer Pool缓冲池 LRU 算法相关配置innodb_buffer_pool_sizeinnodb_buffer_pool_instances缓冲池优化Change Buffer配置变更缓冲inn 阅读全文
posted @ 2023-08-14 18:21 LARRY1024 阅读(198) 评论(0) 推荐(0)
摘要:目录InnoDB 的主要优势使用 InnoDB 表的好处InnoDB表的最佳实践验证 InnoDB 是否为默认存储引擎 InnoDB 的主要优势 InnoDB 的主要优势: 其 DML 操作遵循 ACID 模型,事务具有提交、回滚和崩溃恢复功能,以保护用户数据。 行级锁定和 Oracle 风格的一致 阅读全文
posted @ 2023-08-14 11:36 LARRY1024 阅读(151) 评论(0) 推荐(0)
摘要:目录MySQL一条SQL语句的执行过程开启事务两阶段提交MySQL的两阶段提交过程异常重启会出现什么现象?两阶段提交的缺点组提交组提交的过程MySQL 磁盘 I/O 很高的优化方法 MySQL MySQL分为 Server 层 与 存储引擎层。 Server 层:包括连接器、查询缓存、分析器、优化器 阅读全文
posted @ 2023-03-28 22:38 LARRY1024 阅读(1613) 评论(0) 推荐(0)
摘要:[TOC] # 分类 MySQL Server 主要有以下几类日志: | 日志类型 | 作用 | | | | | 错误日志(Error log) | 记录启动、运行、停止 mysqld 时遇到的问题 | | 查询日志(General query log) | 已建立的客户端连接和从客户端收到的语句 阅读全文
posted @ 2023-03-28 21:40 LARRY1024 阅读(170) 评论(0) 推荐(0)
摘要:目录InnoDB架构缓冲池(Buffer Pool)数据预读缓冲池(Buffer Pool)简介Buffer Pool 的管理空闲页(Free Page)脏页(Dirty Page)小结InnoDB 的缓存淘汰策略传统 LRU 算法的缺点InnoDB如何解决预读失效的问题InnoDB如何解决 Buf 阅读全文
posted @ 2023-03-27 22:26 LARRY1024 阅读(617) 评论(0) 推荐(0)
摘要:目录InnoDB 多版本并发控制多版本控制和二级索引共享锁和排它锁当前读和快照读当前读快照读Read ViewRead Veiw 的生成流程总结 InnoDB 多版本并发控制 InnoDB 是一个多版本(multi-version)存储引擎,它会保存被修改行的旧版本信息,以支持并发和回滚等事务功能, 阅读全文
posted @ 2023-03-24 23:03 LARRY1024 阅读(188) 评论(0) 推荐(0)