mysql57to8.md 確認すること メンテナンス時間をどれくらい取れるかで戦略が決まる。 基本的にはメンテナンス時間を十分に取れたほうが良い。 またリスクをどれだけ許容できるかもビジネスによるので要確認しておくべき。 基本的には一度切り替えてしまうとロールバックすることは簡単ではない。 覚悟を決めて突き進む必要がある 最初に諦めること MyISAMを使いたい 8でも動くけど諦めろ、もう未来はない InnoDBのほうがDisk サイズを消費する、countが遅い、などの課題はあるので簡単ではないが… InnoDB memcached Pluginとか使ってるんだよね 諦めろ、未来はない これを機にアーキテクチャを見直しましょう PKが無いtableがあるんだよね すべてのtableにまずPKを付けるんだ このあと、DMSを使ったりとかなにをするにしても死ぬ そもそもデータモデルとして死
Photo by Rubaitul Azad on Unsplashはじめにこんにちは、2021年4月にFinatextに新卒で入社し、まもなく3年目になるToshiya Matsuzakiです。サーバーサイドエンジニアとして、AWSでのインフラ構築とGoによるシステム開発を行っています。 先日、MySQL5.7系互換であるAmazon Aurora v2を使用していたリリース前のプロダクトのデータベースを、MySQL8.0系互換であるAmazon Aurora v3にアップグレードした際に、予期せぬバグが発生しました。調べたところ、MySQL5.7から8.0へのアップグレードに含まれていた破壊的変更点によるものでした。 そこで、今回のバグから得た学びと対応方法について書きたいと思います。現在稼働しているシステムに対して、MySQL5.7系から8.0系にアップグレードをすることを検討してい
MySQL 5.7と比べると、8.0の方が性能が良いという噂を簡単な検証で確認してみました。 結論としては、 8.0の方がINSERTは早い8.0の方がSELECTも早いけど、正しくインデックス貼られていれば同程度UPDATE、DELETEは同程度という結果でしたー! なお、サポート期限は以下のようになっています。
redo ログは、不完全なトランザクションによって書き込まれたデータを修正するためにクラッシュリカバリ中に使用されるディスクベースのデータ構造です。 通常の操作中、redo ログは、SQL ステートメントまたは低レベルの API コールによって発生したテーブルデータを変更するリクエストをエンコードします。 予期しないシャットダウンの前にデータファイルの更新を終了しなかった変更は、初期化中、および接続が受け入れられる前に自動的にリプレイされます。 クラッシュリカバリにおける redo ログの役割の詳細は、セクション15.18.2「InnoDB のリカバリ」 を参照してください。 デフォルトでは、redo ログはディスク上で ib_logfile0 および ib_logfile1 という名前の 2 つのファイルによって物理的に表されます。 MySQL は、redo ログファイルに循環して書き込
この記事は Lancers(ランサーズ) Advent Calendar 2023 の20日目の記事です。 はじめに ランサーズ株式会社の種井です。 普段はエージェントサービス関連の開発業務を主に担当しています。 突然ですが、皆さんはデータベースの照合順序についてどれくらい意識して普段の開発業務を行っていますか? もちろん、当たり前に照合順序が果たす役割について把握した上でテーブル設計やアプリケーションの開発に取り組んでいるという方も多いかと思います。 かくいう私は、VARCHAR型のカラムに対して文字コードを設定する際に使用する機能くらいの知識しかなく、特段意識することなく新規テーブルの追加や既存テーブルへのカラム追加をこれまで行っていました。 この記事では照合順序についての理解が乏しかった自分が、普段の開発業務でハマった話をいくつかご紹介できればと思います。 環境 MySQL8.0 照
この記事は、株式会社カオナビ Advent Calendar 2023 の3日目です。 はじめに 株式会社カオナビの高橋(@kunit)です。 今回は MySQL バージョンアップ(5.7 -> 8.0) で起きた問題とそれに対してどのように対処したのかを書いていこうと思います。 何が起きたのか MySQL 5.7 から 8.0 にバージョンアップをするにあたって、CI およびローカル環境でテストができるように MySQL 8.0 のイメージを作成し、それをつかって各機能の担当者にテストを開始してもらっていたのですが、以下のような事が起きました。 接続を MySQL 5.7 から 8.0 に切り替えただけでテストの時間が3倍くらいかかるようになった そこを変更するだけで3倍遅くなるってやばいぞということで報告してくれた担当者と同じテストを自分でも実施してみると再現性があり、それが以下のどの
この記事は、hacomono Advent Calender 2023の20日目の記事です。 はじめに こんにちは、プラットフォームチーム所属のまこたすです。 この記事は主にMySQL5.7,MySQL8.0のcollation周りの挙動の違いについて書いています。AWS RDS MySQL5.7がEOLを迎える今、一番話したい内容はRails x MySQL5.7環境からRails x MySQL8.0環境へ移行する際にハマった話とそこからみる気をつけるべき観点という話題ではあるのですが、前提の話が長いので記事を2つに分けてお伝えします。今回はRailsの話は触れず、MySQLのcollation周りの話のみをします。 この記事で書くこと MySQL5.7, MySQL8.0でのサーバー, データベース, テーブルのcollationの決まり方とSHOW CREATE (TABLE|DA
railsが参照しているrdsをmysql5.7から8.0にアップグレードした時の注意点メモ utf8mb4を指定した場合は以下のパラメーターグループをutf8mb4にする必要がある character_set_database データベースの文字セットを定義します。文字セットは、文字を数値で表現する方法を定義するデータエンコーディングの一種です。 この設定は、新しく作成されるテーブルとそのカラムに使用されるデフォルトの文字セットを指定します。特定のテーブルやカラムに対して異なる文字セットを設定することも可能ですが、character_set_databaseはデフォルトの設定で、特定でない指定がない場合はこれが適用されます。 character_set_client ユーザーからのSQLステートメントがエンコードされている方法を定義します。クライアントからデータベースサーバーに送信される
GitHub、1200台以上のMySQL 5.7を8.0へアップグレード。サービス無停止のまま成功させる GitHubが提供するGitHub.comは、世界最大のソースコード管理システムを始めとするソフトウェア開発者向け支援サービスを提供しています。 そのGitHub.comはRuby on Railsで構築されており、同社はつねにRubyとRuby on Railsをアップデートし続けていることを今年(2023年)4月に明らかにしています。 参考:GitHubは200万行規模のRailsアプリケーションであり、毎週RailsとRubyを最新版にアップデートし続けている そして同社はこのGitHub.comを支える1200台以上のMySQL 5.7を、GitHub.comのサービスレベルを維持したまま1年以上かけてMySQL 8.0にアップグレードしたことをブログで明らかにしました。 Up
こんにちは、札幌在住 AWS 事業本部 オペレーション部(通称オペ部)の池田です。オペ部ではクラスメソッドメンバーズにご加入いただいているお客様が直面されたお困りごとや疑問など、様々なお問い合わせに対して各種ドキュメントや技術検証結果のご案内をしたり、場合によっては AWS と連携してお客様が直面している問題解決の支援を行なっています。 本記事では、タイトルにある通り実際にいただいた「RDS の CPU 使用率が(ほぼ)100% 何が原因なの?」というお問い合わせの中から、代表的な事例とその調査方法をご紹介したいと思います(今回も全ての事例を網羅できているわけではありませんが、調査方法の参考にしていただけると嬉しいです)。 はじめに RDS の CPU 使用率が 100% あるいは ほぼ 100% となる原因は実に様々です。そもそも選択したインスタンスのスペックが低すぎる場合、設計上想定し
注:Amazon RDS では、DB インスタンスで実行されている他のタスクよりもワークロードの優先度が高くなります。これらのタスクに優先順位を付けるには、ワークロードタスクの ** Nice 値を高くします。そのため、拡張モニタリングでは、 Nice% ** はワークロードがデータベースに対して使用している CPU の量を表します。 拡張モニタリングを有効にすると、DB インスタンスに関連付けられている OS プロセスリストも確認できます。拡張モニタリングには、最大 100 のプロセスが表示されます。これにより、CPU とメモリの使用量に基づいて、パフォーマンスに最も大きな影響を与えるプロセスを特定できます。 拡張モニタリングのオペレーティングシステム (OS) ** プロセスリストセクションで、 OS ** プロセスと ** RDS ** プロセスを確認します。mysqld プロセスま
MySQLのインデックスですが、B-treeではなくB+treeを使用するのはどうしてなのでしょうか? 端的に言うと性能が良いからです。 これを理解するにはバッファプールへの理解が必要です。ディスク指向のデータベースの上では有限のメモリを最大限活用することでメモリに入り切らない巨大なデータ群に対して良好な参照性能を出す必要があります。バッファプールとはディスク上のデータの羅列を固定サイズのページ(InnoDBの場合16KB)の羅列であるとして読み書きに必要な分だけをメモリに移し取り複数の書き込みをできる限りメモリ内で受け止めて後でまとめてディスクに書き戻すという、ライトバック型のキャッシュのような機構です。 この中においてバッファプールは有限のサイズしか無いので適宜プール内のデータを書き戻して入れ替えながら上手くやっていく必要があります。 さてB+treeとB-treeの最大の違いは木のリ
この記事はエムスリー Advent Calendar 2022の30日目の記事です。 前日は id:kijuky による チームメンバーのGoogleカレンダーの休暇予定一覧をスプレッドシート+GASで作った でした。 AI・機械学習チームの北川(@kitagry)です。 今回はMySQLへのインサートを20倍以上高速化した話について書きます。 仕事をちゃんとしてるか見張る猫 TL; DR はじめに 今回のテーブル バイナリログを無効化する 追試 LOAD DATA INFILE 追試 テーブルの正規化 インデックスを一時的に剥がす まとめ We are hiring!! TL; DR バイナリログをオフにする LOAD DATA INFILEを使う インデックスを一時的に消す はじめに AI・機械学習チームではサイトトップからアプリに至るまで多くの推薦システムがあります。 そこでは推薦ロ
MySQLにbinlogとredo logの二つの重要なログシステムがあります。本文では、この二つのログの仕組みについて説明します。 #1.基本知識 MySQLは、SQLの解析と実行する機能を実現するServer層とデータアクセス機能を提供するストレージエンジン層で構成されています。ストレージエンジンには、MyISAM、InnoDB、Memoryなどが存在します。 binlogは、Server層が出力するログです。redo logは、InnoDBエンジンが出力するログです。二つのログは、ともにDBテーブル更新時に出力されます。 ディスクアクセスに時間がかかるため、InnoDBエンジンがメモリ上でレコードを更新し、redo log bufferに記録したら、レコード更新操作が完了とします。この仕組みは、WAL(Write Ahead Logging)といいます。別の専用スレッドが適当のタイミ
【もっと早く知りたかった…】Excel作業を効率化する”関数”まとめツイートに感謝の声 - 「ありがとうございます! 」「有能過ぎる」 事務作業からプレゼンテーションの準備まで、さまざまな場面で用いられるExcel。便利なソフトである一方で、「条件に当てはまるデータを探すのが大変…」「曜日やふりがなを入力するのが面倒」といったストレスを抱えている方もいらっしゃるのではないでしょうか? 書籍『Excel医の見るだけでわかる! Excel最速仕事術』(TJMOOK・宝島社刊)の著者であるExcel医(@Excel_design_Dr)さんは、Excel作業で悩む方々に向けて、役立つ知識をわかりやすく紹介しています。 Excel医さんが10月27日に投稿したツイートでは、作業を効率化するために必須の”関数”が、1枚の表にまとめられています。 昔の私はExcel関数を全く知らず、ほぼ全ての変換作業
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く