「データベース」の記事
8 件
-
phpMyAdmin も、いらなくなった — 本当に要る機能だけが残った
一ヶ月前に造った自作のSQLツールに、行の編集と削除を足した。カレンダーはブラウザ標準を捨てて自分で描いた。日付列を数えたら「0000-00-00」が974万件あったからだ。SQLを初めて書いたオフコンとORACLEの頃から、一列にカンマ区切りで持つFIND_IN_SETまで。要る機能だけを足していったら、phpMyAdminを開かなくなった。
-
全部は運ばないほうが、きれいに移る — データ移行を保守コンソールのワンクリックにするまで
現行の Mac+MySQL 5.7 から、新しい Linux+MySQL 8.4 へデータを移す。全部を書き出して全部を読み込む。それで詰まった。新しい土台は古い書き方を受けつけない。答えは、運ぶものを減らすこと。そして「エラーが出なかった」ではなく「全部移った」を件数で確かめること。その一連を保守コンソールのワンクリックに畳んだ。
-
速いマシンは、優しい嘘をつく — 非力なLinuxがあぶり出した遅さを、母艦のMacごと直す
新しく建てたLinuxで、ホーム画面の起動に6秒かかった。RAMの潤沢なMacでは、この遅さが一度も表に出たことはない。非力な1台があぶり出したのは、何年も全職員が少しずつ払い続けていた全表スキャンだった。Linuxで見つけて直した手を、そのままMacへ持ち帰る。速いマシンほど、遅さを上手に隠す。
-
「今の所属」で過去を絞ってはいけない — 申請日時点の所属で判定する
決裁状況を所属で絞るとき、現在の所属で判定すると、異動者の過去の申請が異動先の部署に現れてしまう——見えてはいけない申請が見えてしまう。正しくは申請日時点の所属で判定する話。
-
複合索引ひとつで決裁一覧が変わる — 全表スキャンを畳む
職員ごとの決裁状況一覧が本番規模で遅くなった。複合索引を1本、列順を正しく張るだけで全表スキャンとfilesortが消えた話。
-
空文字で検索したら、消したはずの行が返ってきた — MySQLの型変換
新規登録画面で、IDがまだ空なのに既定の行が選択済みになる。犯人はSQLの暗黙型変換で、空文字が数値0に化けて残骸行を掴んでいた話。
-
本番相当のデータで性能を測る — 見積りが信頼できる検証環境
少量のテストデータでは性能問題は再現しない。本番と同規模・同分布のデータを手元に置くと、EXPLAINの見積りが実運用の見積りとして信頼できる理由を綴る。
-
2系統のIDを1つのカラムで共存させる — オフセット方式
独立したAUTO_INCREMENT主キーを持つ2つのテーブルのIDを、下流の1カラムで取り違えなく共存させる。スキーマ不変・最小侵襲を優先して選んだオフセット方式の設計と落とし穴。