Mysql 常见概念
事务、索引、锁
重做日志(redo log)、归档日志(binlog)
Mysql 的 user 表有更新时,与 user 表有关的查询缓存会失效。即更新 user 表
update user set name = '' where id = 1
会把表 user 上的所有缓存结果都清空。
这种策略是否可以应用到缓存更新策略上?
在表更新时,使其对应的 Redis 缓存失效。
WAL(Write-Ahead Logging)关键点:
先写日志、再写磁盘。
WAL 如何应用到程序设计中。
日志是元数据,更新数据是更新结果。
生成 BI 报表,统计数据时采用这种策略。
重做日志保证即使数据库发生异常重启,之前提交的记录都不会丢失。
重做日志和归档日志的不同点(有 3 条):
重做日志是 InnoDB 引擎特有的。Server 层的日志称为归档日志。是所有引擎都可以使用的。
重做日志是物理日志,记录的是“在某个数据页上做了什么修改”。归档日志是逻辑日志,记录的是这个语句的原始逻辑。比如“给 ID=2 这一行的 C 字段加 1”。
重做日志是循环写的,空间固定。归档日志是可以追加写入的。“追加写”是指归档文件写到一定大小后会切换到下一个,并不会覆盖以前的日志。
评论 (1 条评论)