ホームページ バックエンド開発 PHPチュートリアル mysql パフォーマンス クエリの使用を記録する方法 process_PHP チュートリアル

mysql パフォーマンス クエリの使用を記録する方法 process_PHP チュートリアル

Jul 21, 2016 pm 03:11 PM
c mysql コード 説明書 コピー 実験 パフォーマンス お問い合わせ 表面 記録 プロセス

すべては実験から来ています。以下の例をご覧ください:

テーブル:

コードをコピー コードは次のとおりです:

CREATE TABLE IF NOT EXISTS `foo` (
`a` int(10) unsigned NOT NULL AUTO_INCREMENT,
`b` int(10) unsigned NOT NULL 、
`c` varchar(100) NOT NULL、
主キー (`a`)、
KEY `bar` (`b`,`a`)
) ENGINE=InnoDB;

CREATE TABLE IF NOT; EXISTS `foo2 ` (
`a` int(10) unsigned NOT NULL AUTO_INCREMENT、
`b` int(10) unsigned NOT NULL、
`c` varchar(100) NOT NULL、
PRIMARY KEY (`a`)、
KEY ` bar` (`b`,`a`)

) ENGINE=MyISAM

300,000 個のデータを 2 つのテーブルに挿入しました (挿入時のパフォーマンスの違いは、InnoDB が MyISAM よりも遅いことです)

コードをコピーします コードは次のとおりです:

<?php

$host = ' 192.168.100.166 ';

$dbName = 'test';

$password = ''; 'DB 接続に失敗しました');

mysql_select_db($dbName, $db);

echo '==================InnoDB======== === ============' . "rn";

$start = microtime(true);

mysql_query("FROM foo WHERE b = 1 LIMIT 1000, 10 ");

$end = microtime(true);

echo $end - $start . "rn";

echo '==================== MyISAM=== =============' . "rn"

$start = microtime(true); SELECT SQL_NO_CACHE SQL_CALC_FOUND_ROWS; foo2 WHERE b = 1 LIMIT 1000, 10");

$end = microtime(true);

echo $end - $start . "rn";


戻り結果:




1 つのクエリで大きな違いが生まれます。 ! InnoDB と MyISAM は、その理由をすぐに分析します。

まず Explain を使用して確認してください


2 番目のクエリでクエリされる行が、InnoDB よりもはるかに少ないことを確認してください。逆に、クエリは InnoDB よりも遅くなります。 !このYはちょっと変です。

大丈夫、素晴らしいツールプロファイルもあります

具体的な使用方法については、http://dev.mysql.com/doc/refman/5.0/en/show-profile.htmlを参照してください。

簡単な使い方:

コードをコピーします

コードは次のとおりです:

Mysql>プロファイルを表示

ご覧いただけますMyISAM へのデータの送信は、InnoDB へのデータの送信よりもはるかに時間がかかります。 mysql ドキュメントを見る
http://dev.mysql.com/doc/refman/5.0/en/general-thread-states.html



データを送信中

スレッドは SELECT ステートメントの行を読み取り、処理し、クライアントにデータを送信します。この状態中に発生する操作は大量のディスク アクセス (読み取り) を実行する傾向があるため、多くの場合、この状態は存続期間全体で最も長時間実行される状態になります。指定されたクエリの。

データの送信とは、選択の結果をディスクから読み取り、結果をクライアントに返すことです。このプロセスには多数の IO 操作が含まれます。 show profile cpu for query XX を使用すると、MyISAM の CPU_system が InnnoDB よりもはるかに大きいことが確認できます。この時点で、テーブル クエリ (インデックスのみを使用して完了できるクエリとは異なります) に関して、MyISAM は InnoDB よりも遅いと結論付けることができます。

http://www.bkjia.com/PHPjc/326869.html

www.bkjia.com


本当

http://www.bkjia.com/PHPjc/326869.html

技術記事

すべては実験から生まれたものです。次の例を参照してください。 テーブル: 次のようにコードをコピーします: CREATE TABLE IF NOT EXISTS `foo` ( `a` int(10) unsigned NOT NULL AUTO_INCREMENT, `b` int(10) u .. .

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか? PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか? Jun 03, 2024 pm 08:11 PM

PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか?

PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? Jun 03, 2024 pm 12:19 PM

PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか?

PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか? PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか? Jun 02, 2024 pm 02:26 PM

PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか?

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 Dec 09, 2024 am 11:42 AM

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法

PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか? PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか? Jun 02, 2024 pm 02:13 PM

PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか?

さまざまな Java フレームワークのパフォーマンスの比較 さまざまな Java フレームワークのパフォーマンスの比較 Jun 05, 2024 pm 07:14 PM

さまざまな Java フレームワークのパフォーマンスの比較

清華大学と Zhipu AI オープンソース GLM-4: 自然言語処理に新たな革命を起こす 清華大学と Zhipu AI オープンソース GLM-4: 自然言語処理に新たな革命を起こす Jun 12, 2024 pm 08:38 PM

清華大学と Zhipu AI オープンソース GLM-4: 自然言語処理に新たな革命を起こす

PHP を使用して MySQL テーブルを作成するにはどうすればよいですか? PHP を使用して MySQL テーブルを作成するにはどうすればよいですか? Jun 04, 2024 pm 01:57 PM

PHP を使用して MySQL テーブルを作成するにはどうすればよいですか?

See all articles