カテゴリー: SQL

開発, SQL

SQL速度改善 EXISTS

EXISTSはレコード数が増加すると速度が悪化する   EXISTSはINNER JOIN NOT EXISTSは副問い合わせ OR EXISTSはUNION ALL 上記に変更できないかを検討する   Amazonおすすめ iPad 9世代 2021年最新作 iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には …

開発, 障害対応, MySQL, チューニング

performance_schemaでのロック待ち、スロークエリ分析

    引用元 https://zenn.dev/hiro1111/articles/performance_schema   ステートメント分析 最もリソースを消費しているSQLステートメントを特定します。以下のクエリは、CPU時間、待機時間、ロック時間、およびIO時間で最もコストが高いステートメントを見つけます。   待機イベント分析 データベースの待機イベントを …

MySQL

[MysQL]オンラインDDL

  オンラインDDL データベース稼働中に無停止で既存テーブルに対して変更を行う技術 変更中にロックされなくなり該当テーブルに対して読み書きが可能 ALGORITHM=INPLACE 処理をブロックしない。「その場で」で更新を行う LOCK=NONE ロックを行わない Amazonおすすめ iPad 9世代 2021年最新作 iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kin …

MySQL, トラブルシューティング

[訓練]誤って有料会員を無料会員に全件更新してしまったので、テーブルを復旧する

経緯 とある動画をラジオ感覚で流していた   スタートアップに在籍 有料会員数は100程度のサービスを運用 メンテナンス作業のミスによるインシデントが発生 事故の内容 1件の特定の有料会員を無料会員に修正するメンテナンスを行う時に // WHERE句の付け忘れ // ;の位置が早くてWHEREが入らないケース // 改行されている && 1行目のみ選択されている &amp …

MySQL, AWS

AWS RDS PITR+ロールフォワードによるリカバリ 【誤ったクエリ発行からの復旧】

  RDSのクエリ単位での復旧手順 ソシャゲとかECで、バグでアイテムを9999999999999個大量配布しちゃった時に、スーパーメンテナンスタイムからの問題あるクエリを回避しつつの真のリストアで通常運営できる状態に復旧します。 前提条件 AWS RDS PITR+ロールフォワードによるリカバリ 【下準備編】   RDS MySQL DBダンプコマンドのコツ   関 …

MySQL, AWS

AWS RDS PITR+ロールフォワードによるリカバリ 【汎用 RDSのディスク障害からの復旧】

      前提条件 AWS RDS PITR+ロールフォワードによるリカバリ 【下準備編】 RDS MySQL DBダンプコマンドのコツ     関連 AWS RDS PITR+ロールフォワードによるリカバリ 【下準備編】 AWS RDS PITR+ロールフォワードによるリカバリ 【汎用 RDSのディスク障害からの復旧】 AWS RDS PITR …

MySQL, AWS

AWS RDS PITR+ロールフォワードによるリカバリ 【下準備編】

  関連 AWS RDS PITR+ロールフォワードによるリカバリ 【下準備編】 AWS RDS PITR+ロールフォワードによるリカバリ 【汎用 RDSのディスク障害からの復旧】 AWS RDS PITR+ロールフォワードによるリカバリ 【誤ったクエリ発行からの復旧】   RDS側作業     binlog保存期限設定   24時間の保持に設定 …

SQL

JOIN, EXISTS, IN使い分け

  言語化しておく🐱   主表と従属表でどちらのカラムも必要な場合 JOIN   LEFT JOIN 従属表のカラムの列にnullが必要な場合 条件によってnullで表示させたい場合はON句を使う ON A.id = B.a_id AND B.delete_flag = 0   INNER JOIN 主表と従属表の共通行を出したい場合   &nbs …

MySQL

MySQL SELECTしかできないUserを作る

  metabase用にSELECTしかできないユーザを作ることになった🐱     例         Amazonおすすめ iPad 9世代 2021年最新作 iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

SQL, PHP

Laravel クエリビルダー 複数JOINとWHERE条件 query builder

  クエリビルダはあまり使わないのだけど、レコードの有無を取得する場合や集計処理なんかでは使うことがある🐱     生クエリがこうだとする   select * from `employee_emails` left join `employee_skills` on `employee_skills`.`employee_email_id` = `employee_ …

SQL, SEノウハウ

すべらないSQLによる本番マイグレーション

    仕様変更によってremarksにあるデータをlogin_infoに移す本番マイグレーションがありました。 事業部に伝わる秘技 ポイント 作業前バックアップ →ヤバくなったら戻せる 立会いによるレビュー トランザクションとカウントを駆使したマイグレーション マイグレーションを本番サーバ内のトランザクションを利用することで、 更新対象を常に確認しながら実行することで精度を確 …

MySQL, AWS, Linux

Resolved [mysqlbinlog] ERROR: Got error reading packet from server: Could not find first log file name in binary log index file

        mysqlbinlog: unknown option –raw ??   解決 MySQL ClientがMariadbになっていた。 RDSはMySQL5.7なので これで実行できた     Amazonおすすめ iPad 9世代 2021年最新作 iPad 9世代出たから買い替え。安いぞ!🐱 初めてならi …