あけましておめでとうございます! 今年は異世界放浪メシのアニメが放送されるらしいので楽しみなバックエンドの原田 (tomtwinkle)です。 内部で運用しているSQLレビューチェックリストの一部を抽出し思いつきで追記して行った結果、結構な分量になってしまいました。 暇な時でも流し読みして頂けるとありがたいです。 MotivationSQLレビュー観点 大きくSQLが変更される修正の際にはEXPLAINをレビュー内容に加える 検索のキーにINDEXを使用しているかSQL発行回数がN+1(1+N)の構造になっていないか サブクエリを利用したSQLはパフォーマンス要チェック Viewの利用は基本的に禁止 CROSSJOINは禁止 WHERE句で十分に絞った検索をしているか 必要なcolumnだけSELECTしているか レコード数だけ必要な場合にCOUNT用のSQLを発行しているか 集計関

こんにちは。クラウド運用チームの飯塚です。 私たちは cybozu.com本番環境のMySQL を昨年末から順次 8.0 系へアップグレードしており、前回の定期メンテナンスにおいて全てのインスタンスのアップグレードを完了しました。この記事では、私たちがMySQL 8.0 への移行に取り組んだ理由と必要になった対応について紹介します。 なぜMySQL 8.0 へ移行したのか GTID-based レプリケーションにおける制限の緩和 再起動時に AUTO_INCREMENT のカウンタが巻き戻る問題の解消 実際に対応が必要だったMySQL 8.0 の変更点 utf8mb4 の照合順序のデフォルト値の変更SQL_CALC_FOUND_ROWS と FOUND_ROWS() が deprecated に Connector/J のメタデータ取得処理の性能低下 sys.innodb_lo
この記事はMackerel プラグインアドベントカレンダー(全部CRE) の20日目です。 qiita.com soudai.hatenablog.com それでは20日目はmackerel-plugin-mysql 第二弾、InnoDBの監視です。mackerel-plugin-mysqlはRDBMSとして広く使われているMySQL専用のプラグインです。 第一弾はこちら。 soudai.hatenablog.com インストール方法や使い方、MySQLのデータ取得で使っているSQLは前回説明したので割愛します。 前回はMySQL全般に言える監視の内容でした。 今回はその中でもInnoDBに特化した内容でお送りします。 見れるメトリック それでは各グラフ定義ごとに説明します。 また表に出てくるdiffとはプラグイン上で差分値計算をするかどうかです。 ◯ となっている項目はプラグインで

Since launching in 2006,Amazon Web Services has been providing industry-leading cloud capabilities and expertise that have helped customers transform industries, communities, and lives for the better. As part ofAmazon, we strive to be Earth’s most customer-centric company. We work backwards from our customers’ problems to provide them with the broadest and deepest set of capabilities so they can

株式会社ラクーンホールディングスのエンジニア/デザイナーから技術情報をはじめ、世の中のためになることや社内のことなどを発信してます。 bashパフォーマンスMySQLInnoDBDB設計インデックス こんにちは、羽山です。 今回はMySQL のプライマリキーにUUID を採用する場合に起きるパフォーマンスの問題を仕組みから解説します。MySQL(InnoDB) &UUID のパフォーマンスについては各所でさんざん議論・検証されていますが、論理的に解説した記事が少なかったり一部には誤解を招くようなものもあるため、しっかりと理由から理解するための情報として役立つことができればと思っています。UUID と比較される古き良き昇順/降順のプライマリキーはというと、MySQL の InnoDB において良いパフォーマンスを出すために縁の下の力持ちのような働きをしてくれているケースが実は少な
![MySQLでプライマリキーをUUIDにする前に知っておいて欲しいこと | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2f5e9d48c3c6f38c2d5f71897d98efcb251289d1f9%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Ftechblog.raccoon.ne.jp%252Fwp-content%252Fuploads%252F2021%252F07%252Fboard-755792_800.jpg&f=jpg&w=240)
5,500超のMySQLインスタンスを少人数で運用するには - LINEのDB運用効率化・自動化の取り組み 大きなサービスであれば、それを支えるデータベースの規模もまた大きくなるでしょう。LINE社のデータベースの規模は、2021年11月時点でMySQLのインスタンス数5,500超。巨大なデータベースの運用を効率化、自動化するための工夫やノウハウをLINE社のDBAに聞きました。 日本国内だけで、8900万人以上という膨大なMAUを抱えるコミュニケーションアプリ「LINE」をはじめ、多くの大規模サービスを運営するLINE株式会社(以下、LINE)が取り扱うデータ量は膨大です。使用するデータベースの規模は、なんと、2021年11月時点でMySQLのインスタンス数5,500超。これほど多くのインスタンスを管理しているにも関わらず、同社でMySQLの運用に携わるDBA(Database Admi

こんにちは。クラウド運用チームで SRE をしている飯塚です。 今回は、MySQL のレプリケーション機能を約10年もの間ずっと使ってこなかった私たちが、レプリケーションを使った高可用性構成に移行するための取り組みの中で学んだことについて紹介します。 背景 巨大なテーブルへの primary key の付与 トランザクションサイズが大きい場合には tmpdir に注意mysqldump で絵文字が消えていないか要チェックmysqldump がError 1412: Table definition has changed... で失敗するmysqldump したデータのリストアが Duplicate entry 'xxx-yyy-PRIMARY-n_diff_pfx01' for key 'PRIMARY' で失敗することがあるmysqldump したデータのリストア時のディスク
最近、ANDPADでデータベース周りの技術顧問をさせて頂いています。ANDPADのエンジニアの皆さんから「データベースのロックまわりを詳しく知りたい!」というお話を受けて、先日、ロック周りの社内勉強会を開催しました。SQLでは一般的なプログラミング言語と違って、ロックの制御を明示的に記述しません。ロックは暗黙的に(自動的に)データベースが必要なロックを獲得します。データベースのロックが わかりにくい・むずかしい と言われることが多いのはこういった背景があると思います。MySQL のロック範囲は実行計画で変わる 更新対象の行がロックされるのは予測が付く方が多いと思います。 しかし、MySQL(InnoDB)では更新対象でなくても行がロックされることがあります。 このようなサンプルデータを使って説明します。mysql>CREATE TABLE `lockt` ( -> `pk` big
slowlogの時間は何を計測しているのか? きっかけ とあるMySQLインスタンスで1Gbのネットワーク帯域を使い切ってレスポンスタイムが悪化していたという話を聞いた。 確かに遅いがlong_query_timeを小さくしてもslow_logは特に出ていなかったため、どのクエリが問題なのかを特定しづらかったらしい。 これを聞いたときはRedisとかインメモリのDBならまだしもMySQLがストレージより先に1GbのNICを使い切ることがあるのかーと驚いた。まあ、100GB以上のメモリも珍しくないので、ほとんどメモリから結果を返していれば1Gb/s以上返すことは難しくなさそうではある。 だが、long_query_timeを小さくしてもslow_logにクエリが出力されなかったという部分は気になった。 具体的にlong_query_timeがどれくらいなのか、同時接続数はどれくらいでQPS
The innodb_io_capacity and innodb_io_capacity_max are often misunderstood InnoDB parameters. As consultants, we see, at least every month, people setting this variable based on thetop IO write specifications of their storage. Is this a correct choice? Isit an optimal value for performance? What about theSSD/Flash wear leveling? Innodb_io_capacity 101 Let’s begin with what the manual has to say

2019年11月20、21日の2日間、LINE株式会社が主催するエンジニア向け技術カンファレンス「LINE DEVELOPER DAY 2019」が開催されました。1日目は「Engineering」をテーマに、LINEの技術の深堀りを、2日目は「Production」をテーマに、Web開発技術やUI/UX、プロジェクトマネジメントなど、より実践的な内容についてたくさんのプレゼンテーションが行われました。「Inside ofBlog; 15年熟成されたサービスの光と影、カオスとレガシーへの挑戦」に登壇したのはLINE 開発Bチームの大森貴博氏。後半パートとなる今回は、現役で稼働するPerl5.8とMySQL4.0が引き起こした数々の苦労と、それらの負債との戦いの中で学んだサービス開発において大切なことについて語りました。講演資料はこちらPerl5.8が現役で稼働大森貴博氏:さて、ここから

Percona LIVE 2019に参加してきました。 前回の続きで初日(Tutorial Day)からSession Day 1, 2の3日間のうち2日目(Session Day 1)の内容です。 おそらく発表のスライドが公開されることと思いますが、全体が非公開になるものや非公開になるページがあるかもしれないので、ここではあえて概要だけと会場の雰囲気や僕の感想を書こうと思います。 また、英語の聞き取り能力が高くないため、勘違いした内容を書いている可能性が多分にあります。あくまで参考程度に読んでください。 各発表ごとのサブタイトルは発表中のものもあれば、メモを忘れて僕が勝手に書いたものもあります。 (メモからの校生も面倒なので、ここで丁寧語は終了です)Session Day 1 (2日目) 1日目のスケジュール -> https://www.percona.com/live/19/sc

こんにちわ。せじまです。さいきん、ジム用に左右独立型スポーツモデルのBluetoothイヤホン買ったのですが、あまりの快適さに、ジムに通うモチベーションが5割増しになりました。 はじめに innodb_thread_concurrency について書こうかと思ったんですが、まずはその前にMySQL の metric の話から入ったほうが良いかなぁと思ったので、今回は metric の話を書こうと思います。はじめにお断りしておきますが長くなります。 弊社では7年以上前から、MySQLのサーバ一台あたり(OS側のも含めると)200-300 以上の metric を だいたい15秒間隔で記録しています。最近はSSDなども使ってますが、むかしはHDDにmetricを保存していました。例えばMySQLのサーバ一台分のmetric表示した画面をキャプチャすると、次のような感じになります。 ※画像は

こんにちわ。せじまです。 さいきんの kernel について調べてたら、俄にChromebook への興味が湧いてきたので、遅まきながら C302CA ポチってみました。わたしにとって人生初 Core M ということもあって、早く届かないかなと心待ちにしている今日このごろです。 はじめにMySQL5.7以前でおそらく最も有名な問題の一つに、Sushi-Beer issue ofMySQL with utf8mb4 というものがあります。 忙しい人のために三行でまとめますとMySQL は character-set に utf8mb4 を指定すると、寿司やビールなどの絵文字を扱える。 ただ、Collation(照合順序) が utf8mb4_general_ci や utf8mb4_unicode_ci だと、絵文字を区別できない(寿司とビールの絵文字を区別できない)。 utf8mb

この記事はMySQL Casual Advent Calendar 2016の22日目です。 innodb_thread_concurrencyを最近のデフォルトである0と論理CPUコア数の2倍の48に設定した場合に観測出来た小ネタです。ベンチマークのtpsを載せていますが、1回しか取得してないので、割と誤差があると考えられるため、目安程度に見てください。 環境 CentOS 6.6(2.6.32-504.12.2.el6.x86_64) Xeon E5-2643 v2 3.5GHz x 2(2P12C24T) Memory 64GB (8GB x 8, DDR3 1866MHz) HDD SAS 300GB x 2 10k rpm(RAID1 BBU付き) FileSystem ext4 ベンチマークのデータ量はinnodb_buffer_pool_sizeに収まる量 メモリで殴るような

こんにちわ。せじまです。 すべての基本は monitoring だと考えてるので、イマドキのウェアラブルデバイスいろいろ買っていろいろ計測してるんですが、最近のデジタルガジェット面白いなぁ21世紀感パないと感心しまくってる今日このごろです。 ちょうど一年くらい前、MySQL User Conference Tokyo 2015 でMySQLやSSDとかの話 前編を、GREETech Talk #9 でMySQLやSSDとかの話 後編を、お話させていただきました。 その後どうなったの?ということで、後日談をまとめさせていただきました。(今回はMySQL成分それほどありません) 忙しい人のために三行でまとめると 以前の試みはわりとうまくいきました。SSDの大容量化がさらに進んでますし、前回の経験を活かして、HDD積んだサーバの構成変更しました。 次のステージとしては、1ラックあたり

この記事は、はてなエンジニアアドベントカレンダー2016の7日目の記事です。 昨日は id:haya14busa さんのSum/Union/Variant Type inGo and Static Check Tool ofswitch-case handlingでした。 こんにちは、ドラゴンボールのヤムチャ状態になってるichirin2501です。技術ネタとして何を書こうかと考えたのですが、 またMySQLでロックの話をする運びとなってしまいました。技術ネタついでに今年最後の記事になると思われるので、 この1年のアウトプットを振り返ってみますと、はてな・ペパポ技術大会 〜インフラ技術基盤〜 計算量と僕とWeb開発 / computational complexity and I and Web // Speaker Deck Haten Engineering Seminar

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く