序文#
この記事は、2023 年 5 月 8 日から 2023 年 5 月 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 `database`.`table` SET `column_a` = 'name' WHERE `column_b` = 'message' AND `column_a` = 'default'
-- インデックスの追加
-- idx_a_b `column_a`, `column_b` NORMAL BTREE
原因
https://xiaolincoding.com/mysql/lock/update_index.html
InnoDB ストレージエンジンのデフォルトのトランザクション分離レベルは「リピータブルリード」ですが、このレベルでは、複数のトランザクションが同時に実行される場合、幻の読み取りの問題が発生することがあります。幻の読み取りとは、同じトランザクション内で同じクエリを 2 回連続で実行すると、2 回目のクエリで以前存在しなかった行が返されることを指します。
そのため、InnoDB ストレージエンジンは、行ロックを実装しています。次のキーロック(レコードロックとギャップロックの組み合わせ)を使用して、レコード自体とレコード間の「ギャップ」をロックし、他のトランザクションがそのレコード間に新しいレコードを挿入するのを防ぎ、幻の読み取り現象を回避します。
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 を学ぶためのオンラインゲーム。