タグ
#データベース
データベースに関する記事を公開しています。
D1 と R2 を使う Workers サイトは Deno の celld で動くが、今は移すメリットが無い
D1・R2・Cron を使う EmDash の Workers サイトを、Cloudflare Workers 以外で動かす環境として Deno の celld 0.6.2 に載せました。設定 5か所とコード 3か所を直すと自前の 2台で動きましたが、Workers のキャッシュと TLS を失い、ビルドのたびの手直しとベータ版のツールを抱えることになります。今は移すメリットが無く、使い道は Cloudflare から出られる道があるかを手元で確かめておくことです。
X API への自動投稿が二重になる経路を入口と出口で塞ぐ
Slack から X に 4 コマを自動投稿する bot に、同じ投稿が 2 回出る経路が 2 つありました。入口は Slack の再送(3 秒で切られ最大 3 回届く)とボタンの連打で、イベント ID の条件付き書き込みと status 遷移のロックで塞ぎました。出口は X API の応答が返らないまま再試行することで、失敗を「確実に失敗・結果不明・重複」に分け、結果不明は自動で再試行しないようにしました。実際に二重投稿は起きておらず、コードを読み直して先に塞いだ記録です。
EmDash で記事にタグを付けても本番に反映されない原因
記事にタグを付け直しても、本番のタグ一覧に出てきませんでした。CMS がキャッシュを自動失効させているのはコンテンツの CRUD だけで、タグの割り当て・サイト設定・メニュー・ウィジェットエリアは別のルートで処理され、失効を呼んでいませんでした。エッジキャッシュの保持時間を 30 日に延ばしてから実害が出た問題で、CMS 本体に patch を当てず、アプリ側のミドルウェア 1 か所で失効させるようにした記録です。
キャッシュを 30 日にしても D1 の読み取りが減らない原因
エッジキャッシュの保持時間を 5 分から 30 日へ延ばしても、データベースの読み取りが目標の 2 倍を超えたままでした。クエリ単位で分解すると 7 割がサイドバーの件数表示のための集計で、しかもサイドバーを消しても止まりませんでした。CMS のミドルウェアが全ページでターム一覧を先読みしていたためです。切り分けに使ったのは 1 起動あたりの読み取り行数と、クエリの実行回数がリクエスト数の何倍かという比率でした。
Cloudflare D1 の読み取りが 1 日 2,100 万行になった原因
1 つの Cloudflare アカウントで CMS のサイトを 8 つ運用していて、データベースの読み取りが 1 日 2,100 万行ありました。使用量は返した行数ではなくスキャンした行数で数えられるため、1 ページ表示するたびに数千行が乗っていたのが原因です。CMS を使っていてクエリを自分で書いていない状況で、キャッシュの保持時間とテンプレートの見直しだけで 91% 減らした記録です。1 リクエストあたりの単価が、1 アカウントに載せられるサイト数の上限を決めていました。
D1 の無駄なクエリを削ったらクエリ数が増えた原因
エッジ SSR(Cloudflare Workers + D1)ではレイテンシの支配項は CPU ではなく DB への往復回数です。明らかに無駄なクエリを削ったら本数が 19→22 に増えた原因であるリクエスト内キャッシュの重複排除と、推測で書き換えず「表示が変わっていないこと」を HTML のバイト一致で証明しながら最適化するウォーム A/B 計測の手順をまとめます。
WordPressのphpMyAdminのログイン情報を調べる
phpMyAdminへのログイン情報は、WordPressのコアフォルダの1番上にある「wp-config.php」に記述されています。ユーザー名はdefine( 'DB_USER', 'root' );のrootの部分、パスワードはdefine( 'DB_PASSWORD', 'pass' );のpassの部分になります。
WordPressのユーザー名とパスワードを忘れたときの確認・変更方法
WordPressのパスワードを変えたい・忘れたときの手順を3つに分けて書きました。ログインできるなら管理画面の「プロフィール」→「新しいパスワードを設定」、ログインできないならログイン画面の「パスワードをお忘れですか ?」から再発行、メールも届かずユーザー名も分からないならphpMyAdminでwp_usersを確認・変更します。WordPress 6.8(bcrypt移行後)でもMD5指定での変更は有効です。ユーザー名は管理画面から変更できない点も補足しています。
WordPressの管理者メールアドレスを変更する — 管理画面が使えないときはデータベースから
WordPressの管理者メールアドレスは通常、WordPressサイトの管理画面から変更しますが、データベースからも変更可能です。テスト環境から本番環境へ移行する時や、WordPressの管理画面にログインせずにメールアドレスを変更したい場合などに便利な方法です。