![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
唐荣跃
谁的青春没遗憾
展开
-
redis aof的刷盘策略
redis aof是redis缓存持久化的一种方式。持久化就要将内存中的数据写入到磁盘文件中。那么,redis什么时候写磁盘呢?redis通过appendfsync配置提供了三种写盘的方式:appendfsync=always,每次修改事件都会同步aof buffer到aof文件,这种同步策略的安全性最高,效率最低,发生系统奔溃时最多丢失一个事件循环的数据。appendfsync=everysec,每秒同步一次aof buffer到aof文件,这种同步策略与每次修改都同步的策略相比,安全性差一些,但原创 2021-01-26 21:32:31 · 2806 阅读 · 1 评论 -
redo log的刷盘策略
redo log包含日志缓冲(redo log buffer)和磁盘上的日志文件(redo logfile)两部分。mysql每执行新一条dml语句都会先将日志记录在redo log buffer,后续在某个时间点再将多条操作记录写到redo log file,这种先写日志再写磁盘的技术就是mysql中WAL技术(writing-ahead logging)。在计算机的操作系统中用户空间缓冲区的数据是无法直接写入磁盘的,中间必需经过操作系统缓冲区(OS Buffer)。因此,redo log buffe原创 2021-01-26 16:21:40 · 2025 阅读 · 1 评论 -
binlog的刷盘策略
mysql只有在事务提交的时候才会记录binlog日志,此时日志还在内存中,那binlog是什么时候被刷到磁盘中的呢?mysql通过sync_binlog控制刷盘,取值范围0~n0:不强制要求刷盘,由系统自行判断什么时候将binlog写入磁盘;1:每次提交事务就将binlog写入磁盘;n:每提交n个事务将binlog写入磁盘;显然,sync_binlog为1是最安全的,每次提交事务就将binlog写入磁盘,数据一致性最好。但实际情况中,往往为了提高数据库的性能,会将sync_binlog适当设大,原创 2021-01-25 19:20:25 · 2109 阅读 · 3 评论 -
mysql日志@2
mysql的更新会使用到redo log(重做日志)和binlog(归档日志)。redo log的记录是在存储引擎InnoDB中进行;只有InnoDB有redo log;redo log记录物理日志,更新的sql语句;redo log在事务执行的时候不断地被写入(包括事务提交前),日志不随事务提交时间顺序写入,因此每个事务对应多条redo log日志;binlog文件时固定大小,是循环使用的,达到一定大小,会清除日志腾出空间;由于redo log的特性,其可用于数据库宕机后进行数据恢复来保证数据完整性;原创 2021-01-25 14:39:56 · 64 阅读 · 0 评论 -
mysql查询语句的执行步骤@1
第一步,建立连接。连接、获取权限、管理连接。第二步,查询缓存。对写频繁的库,查询缓存的失效会很频繁,因此不建议开启查询缓存。第三步,分析器。若没命中缓存,则进入分析器分析语句,此步骤包含此法分析、语法分析。第四步,优化器。选择索引,决定表关联顺序等第五步,执行器。校验执行权限(有查询缓存是在走查询缓存阶段进也进行权限校验),查询语句也会在优化器步骤前验证权限我们经常碰到的 ”不存在这个列字段“ 的语法错误,显然实在语句执行的分析器处理步骤抛出的。...原创 2021-01-25 09:33:37 · 105 阅读 · 0 评论