前書き#
この記事は、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 `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 回目のクエリで以前存在しなかった行が返されることを指します。
したがって、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 の使用を学ぶためのオンラインゲーム。