タグ

2023年9月26日のブックマーク (2件)

  • pt-online-schema-changeの導入時に検討したこと、およびRailsアプリとの併用について - freee Developers Hub

    おはこんばんちは、Database Reliability Engineer (DBRE) の橋です。今回は、pt-online-schema-changeというデータベースのスキーマ変更ツールを社内の運用に持っていくための過程や、freeeにおける運用上の工夫を紹介します。pt-online-schema-changeはある程度枯れた技術なので、いくつか事例が紹介されており、すでに運用に乗せている組織もあるかと思われますが、これから新規に導入する方などの参考になると幸いです。 背景 freeeではほぼ毎月ペースで深夜に定期メンテナンスを行なっており、おもにインフラの更新作業やアプリケーションの機能追加に伴うデータベースのスキーマ変更が行なわれます。 ここで少し寄り道をして、スキーマ変更を行なうためのMySQL(ストレージエンジンにInnoDBを使っている前提で進めます)のDDLのパター

    pt-online-schema-changeの導入時に検討したこと、およびRailsアプリとの併用について - freee Developers Hub
    teckl
    teckl 2023/09/26
    gh-ostとの比較、pt-online-schema-change の動作原理をコードを参照しながら解説してくれていてありがたや…
  • MySQLでのVARCHARサイズ変更を行うALTER TABLEについて - だいたいよくわからないブログ

    これは何 MySQLにはVARCHARの文字数を拡張するDDLをオンラインで行うための最適化が存在する。 一方でこの最適化は内部のバイナリ表現に依存した限定的な最適化であり、意図せずオフラインDDLとして実行される可能性がある。 ページではこの最適化の仕組みと安全にサイズ変更を行うための対策について解説する。 結論 結論1 MySQL 5.6以前では文字数が何文字だろうとVARCHARサイズ変更に関する最適化は行われないのでオフラインDDLになる。 そのため変更したい場合は停止メンテ等を行うかpt-online-schema-change等の利用を検討すること。 結論2 MySQL 5.7以降ではVARCHARサイズとCHARSETに依存してオンラインで拡張可能なサイズが変わるので、将来の拡張を考えた上でサイズを検討しよう。 結論3 以下のように ALGORITHM=INPLACE, L

    MySQLでのVARCHARサイズ変更を行うALTER TABLEについて - だいたいよくわからないブログ
    teckl
    teckl 2023/09/26
    > ALGORITHM=INPLACE, LOCK=NONE をDDL末尾につけることで、DDLをオンラインで実行できるか検証できる。CHARSET = utf8mb4 のときは1文字4byteなので VARCHAR(64)~はlength prefixのサイズが2