ホームページ データベース mysql チュートリアル MySQL SQL优化:Percona优化器真的好吗

MySQL SQL优化:Percona优化器真的好吗

Jun 07, 2016 pm 04:25 PM
mysql sql 最適化 わかりました

MySQL SQL优化:Percona优化器真的好吗? 这是MySQL SQL优化分享第2篇,大家都很崇尚MySQL的一个强大分支Percona,真该跟风吗? 有些时候,还是原配靠谱,小三不一定给力。 我们先看下sar报告: 明显地,CPU %idle 非常低,粗大事了。我们的告警邮件里显示,

MySQL SQL优化:Percona优化器真的好吗?

这是MySQL SQL优化分享第2篇,大家都很崇尚MySQL的一个强大分支Percona,真该跟风吗?

有些时候,还是原配靠谱,小三不一定给力。

我们先看下sar报告:


明显地,CPU %idle 非常低,粗大事了。我们的告警邮件里显示,单条SQL执行时间长达 300秒左右。

原始SQL非常长,这里就不贴了,但要表述的一个优化技巧是,优化的第一步,就是格式化 SQL  :-)

我们看下问题SQL的问题部分:

LEFT OUTER JOIN `yy_game_info` `game` ON (`t`.`game_code`=`game`.`game_code`)
LEFT OUTER JOIN `yy_company_list` `corp` ON (`t`.`company_id`=`corp`.`company_id`)
LEFT OUTER JOIN `yy_sp_game_rel` `sp` ON (`t`.`sp_id`=`sp`.`sp_id`
                                          AND `t`.`game_code`=`sp`.`game_code`)
WHERE (((t.game_code=game.game_code)
        AND (t.company_id=corp.company_id))
       AND (corp.is_open=1))
ログイン後にコピー

可以发现,ON中的关联条件与谓词where存在重复。

虽然在MySQL中,过滤器ON和过滤器where的用法不同,但原则上我们不允许出现条件重复

同样的SQL在备库执行时效果还不错:


但我们到主库执行,发现驱动表竟然走全表扫,郁闷。


查看版本时,我们发现:

备库的版本:5.5.22-log (MySQL原版)
主库的版本:5.5.28-rel29.1-log (Percona原版)
问题SQL在该版本的Percona优化器中无法被自动解析,但在MySQL原版可以

这也引出一个问题,复制环境的主备版本最好一致,至少可以减少DBA troshoting的成本


看到了吧,小三未必盖得过原配



Good Luck!

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

MySQLおよびPHPMYADMIN:コア機能と関数 MySQLおよびPHPMYADMIN:コア機能と関数 Apr 22, 2025 am 12:12 AM

MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。

MySQL対その他のプログラミング言語:比較 MySQL対その他のプログラミング言語:比較 Apr 19, 2025 am 12:22 AM

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

MySQLの外国キーの目的を説明してください。 MySQLの外国キーの目的を説明してください。 Apr 25, 2025 am 12:17 AM

MySQLでは、外部キーの機能は、テーブル間の関係を確立し、データの一貫性と整合性を確保することです。外部キーは、参照整合性チェックとカスケード操作を通じてデータの有効性を維持します。パフォーマンスの最適化に注意し、それらを使用するときに一般的なエラーを避けてください。

mysqlとmariadbを比較対照します。 mysqlとmariadbを比較対照します。 Apr 26, 2025 am 12:08 AM

MySQLとMariaDBの主な違いは、パフォーマンス、機能、ライセンスです。1。MySQLはOracleによって開発され、Mariadbはフォークです。 2. Mariadbは、高負荷環境でパフォーマンスを向上させる可能性があります。 3.MariaDBは、より多くのストレージエンジンと機能を提供します。 4.MySQLは二重ライセンスを採用し、MariaDBは完全にオープンソースです。既存のインフラストラクチャ、パフォーマンス要件、機能要件、およびライセンスコストを選択する際に考慮する必要があります。

SQL対MySQL:2つの関係を明確にします SQL対MySQL:2つの関係を明確にします Apr 24, 2025 am 12:02 AM

SQLはリレーショナルデータベースを管理するための標準言語であり、MySQLはSQLを使用するデータベース管理システムです。 SQLは、CRUD操作を含むデータベースと対話する方法を定義しますが、MySQLはSQL標準を実装し、ストアドプロシージャやトリガーなどの追加機能を提供します。

MySQL:データベース、phpmyAdmin:管理インターフェイス MySQL:データベース、phpmyAdmin:管理インターフェイス Apr 29, 2025 am 12:44 AM

MySQLとPHPMyAdminは、次の手順を通じて効果的に管理できます。1。データベースの作成と削除:PHPMyAdminをクリックして完了します。 2。テーブルの管理:テーブルを作成し、構造を変更し、インデックスを追加できます。 3。データ操作:データの挿入、更新、削除、SQLクエリの実行をサポートします。 4。データのインポートとエクスポート:SQL、CSV、XML、およびその他の形式をサポートします。 5。最適化と監視:最適化可能なコマンドを使用してテーブルを最適化し、クエリアナライザーと監視ツールを使用してパフォーマンスの問題を解決します。

関数と正規表現を含むJavaScriptオブジェクトをデータベースに安全に保存して復元するにはどうすればよいですか? 関数と正規表現を含むJavaScriptオブジェクトをデータベースに安全に保存して復元するにはどうすればよいですか? Apr 19, 2025 pm 11:09 PM

フロントエンド開発においてJSONで機能と正規表現を安全に処理することができますが、JavaScriptが必要です...

フィールドをMySQLテーブルに追加および削除する手順 フィールドをMySQLテーブルに追加および削除する手順 Apr 29, 2025 pm 04:15 PM

MySQLでは、AlterTabletable_nameaddcolumnnew_columnvarchar(255)afterexisting_columnを使用してフィールドを追加し、andtabletable_namedopcolumncolumn_to_dropを使用してフィールドを削除します。フィールドを追加するときは、クエリのパフォーマンスとデータ構造を最適化する場所を指定する必要があります。フィールドを削除する前に、操作が不可逆的であることを確認する必要があります。オンラインDDL、バックアップデータ、テスト環境、および低負荷期間を使用したテーブル構造の変更は、パフォーマンスの最適化とベストプラクティスです。

See all articles