前言#
本篇是对 2023-05-08
到 2023-05-14
这周生活的记录与思考。
生活#
- 不背单词新一轮组队打卡开始了,继续背单词。
- 有位很厉害、来公司很久了的同事被优化了,目前算是正式开始了,看看我能挺到第几轮吧。
- 本周食谱
- 早餐
-
燕麦酸奶杯
一层酸奶,一层燕麦,提前做好放冰箱里面密封冷藏一晚上,第二天早上直接带到公司吃。又方便又好吃。
-
贝果 + 干酪
贝果切半,密封袋冷冻保存。空气炸锅 180 度 5 分钟,涂抹干酪,可以再加个煎鸡蛋。
-
煎鸡排 + 煎鸡蛋
晚上提前用奥尔良腌料腌制鸡腿排,保鲜膜封上放冰箱。早上用黄油煎至两面表层熟了后,加水盖上锅盖闷几分钟。
-
- 早餐
- 修改 xLog 全局字体设置
@import url("https://cdnjs.cloudflare.com/ajax/libs/lxgw-wenkai-screen-webfont/1.7.0/lxgwwenkaiscreenr.css"); :root { --font-fans: "LXGW WenKai Screen R"; }
- 手欠把扫粉刷卷到磨豆机磨盘里面了,结果拆磨盘的时候又把调节杆弄断了,难受...
学习#
英语#
Attend 和 attempt 的区别#
- Attend 意为 “照顾、照料”, 也含有 “出席” 的意思。当表示 “尽力” 完成某事时,它侧重于以关注和努力的心态对待该事情。
- Attempt 意为 “尝试、试图”, 表示为达到某目标或完成某事而采取的行动。它强调实际采取的行动和努力。
- 总结如下:
- Attend 强调以积极主动的心态对待某事。
- Attempt 强调实际采取的行动和努力。
- Attend 比较静态,Attempt 则比较动态。
- 两者在某些情况下可以互换,但 attend 着眼于心态,attempt 着眼于行为。
Hit the ground running#
固定搭配,意思是 “立即开始迅速行动”。
表示立即进入一个新环境 (新的工作岗位、项目等) 后迅速开始行动,而不会耽搁或推迟。它表示一种积极主动和行动迅速的心态。
Fall prey to sth#
通常描述一方由于 Comparatively 弱小或不注意而受到更强大一方的侵袭、利用或影响的状态。
Wishful thinking#
意为一厢情愿的想法,指一种不切实际的或者过于乐观的思维方式。
Multiplication table#
乘法表。
Stay put#
意思是留在原来所在的位置,不离开那里或动身到其他地方。它表示静止不动或不采取行动。用于建议或告知某人继续呆在目前的位置,暂时不要离开或前往其他地点。
这通常是为了安全考虑,防止混乱或在等待进一步指示的情况下。它也可用于表示由于各种原因如工作需要而无法离开当前位置。
技术#
MySQL#
索引#
数据问题需要修改数据库,select 查出来有 36 条数据,相同条件用 update 语句却影响了全表 100 多万行数据。联系 DBA 新增索引后,update 语句正常执行。
UPDATE `库`.`表` SET `字段a` = 'name' WHERE `字段b` = 'message' AND `字段a` = 'default'
-- 新增索引
-- idx_a_b `字段a`, `字段b` NORMAL BTREE
原因
https://xiaolincoding.com/mysql/lock/update_index.html
InnoDB 存储引擎的默认事务隔离级别是「可重复读」,但是在这个隔离级别下,在多个事务并发的时候,会出现幻读的问题,所谓的幻读是指在同一事务下,连续执行两次同样的查询语句,第二次的查询语句可能会返回之前不存在的行。
因此 InnoDB 存储引擎自己实现了行锁,通过 next-key 锁(记录锁和间隙锁的组合)来锁住记录本身和记录之间的 “间隙”,防止其他事务在这个记录之间插入新的记录,从而避免了幻读现象。
当我们执行 update 语句时,实际上是会对记录加独占锁(X 锁)的,如果其他事务对持有独占锁的记录进行修改时是会被阻塞的。另外,这个锁并不是执行完 update 语句就会释放的,而是会等事务结束时才会释放。
在 update 语句的 where 条件没有使用索引,就会全表扫描,于是就会对所有记录加上 next-key 锁(记录锁 + 间隙锁),相当于把整个表锁住了。
总结
Update 语句必须满足如下条件之一才能执行成功:
- 使用 where,并且 where 条件中必须有索引列;
- 使用 limit;
- 同时使用 where 和 limit,此时 where 条件中可以没有索引列;
Delete 语句必须满足如下条件之一才能执行成功:
- 使用 where,并且 where 条件中必须有索引列;
- 同时使用 where 和 limit,此时 where 条件中可以没有索引列;
如果 where 条件带上了索引列,但是优化器最终扫描选择的是全表,而不是索引的话,我们可以使用 force index([index_name])
可以告诉优化器使用哪个索引,以此避免有几率锁全表带来的隐患。
收藏#
- tldr Simplified and community-driven man pages.
- Vim Adventures 在线学习使用 Vim 的小游戏。