合集-MySQL
摘要:[TOC] # InnoDB 存储引擎 - MySQL Server 管理 - MySQL Server Logs - The Binary Log - 优化 - SQL 语句优化 - SELECT 语句优化 - 索引条件下推优化 - 避免全表扫描 - 索引优化 - 数据结构优化 - InnoDB
阅读全文
摘要:目录InnoDB 的主要优势使用 InnoDB 表的好处InnoDB表的最佳实践验证 InnoDB 是否为默认存储引擎 InnoDB 的主要优势 InnoDB 的主要优势: 其 DML 操作遵循 ACID 模型,事务具有提交、回滚和崩溃恢复功能,以保护用户数据。 行级锁定和 Oracle 风格的一致
阅读全文
摘要:[TOC] # 事务 事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态。事务是逻辑上的一组操作,要么都执行,要么都不执行。 事务就是一组原子性的操作,这些操作要么全部发生,要么全部不发生。事务把数据库从一种一致性状态转换成
阅读全文
摘要:目录MySQL一条SQL语句的执行过程开启事务两阶段提交MySQL的两阶段提交过程异常重启会出现什么现象?两阶段提交的缺点组提交组提交的过程MySQL 磁盘 I/O 很高的优化方法 MySQL MySQL分为 Server 层 与 存储引擎层。 Server 层:包括连接器、查询缓存、分析器、优化器
阅读全文
摘要:目录InnoDB 多版本并发控制多版本控制和二级索引共享锁和排它锁当前读和快照读当前读快照读Read ViewRead Veiw 的生成流程总结 InnoDB 多版本并发控制 InnoDB 是一个多版本(multi-version)存储引擎,它会保存被修改行的旧版本信息,以支持并发和回滚等事务功能,
阅读全文
摘要:目录InnoDB 架构概念pagepage sizecheckpointInnoDB 内存架构Buffer Pool缓冲池 LRU 算法相关配置innodb_buffer_pool_sizeinnodb_buffer_pool_instances缓冲池优化Change Buffer配置变更缓冲inn
阅读全文
摘要:目录InnoDB架构缓冲池(Buffer Pool)数据预读缓冲池(Buffer Pool)简介Buffer Pool 的管理空闲页(Free Page)脏页(Dirty Page)小结InnoDB 的缓存淘汰策略传统 LRU 算法的缺点InnoDB如何解决预读失效的问题InnoDB如何解决 Buf
阅读全文
摘要:[TOC] # InnoDB 磁盘架构 ## 表 ### 创建 InnoDB 表 建表语句: ```sql mysql> CREATE TABLE t1 (a INT, b CHAR (20), PRIMARY KEY (a)) ENGINE=InnoDB; ``` 默认情况下,InnoDB 表会被
阅读全文
摘要:目录TablespaceSystem TablespaceFile-Per-Table TablespacesFile-Per-Table Tablespace Data Files优缺点优点缺点General Tablespaces通用表空间的行格式 Tablespace System Table
阅读全文
摘要:目录Doublewrite Buffer刷盘策略Linux 上的刷新策略Windows 上的刷新策略刷新策略总结双写缓冲区的配置innodb_doublewriteinnodb_doublewrite_dirinnodb_doublewrite_filesflush 链表双写文件LRU 链表双写文件
阅读全文
摘要:[TOC] # 分类 MySQL Server 主要有以下几类日志: | 日志类型 | 作用 | | | | | 错误日志(Error log) | 记录启动、运行、停止 mysqld 时遇到的问题 | | 查询日志(General query log) | 已建立的客户端连接和从客户端收到的语句
阅读全文
摘要:目录InnoDB 的锁共享锁和排它锁意向锁总结记录锁间隙锁总结Next-Key 锁总结插入意向锁总结AUTO-INC 锁空间索引的断言锁加锁总结加锁规则 InnoDB 的锁 InnoDB 使用的锁类型包括: 共享锁(shared lock)和排它锁(exclusive lock) 意向锁(inten
阅读全文
摘要:[TOC] # InnoDB 事务模型 InnoDB 事务模型旨在将[多版本(multi-versioning)](https://dev.mysql.com/doc/refman/8.1/en/glossary.html#glos_mvcc) 数据库的最佳属性与传统的两阶段锁定结合起来。 Inno
阅读全文
摘要:[TOC] # InnoDB 中不同 SQL 语句设置的锁 [加锁读(locking read)](https://dev.mysql.com/doc/refman/8.1/en/glossary.html#glos_locking_read)、UPDATE 语句或者 DELETE 语句通常会对在
阅读全文
摘要:[TOC] # 死锁 死锁是指不同事务无法继续进行的情况,因为每个事务都持有另一个事务需要的锁。因为两个事务都在等待资源变得可用,所以都不会释放它所持有的锁。 当事务锁定多个表中的多个行(通过 UPDATE 或 SELECT ... FOR UPDATE 等语句)但顺序相反时,可能会发生死锁。当此类
阅读全文
摘要:[TOC] # InnoDB 磁盘 I/O InnoDB 尽可能使用异步磁盘 I/O,通过创建多个线程来处理 I/O 操作,同时允许在 I/O 仍在进行时继续进行其他数据库操作。 - 在 Linux 和 Windows 平台上,InnoDB使用可用的操作系统和库函数来执行“本机”异步 I/O。 -
阅读全文
摘要:目录查询计划查询计划输出格式解释输出列列格式idselect_typetypepossible_keyskeyref 查询计划 根据表、列、索引的详细信息以及子句中的 WHERE 条件不同,MySQL 优化器会考虑多种技术来有效地执行 SQL 查询中涉及的查找。 例如, 对大表进行查询可能无需读取所
阅读全文
摘要:目录简介索引失效场景未遵循最左前缀匹配导致索引失效索引列参与运算索引列使用了函数类型转换导致索引失效OR 引起的索引失效负向查询导致索引失效索引字段使用 IS NOT NULL 导致失效两列数据做比较会导致索引失效 简介 发生索引失效的情况: 当我们使用左或者左右模糊匹配的时候,即 like %xx
阅读全文