質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

4回答

7027閲覧

MySQLのパフォーマンスはどれくらいの規模感から気にすべき??

twin_bird

総合スコア230

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

1クリップ

投稿2016/10/07 18:40

1ページで400オーバーのクエリを実行しているのですが、速度は250ms程度に収まっています。
無駄なクエリを発行するのは良くないとは思いますが、レコード数が5000件程度の状態でクエリのパフォーマンス改善には本腰を入れて対応すべきでしょうか?(クエリの発行数を減らす以外の本格的?な対応等)

Webサイトの高速化を前提に、MySQLのパフォーマンスについてはどれくらいの規模感から気にすべきなのでしょうか?
環境により差があるかもしれませんが、データの件数等具体的な指標になりそうなものがあれば教えてください!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

MySQL には遅いクエリを発見する手段として、スロークエリログ機能がありmす。
my.cnf に設定することで利用できるものです。閾値を多少短く設定しておくことで、重大な事態の事前に対処することができるでしょう。

5.2.5 スロークエリーログ

レンタルサーバーなどで設定が難しい場合はプログラム側でクエリの発行ごとにベンチマーキングする以外に方法はないと思いますが、何れにしても、何らかの対処は施しておくべきかと思います。

自分の場合は、規模に関係なく、この設定はしています。
アプリケーションによって条件は変わるものですし、DBのパフォーマンスはレコード数だけが影響するわけではありませんから。

1ページで400オーバーのクエリを実行

これはさすがに...
ループの中でクエリを投げていたりするんですかねぇ...

投稿2016/10/07 18:56

編集2016/10/07 19:08
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

twin_bird

2016/10/07 19:15

回答ありがとうございます! スロークエリログ機能知りませんでした。調べてみます! 400オーバーはさすがに多いですよね。。ループでクエリ投げちゃってます。。。
退会済みユーザー

退会済みユーザー

2016/10/07 19:18

> ループでクエリ投げちゃってます それはアウト!ですね。 JOIN を覚えてください。
guest

0

ベストアンサー

「どの程度から気にすべき」というよりは、普段から継続してパフォーマンス値を取得し監視する必要があると思います。

他の方の回答にある「テーブル設計のまずさ」「ループでクエリを投げる」というのは設計や実装の問題、「スロークエリログ機能」は問題箇所の発見手法の話だと思います。

DBの話に限りませんが、パフォーマンス値については「どこまで許容できるか」を決めたうえで、日々計測し、パフォーマンス低下の兆候を捉え分析し、原因を特定して手を打つしかないと思います。
原因特定に利用できるものの一つが「スロークエリログ機能」でしょうし、原因の一つが「テーブル設計のまずさ」なのでしょう。
ただそれ以外にも当然原因は存在し得る訳で、どんなにテーブル設計がきちんとしていても、SQLがきれいでもHWリソースが足りなければパフォーマンスは出ません。
逆に設計や実装がグダグダだと、一般に言われるパフォーマンス値より低い値しか出ないこともあるでしょう。
(最初からきれいに設計、実装すべきというのは全くもってその通りではあります。後から変えるのは高くつきますから。)

投稿2016/10/08 00:25

ynakano

総合スコア1894

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

twin_bird

2016/10/08 04:21

回答ありがとうございます。 パフォーマンス低下の兆候を捉えられるように日頃のモニタリングが大切なのですね。
guest

0

末期土砂降りになって初めてデータベースのパフォーマンス・チューニングで呼ばれることが多いです。テーブル設計する最初からSQLのチューニングできるレベルの人が一人でも参加していたら開発費も運用しているハードウェアも今の半額程度ので済んだだろうに、って嘆く案件が多過ぎです。

あらかたシステムができてから呼ばれても、まともに正規化されていないテーブル設計だったり、SQLの教育をまったく受けていない人たちが書いたプログラムを直すには、最初から開発しなおした方が安上がりの場合が少なくないです。

もう少し納期、コスト意識や信頼性のあるシステムを作ろうってモラルを持って欲しいもの。

投稿2016/10/07 20:23

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

twin_bird

2016/10/08 03:58

貴重なご意見ありがとうございます!
guest

0

200msを150msとくらべても実益はありません。

気にしなければならないのは、例えば電話でお客様状況を確認するような
必要がある時、クエリーをかけて「それでは50秒ほどお待ち下さい」とはいえないでしょう。
ここは5秒程度に抑えるべきところですよね。
あとはデータベースをバンバン使うようになって遅くなってきたと思ったら
改善すればよいのではないかと思います。

投稿2016/10/07 23:26

maiko0318

総合スコア876

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

twin_bird

2016/10/08 03:59

回答ありがとうございます。 サービスのスケールを見越して適宜対応していくという形でも良いというわけですね!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問