前言#
本篇是對 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#
通常描述一方由於相對較弱小或不注意而受到更強大一方的侵襲、利用或影響的狀態。
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 簡化且由社區驅動的 man 頁。
- Vim Adventures 在線學習使用 Vim 的小遊戲。