作者回复: 老板看完板,正要告知孔乙己今日总账是赊账二两酒,
小二连忙过来拦住,“老板,刚刚孔乙己刚又赊账了一碟茴香豆。”
老板大惊,“差点亏了我一碟豆子!我怎不知?”
小二道,“老板你方才看板的之时没拿记账笔,我看记账笔没人使用,按店规自然可用。老板你自己没看”
老板惊呼,“亏的你小心”。
暗地想店规确有不妥。
于是把店规“变账须用记账笔。” 改为
“改帐均须动笔。纵为不变之帐,仍需覆写之”
😄
作者回复: 加油。
说下我自己的理解。
我在带新人的时候,要求大家在写SQL语句的时候,心里是有数的,知道每个语句执行的结果,以及这些代码会消耗什么资源、如果慢了会慢在哪里、每个语句执行会占用哪些锁等等。
有的新人会问“为什么需要这么麻烦,我执行一下,看看结果对不对,对了就行,不对就改,是不是也可以?”
我说不可以。因为如果这样,我们就会受到很多局限,即使我们定位自己是业务开发人员。
这里我说一个限制:
这会限制基于数据库的业务架构能力。一个语句可以试,一个五个语句的事务分析就要试很多次,一个复杂业务系统的数据库设计,是试不出来的。
原理可以帮我们剪枝,排除掉那些理论上明显错误的方案,这样才有精力真的去试那些有限的、可能正确的方案。
我们不需要100%精通MySQL(我自己离这个目标也相去甚远),但是只要多知道一些原理,就能多剪一些枝,架构设计就能少一些错误选项的干扰,设计出来的项目架构正确的可能性更高。
我自己特别喜欢这个剪枝的过程和感觉,他表示我用以前学习的时间,来节省了现在工作的时间。
当然,“原理”是一个很大的概念,有的原理更接近实战,有的远一些。这个专栏我挑的是跟平时使用相关的原理,以便大家可以有机会边学边用。
一起加油吧🤝
作者回复: 漂亮
作者回复: “我说,这次查了缓存”
哈哈,这个场景好棒,这个画面感,有一种扫地僧的感觉👍🏿
一起加油
作者回复: 是的,binlog一来时机控制不好(就是你说的这个),二来内容的能力不足(没有页面信息)
👍🏿
作者回复: 你说得对,是按位或,看得很细致👍🏿
我发个堪误
作者回复: 谢谢🙏
希望大家都有收获
作者回复: 1. 刷脏页是只把内存上最新版本的数据页写到磁盘上。 第一个碰到的redolog会把这个脏页刷下去,注意redolog并没有修改内存数据页的数据(这个不是崩溃恢复过程哦)
后面再碰到这个页面的redolog,这个页面是干净页了,不用刷直接跳过
2. 第二个问题的两个问号是一个答案:不用清除。 下次redo log来刷的时候看到是干净页就直接过了。
好问题。
作者回复: 不是A关注B,就是A大于B,说的是用户id哦
作者回复: Hexdump前有没有关闭MySQL?
作者回复: 不是哦,
在事务执行期间是在redo log buffer.
在图中写binlog之前,就已经都写了盘并且fsync了
作者回复: 1. 嗯,它有单独的内存,redo log buffer
2. Binlog cache size也是global 的呀,我还去确认了5.5~5.7,你用的是哪个版本?
3. 这个数据是怎么得到的😄
4. 写完磁盘就发,然后再回来flush。
不是,放在binlog cache表示“这事务还没做完”,不发的
作者回复:
1. 两阶段提交主要还是因为有了两份日志😆,两份日志的历史原因多些;
2. 对的,XID
3. 是,要考虑binlog和数据的一致性;
4. 对的
5. 是脏页哈
6. 😅
7. 不能设置无限大
8. 是不是暗恋的妹子向你表白了😝