
MySQL
文章平均质量分 73
yunqi1215
欲买桂花同载酒,终不似,少年游
展开
-
【mysql系列】一条SQL查询语句如何执行?
另外,所有的内置函数(如日期、时间、数学和加密函数等)和所有跨存储引擎的功能(如存储过程、触发器、视图等。分析器:解析 SQL,通过解析器对 SQL 查询语句进行词法分析、语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型;MySQL 大多数的核心功能模块都在这实现,主要包括连接器,查询缓存、解析器、预处理器、优化器、执行器等。执行阶段:根据执行计划执行 SQL 查询语句,从存储引擎读取记录,返回给客户端;优化阶段:基于查询成本的考虑, 选择查询成本最小的执行计划;转载 2025-03-26 14:56:45 · 7 阅读 · 0 评论 -
【mysql系列】redo log
开启事务后,InnoDB 层更新记录前,首先要记录相应的 undo log,如果是更新操作,需要把被更新的列的旧值记下来,也就是要生成一条 undo log,undo log 会写入 Buffer Pool 中的 Undo 页面。WAL 技术指的是, MySQL 的写操作并不是立刻写到磁盘上,而是先写日志,然后在合适的时间再写到磁盘上。当系统崩溃时,虽然脏页数据没有持久化,但是 redo log 已经持久化,接着 MySQL 重启后,可以根据 redo log 的内容,将所有数据恢复到最新的状态。转载 2024-03-18 17:45:57 · 96 阅读 · 0 评论 -
【mysql系列】undo log
在执行执行一条“增删改”语句的时候,虽然没有输入 begin 开启事务和 commit 提交事务,但是 MySQL 会隐式开启事务来执行“增删改”语句的,执行完就自动提交事务的,这样就保证了执行完“增删改”语句后,我们可以及时在数据库表看到“增删改”的结果了。执行一条语句是否自动提交事务,是由 autocommit 参数决定的,默认是开启。所以,执行一条 update 语句也是会使用事务的。当一个事务在执行过程中,在还没有提交事务之前,如果。发生了崩溃,要怎么回滚到事务之前的数据呢?语句,期间发生了什么?转载 2024-03-18 17:41:06 · 62 阅读 · 0 评论 -
【mysql系列】binlog
binlog 文件保存的是全量的日志,也就是保存了所有数据变更的情况,理论上只要记录在 binlog 上的数据,都可以恢复,所以如果不小心整个数据库的数据被删除了,得用 binlog 文件恢复数据。因为 redo log 文件是循环写,是会边写边擦除日志的,只记录未被刷入磁盘的数据的物理日志,已经刷入磁盘的数据都会从 redo log 文件里擦除。binlog 是追加写,写满一个文件,就创建一个新的文件继续写,不会覆盖以前的日志,保存的是全量的日志。redo log 是 Innodb 存储引擎实现的日志;转载 2024-03-18 17:47:56 · 152 阅读 · 0 评论 -
【mysql系列】主从复制实战
停止slave I/O及sql线程,同时将同步错误的sql跳过一次,跳过错误会导致数据不一致,启动start slave,同步状态恢复。此种方法适用于主从库数据内容相差很大的情况。此方法适用于主从库数据内容相差不大的情况。将数据库设置为全局读锁,不允许写入新数据。将数据库设置全局读锁,不允许写入新数据。重新做主从同步,使数据完全同步。配置文件/etc/my.cnf。配置文件/etc/my.cnf。忽略错误后,继续同步。原创 2019-07-13 18:57:55 · 142 阅读 · 1 评论