MySQL笔记
2022-06-16  学习

MySQL学习过程中的一些知识点

  1. 全部使用长连接,内存占用问题

1.定期断开长连接。使用一段时间,或者程序里面判断执行过一个占用内存的大查询后, 断开连接,之后要查询再重连。

2.如果你用的是 MySQL 5.7 或更新版本,可以在每次执行一个比较大的操作后,通过执 行 mysql_reset_connection 来重新初始化连接资源。这个过程不需要重连和重新做权 限验证,但是会将连接恢复到刚刚创建完时的状态。

  1. 为什么不建议使用查询缓存

查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清 空。因此很可能你费劲地把结果存起来,还没使用呢,就被一个更新全清空了。对于更新 压力大的数据库来说,查询缓存的命中率会非常低。除非你的业务就是有一张静态表,很 长时间才会更新一次。比如,一个系统配置表,那这张表上的查询才适合使用查询缓存。

  1. Write-Ahead Logging: 先写日志,再写磁盘

  2. redolog只是完成了prepare, 而binlog又失败,那么事务本身会回滚

1 prepare阶段 2 写binlog 3 commit

当在2之前崩溃时 重启恢复:后发现没有commit,回滚。备份恢复:没有binlog 。 一致

当在3之前崩溃 重启恢复:虽没有commit,但满足prepare和binlog完整,所以重启后会自动commit。备份:有binlog. 一致

  1. 一天一备份、一周一备份

RTO(恢复目标时间)好处是“最长恢复时间”更短。 在一天一备的模式里,最坏情况下需要应用一天的 binlog。当然这个是有成本的,因为更频繁全量备份需要消耗更多存储空间,所以这个 RTO 是成 本换来的,就需要你根据业务重要性来评估了。