
Stay up to date with the latest from the Knowledge Center. See all new Knowledge Center articles published in the last month, and re:Post’s top contributors. Amazon RDS for MySQL または Amazon Aurora MySQL 互換 DB インスタンスの CPU 使用率が高い場合のトラブルシューティングと解決方法を教えてください。 簡単な説明 複数の要因で、CPU 使用率が増加する可能性があります。要因には、ユーザーが開始したワークロードの負荷が高い場合、複数の同時クエリ実行、長時間実行されるトランザクションなどが含まれます。 DB インスタンスにおける CPU 使用率の原因を特定する方法について、次のリソースを確
こんにちは、freee Developers Advent Calendar 2021、19日目のid:shallow1729です。昨日はtdtdsさんで【マジで】サイバー演習シナリオの作り方【怖い】でした!障害訓練後に攻撃方法を解説された時はリアリティの高さに驚きました。 僕はMySQLを使っていて発生した不思議な挙動の調査の話をしようと思います。 今回問題となったクエリ 今回話題にするクエリは以下のようなシンプルなものです。 SELECT * FROM hoge WHERE id IN (...) MySQLのパラメーター次第ですが、デフォルトの設定だとこのIN句の中の値の数が数万になると適切なインデックスが用意されていてもフルスキャンが発生する事がありました。このクエリがテーブルのほとんどのレコードを網羅するような場合や高速でレコードを大量にinsertして統計情報が追いつかないケー
order byにインデックスが効かないケースの前に・・・order byにインデックスが使用されるのは、どんな時? 単独でインデックスが張られているカラムをorder byに指定したとき。 Where節内で使用したカラムとorder byで指定したカラムと合わせて複合インデックスが張られているとき(ただし、Where内では定数が指定されていること) この通りに指定してもインデックスが効かないケースがあります。 それが下記です。 ※ key1はkey_part11で構成されるインデックス、key2はkey_part21とkey_part22で構成されるインデックスとしています。 order by句に複数のインデックスを使用する SELECT * FROM t1 ORDER BY key_part11, key_part21, key_part22; この例では2つ以上のインデックスをord
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? MySQLのSELECT時にORDER BYを使用した時のソートの話 テーブルにINDEXが貼られている事が前提ですが、 例えば3テーブルを結合し、ソートをかける時などに、 全てのテーブルの結合を行った後にマスターとなるテーブルで並び替えると、 Using filesortが発生し、SELECTの実行が遅くなる場合があります。 回避方法として、カラムの表示用のマスターテーブルと、ソート用に使うマスターテーブル(別名付け)を用意し 用途を分けたSELECT文にするなどがあります。 #sample.sql SELECT tbl1.col1,
id/select_type/table どのテーブルがどの順番でアクセスされているか id 実行順番を表す 数字が同じなら複数のクエリが1つのクエリとして実行されている select_typeの詳細 SIMPLE 単一のテーブル サブクエリが絡む場合 PRIMARY 外部クエリ SUBQUERY 相関関係の無いサブクエリ DEPENDENT SUBQUERY 相関関係のあるサブクエリ UNCACHEABLE SUBQUERY 実行する度に結果が変わる可能性のあるサブクエリ DERIVED FROM句で用いられているサブクエリ table 対象テーブルの名称 partition どのpartisionテーブルを使用したか 複数にまたがる時は複数の値が表示される type レコードアクセスタイプ typeの詳細 const pk or uniqueインデックスを使用したルックアップによるアク
こんにちは、ミドルウェア開発チームの青木(@a_o_k_i_n_g)です。 今回は、サイボウズ製品のひとつである kintone に対して行った性能改善の成果を紹介したいと思います。kintone は面倒なコーディング無しに業務アプリケーションのようなものを作ることができ、様々なデータを格納したり、複雑な条件で検索したりソートしたり、アクセス権もきめ細やかに設定したりできるというサービスです。この kintone はサービスの性質上、多種多様で複雑なクエリを発行します。またデータ量も膨大で MySQL だけで計数十テラバイトのデータが存在しており、クエリの処理時間が長時間かかってしまうこともあります。 サイボウズでは kintone の性能改善に力を入れており、今回はその成果を紹介しようと思います。 はじめに kintone はテナントごとに大きく使い方が異なり、性能改善が効くケースもあれ
こんにちは、アプリケーション基盤チームの青木(@a_o_k_i_n_g)です。先日親知らずを抜歯した時、つらすぎたので MySQL の JOIN のことを考えて心の平静を保っていました。 サイボウズの製品のひとつである kintone はニーズに応じて自由に業務アプリのようなものを手軽に作ることができ、データの検索条件やソート条件も細かくカスタマイズ可能で、様々なレベルでのアクセス権も設定可能という非常に便利なツールです。 しかしその機能を支える裏側では複雑なクエリが発行され、MySQL に多大な負荷をかけています。サイボウズのクラウドには数十テラバイトに登る MySQL データがあり、数千万件オーダーのテーブルを複数 JOIN するクエリが毎秒のように実行されるという、エンジニア魂が滾る環境です。 現在サイボウズでは性能改善に力を入れており、僕もその業務に従事しています。例えば2018年
最近、寒暖の差が激しいですがみなさん体調は崩されていないでしょうか? こんにちわ。モニプラ for Facebookを担当しています高橋です。 サービス開始当初は問題なかったものの稼働が高くなりデータ量が多くなって クエリのパフォーマンスが悪化すること…よくありますよね? 今回はクエリチューニングの基本的な手順とケース別に解決方法を解説したいと思います。 クエリチューニングの手順 1.スロークエリログで問題のクエリをあぶり出す まずはどのクエリが問題なのか特定する必要があります。 アプリケーション側でクエリの実行時間を測定し自前でログを出力しておくというのも手ですが、 お手軽にMySQLの設定で一定時間以上掛かったクエリをログに出力しておくことができます。 スロー クエリ ログ(MySQL 5.1 リファレンスマニュアル) mysqldを–log-slow-queriesオプションつきで起
新しい情報を盛り込み、信頼性や正確さといった目標を重視するという前版からの方針に加えて、第3版では、MySQLの動作の仕組みに関する事実だけでなく、MySQLがそのように動作する原理を伝えたいと考えて執筆されている。そうした原理の実質的な効果を示す、より具体的なストーリーやケーススタディを盛り込んで、それらをベースとして、「MySQLの内部のアーキテクチャや処理がそうなっているとしたら、実際の使用状況で実質的にどのような効果が得られるのか」、「そうした効果はなぜ重要なのか」、「結果として、MySQLは特定のニーズにどのように適しているか、あるいは適していないか」という質問に答えている。MySQL管理者やアプリケーション開発者が求める必須の知識や手法を掘り下げて、問題や課題に対して実践的な考え方と解決の手法を示す。読者のMySQLについての理解と技術を一段高いレベルに引き上げる。改訂第3版。
In this post, I’m going to tell you about batching as a technique to help avoid N+1 queries, existing battle-tested tools like Haskell Haxl and JavaScript DataLoader, and how similar approaches can be used in any Ruby program. Here is a translated Japanese version of the blog post. What are N+1 queries?First, let’s find out what N+1 queries are and why they are called that. Imagine, we have 2 SQL
よくMySQLはサブクエリが弱いと言われるが、これは本当だろうか?半分は本当で半分は嘘である。MySQLのサブクエリだってなんでもかんでも遅いわけではない。落とし穴をしっかり避け、使いどころを間違えなければサブクエリも高速に実行できるのである。今日はMySQLがどんな風にサブクエリを実行し、どのような場合に遅いのかということについて説明しよう。 EXPLAINで実行計画を調べた際に、select_typeにはクエリの種類が表示されるのだが、代表的なサブクエリには次の3つのパターンがある。 SUBQUERY DEPENDENT SUBQUERY DERIVED 結論から言おう。遅いのは2番目、DEPENDENT SUBQUERYである。DEPENDENT SUBQUERYとはいわゆる相関サブクエリに相当するもので、サブクエリにおいて外部クエリのカラムを参照しているサブクエリのことである。そし
Published on October 11, 2016. Updated on March 5, 2020. Rails opens a new window is a powerful framework. You can write a lot of features in a short period of time. In the process you can easily write code that performs poorly. At OmbuLabs opens a new window we like to maintain Ruby on Rails applications opens a new window . In the process of maintaining them, adding features and fixing bugs, we
This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "Queries per second" – news · newspapers · books · scholar · JSTOR (August 2020) (Learn how and when to remove this message) Queries per second (QPS) is a measure of the amount of search traffic an inform
実行計画は主に以下のような方法で取得することができます。本ページではそれぞれの設定手順を記載します。 ・sqlplusでauto traceを設定する ・SQLトレースを設定する ・explain plan文を実行する ・動的パフォーマンスビューから確認する(9i~) ・statistics_level=all+dbms_xplan.display_cursorで実行計画+行ソースレベルのSQL統計を確認する(9i~) 実行計画とは 実行計画とは指示されたSQLを処理するにあたっての内部的な方法や順番です。 どのような実行計画が立てられたとしても最終的な結果は全て同じになりますがパフォーマンスは実行計画によって大きく変化する場合があります。 実行計画はオプティマイザと呼ばれるエンジンが作成していますが、オプティマイザにはCBO(コストベースオプティマイザ)、RBO(ルールベースオプティマイ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? mysqlのInnoDBではclustered indexというのを採用していて、indexを貼る際に注意が必要ということでメモ 結論から言うと InnoDBでは... Primary Key(以下PK)はできるかぎり設定して、できるかぎりauto_incrementの整数型が良い PKの検索は速いが、secondary indexやcount(*)での検索は若干遅い PKのupdateは避ける 無闇やたらとsecondary indexを付けない covering indexを狙えると速い かんたんに解説 図とか用意したかったけど気力
2013/11/20(水) SQLアンチパターン読書会 「インデックスショットガン」に参加してきました。 DoorKeeper http://sqlap.doorkeeper.jp/events/7054 以下の書籍をターゲットとした読書会なのです。 場所はいつもの湯島、株式会社アルティネットさんです。 いつも会場提供ありがとうございます。 参加者は8人かな。毎度の顔馴染みメンバーです。 今回は12章「インデックスショットガン」がターゲットでした。 DB性能と言えば避けられない話題で、大変楽しみでした。 ■アジェンダ 今回は @tonyuchi さんがスライドを作成し説明してくださいました。感謝! 書籍の本題に入る前にインデックスの仕組みについての説明があったり、実際にOracleを使って実験し考察までしていたりと、素晴らしいスライドです。 ■ディスカッション 今回もディスカッションしたい
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く